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.Collections;
import java.util.HashSet;
import java.util.List;
import lombok.ast.Node;
import me.ycdev.android.arch.lint.base.InheritDetectorBase;
public class MyBaseActivityDetector extends InheritDetectorBase {
public static final Issue ISSUE = Issue.create(
"MyBaseActivity",
"Base classes for Activity should be used.",
"Please use the base classes for Activity."
+ " So that we can do some unified behaviors.",
Category.CORRECTNESS, 5, Severity.ERROR,
new Implementation(MyBaseActivityDetector.class, Scope.JAVA_FILE_SCOPE));
@Override
protected HashSet<String> getWrapperClasses() {
HashSet<String> sets = new HashSet<>();
sets.add("me.ycdev.android.arch.activity.BaseActivity");
sets.add("me.ycdev.android.arch.activity.PreferenceBaseActivity");
sets.add("me.ycdev.android.arch.activity.AppCompatBaseActivity");
return sets;
}
@Override
public List<String> applicableSuperClasses() {
return Collections.singletonList("android.app.Activity");
}
@Override
protected void reportViolation(JavaContext context, Node node) {
context.report(ISSUE, node, context.getLocation(node),
"Please use the base classes for Activity.");
}
}