package me.ycdev.android.arch.lint;
import com.android.tools.lint.detector.api.Category;
import com.android.tools.lint.detector.api.Implementation;
import com.android.tools.lint.detector.api.Issue;
import com.android.tools.lint.detector.api.JavaContext;
import com.android.tools.lint.detector.api.Scope;
import com.android.tools.lint.detector.api.Severity;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import lombok.ast.MethodInvocation;
import me.ycdev.android.arch.lint.base.WrapperDetectorBase;
public class MyToastHelperDetector extends WrapperDetectorBase {
public static final Issue ISSUE = Issue.create(
"MyToastHelper",
"ToastHelper should be used.",
"Please use the wrapper class 'ToastHelper' to show toast."
+ " So that we can customize and unify the UI in future.",
Category.CORRECTNESS, 5, Severity.ERROR,
new Implementation(MyToastHelperDetector.class, Scope.JAVA_FILE_SCOPE));
/** Constructs a new {@link MyToastHelperDetector} check */
public MyToastHelperDetector() {
super();
}
@Override
protected String getWrapperClassName() {
return "me.ycdev.android.arch.wrapper.ToastHelper";
}
@Override
protected String[] getTargetClassNames() {
return new String[] {
"android.widget.Toast"
};
}
@Override
public List<String> getApplicableMethodNames() {
return Collections.singletonList("makeText");
}
@Override
protected void reportViolation(JavaContext context, MethodInvocation node) {
context.report(ISSUE, node, context.getLocation(node),
"Please use the wrapper class 'ToastHelper'.");
}
}