@Beta
public abstract class Detector
extends java.lang.Object
Issue
.
Detectors will be called in a predefined order:
LintDriver.requestRepeat(com.android.tools.lint.detector.api.Detector, java.util.EnumSet<com.android.tools.lint.detector.api.Scope>)
.
NOTE: This is not a public or final API; if you rely on this be prepared
to adjust your code for the next tools release.Modifier and Type | Class and Description |
---|---|
static interface |
Detector.BinaryResourceScanner
Specialized interface for detectors that scan binary resource files
(typically bitmaps but also files in res/raw)
|
static interface |
Detector.ClassScanner
Specialized interface for detectors that scan Java class files
|
static interface |
Detector.GradleScanner
Specialized interface for detectors that scan Gradle files
|
static interface |
Detector.JavaPsiScanner
Deprecated.
Use
Detector.UastScanner instead |
static interface |
Detector.JavaScanner
Deprecated.
Use
Detector.UastScanner instead |
static interface |
Detector.OtherFileScanner
Specialized interface for detectors that scan other files
|
static interface |
Detector.ResourceFolderScanner
Specialized interface for detectors that scan resource folders (the folder directory
itself, not the individual files within it
|
static interface |
Detector.UastScanner
Interface to be implemented by lint detectors that want to analyze
Java source files (or other similar source files, such as Kotlin files.)
|
static interface |
Detector.XmlScanner
Specialized interface for detectors that scan XML files
|
Constructor and Description |
---|
Detector() |
Modifier and Type | Method and Description |
---|---|
void |
afterCheckFile(Context context)
Analysis has just been finished for a specific file, perform any cleanup
or report issues found
|
void |
afterCheckLibraryProject(Context context)
Analysis has just been finished for the given library project, perform any
cleanup or report issues that require library-project-wide analysis.
|
void |
afterCheckProject(Context context)
Analysis has just been finished for the whole project, perform any
cleanup or report issues that require project-wide analysis.
|
java.util.List<java.lang.String> |
applicableSuperClasses() |
boolean |
appliesTo(Context context,
java.io.File file)
Deprecated.
|
boolean |
appliesTo(com.android.resources.ResourceFolderType folderType) |
boolean |
appliesToResourceRefs() |
void |
beforeCheckFile(Context context)
Analysis is about to be performed on a specific file, perform any setup
steps.
|
void |
beforeCheckLibraryProject(Context context)
Analysis is about to begin for the given library project, perform any setup steps.
|
void |
beforeCheckProject(Context context)
Analysis is about to begin, perform any setup steps.
|
void |
checkBinaryResource(ResourceContext context) |
void |
checkCall(ClassContext context,
org.objectweb.asm.tree.ClassNode classNode,
org.objectweb.asm.tree.MethodNode method,
org.objectweb.asm.tree.MethodInsnNode call) |
void |
checkClass(ClassContext context,
org.objectweb.asm.tree.ClassNode classNode) |
void |
checkClass(JavaContext context,
lombok.ast.ClassDeclaration declaration,
lombok.ast.Node node,
JavaParser.ResolvedClass resolvedClass)
Deprecated.
|
void |
checkClass(JavaContext context,
com.intellij.psi.PsiClass declaration) |
void |
checkFolder(ResourceContext context,
java.lang.String folderName) |
void |
checkInstruction(ClassContext context,
org.objectweb.asm.tree.ClassNode classNode,
org.objectweb.asm.tree.MethodNode method,
org.objectweb.asm.tree.AbstractInsnNode instruction) |
lombok.ast.AstVisitor |
createJavaVisitor(JavaContext context)
Deprecated.
|
com.intellij.psi.JavaElementVisitor |
createPsiVisitor(JavaContext context) |
UElementHandler |
createUastHandler(JavaContext context) |
int[] |
getApplicableAsmNodeTypes() |
java.util.Collection<java.lang.String> |
getApplicableAttributes() |
java.util.List<java.lang.String> |
getApplicableCallNames() |
java.util.List<java.lang.String> |
getApplicableCallOwners() |
java.util.List<java.lang.String> |
getApplicableConstructorTypes() |
java.util.Collection<java.lang.String> |
getApplicableElements() |
java.util.EnumSet<Scope> |
getApplicableFiles() |
java.util.List<java.lang.String> |
getApplicableMethodNames() |
java.util.List<java.lang.Class<? extends lombok.ast.Node>> |
getApplicableNodeTypes()
Deprecated.
|
java.util.List<java.lang.Class<? extends com.intellij.psi.PsiElement>> |
getApplicablePsiTypes() |
java.util.List<java.lang.String> |
getApplicableReferenceNames() |
java.util.List<java.lang.Class<? extends org.jetbrains.uast.UElement>> |
getApplicableUastTypes() |
Speed |
getSpeed()
Deprecated.
|
Speed |
getSpeed(Issue issue)
Deprecated.
|
void |
run(Context context)
Runs the detector.
|
void |
visitAttribute(XmlContext context,
org.w3c.dom.Attr attribute) |
void |
visitBuildScript(Context context,
java.util.Map<java.lang.String,java.lang.Object> sharedData) |
void |
visitClass(JavaContext context,
org.jetbrains.uast.UClass declaration) |
void |
visitClass(JavaContext context,
org.jetbrains.uast.ULambdaExpression declaration) |
void |
visitConstructor(JavaContext context,
lombok.ast.AstVisitor visitor,
lombok.ast.ConstructorInvocation node,
JavaParser.ResolvedMethod constructor)
Deprecated.
|
void |
visitConstructor(JavaContext context,
com.intellij.psi.JavaElementVisitor visitor,
com.intellij.psi.PsiNewExpression node,
com.intellij.psi.PsiMethod constructor) |
void |
visitConstructor(JavaContext context,
org.jetbrains.uast.UCallExpression node,
com.intellij.psi.PsiMethod constructor) |
void |
visitDocument(XmlContext context,
org.w3c.dom.Document document) |
void |
visitElement(XmlContext context,
org.w3c.dom.Element element) |
void |
visitElementAfter(XmlContext context,
org.w3c.dom.Element element) |
void |
visitMethod(JavaContext context,
lombok.ast.AstVisitor visitor,
lombok.ast.MethodInvocation node)
Deprecated.
|
void |
visitMethod(JavaContext context,
com.intellij.psi.JavaElementVisitor visitor,
com.intellij.psi.PsiMethodCallExpression call,
com.intellij.psi.PsiMethod method) |
void |
visitMethod(JavaContext context,
org.jetbrains.uast.UCallExpression node,
com.intellij.psi.PsiMethod method) |
void |
visitReference(JavaContext context,
com.intellij.psi.JavaElementVisitor visitor,
com.intellij.psi.PsiJavaCodeReferenceElement reference,
com.intellij.psi.PsiElement referenced) |
void |
visitReference(JavaContext context,
org.jetbrains.uast.UReferenceExpression reference,
com.intellij.psi.PsiElement referenced) |
void |
visitResourceReference(JavaContext context,
lombok.ast.AstVisitor visitor,
lombok.ast.Node node,
java.lang.String type,
java.lang.String name,
boolean isFramework)
Deprecated.
|
void |
visitResourceReference(JavaContext context,
com.intellij.psi.JavaElementVisitor visitor,
com.intellij.psi.PsiElement node,
com.android.resources.ResourceType type,
java.lang.String name,
boolean isFramework) |
void |
visitResourceReference(JavaContext context,
org.jetbrains.uast.UElement node,
com.android.resources.ResourceType type,
java.lang.String name,
boolean isFramework) |
public void run(@NonNull Context context)
Detector.XmlScanner
and Detector.JavaScanner
, where
there are specialized analysis methods instead such as
Detector.XmlScanner.visitElement(XmlContext, Element)
.context
- the context describing the work to be done@Deprecated public boolean appliesTo(@NonNull Context context, @NonNull java.io.File file)
context
- the context to checkfile
- the file in the context to checkpublic void beforeCheckProject(@NonNull Context context)
context
- the context for the check referencing the project, lint
client, etcpublic void afterCheckProject(@NonNull Context context)
context
- the context for the check referencing the project, lint
client, etcpublic void beforeCheckLibraryProject(@NonNull Context context)
context
- the context for the check referencing the project, lint
client, etcpublic void afterCheckLibraryProject(@NonNull Context context)
context
- the context for the check referencing the project, lint
client, etcpublic void beforeCheckFile(@NonNull Context context)
Note: When this method is called at the beginning of checking an XML
file, the context is guaranteed to be an instance of XmlContext
,
and similarly for a Java source file, the context will be a
JavaContext
and so on.
context
- the context for the check referencing the file to be
checked, the project, etc.public void afterCheckFile(@NonNull Context context)
Note: When this method is called at the end of checking an XML
file, the context is guaranteed to be an instance of XmlContext
,
and similarly for a Java source file, the context will be a
JavaContext
and so on.
context
- the context for the check referencing the file to be
checked, the project, etc.@NonNull @Deprecated public Speed getSpeed()
@NonNull @Deprecated public Speed getSpeed(@NonNull Issue issue)
getSpeed()
instead.issue
- the issue to look up the analysis speed forpublic void visitDocument(@NonNull XmlContext context, @NonNull org.w3c.dom.Document document)
public void visitElement(@NonNull XmlContext context, @NonNull org.w3c.dom.Element element)
public void visitElementAfter(@NonNull XmlContext context, @NonNull org.w3c.dom.Element element)
public void visitAttribute(@NonNull XmlContext context, @NonNull org.w3c.dom.Attr attribute)
@Nullable public java.util.Collection<java.lang.String> getApplicableElements()
@Nullable public java.util.Collection<java.lang.String> getApplicableAttributes()
@Deprecated @Nullable public lombok.ast.AstVisitor createJavaVisitor(@NonNull JavaContext context)
@Deprecated @Nullable public java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
@Deprecated public void visitMethod(@NonNull JavaContext context, @Nullable lombok.ast.AstVisitor visitor, @NonNull lombok.ast.MethodInvocation node)
@Deprecated public void visitResourceReference(@NonNull JavaContext context, @Nullable lombok.ast.AstVisitor visitor, @NonNull lombok.ast.Node node, @NonNull java.lang.String type, @NonNull java.lang.String name, boolean isFramework)
@Deprecated public void checkClass(@NonNull JavaContext context, @Nullable lombok.ast.ClassDeclaration declaration, @NonNull lombok.ast.Node node, @NonNull JavaParser.ResolvedClass resolvedClass)
@Deprecated public void visitConstructor(@NonNull JavaContext context, @Nullable lombok.ast.AstVisitor visitor, @NonNull lombok.ast.ConstructorInvocation node, @NonNull JavaParser.ResolvedMethod constructor)
public void checkClass(@NonNull ClassContext context, @NonNull org.objectweb.asm.tree.ClassNode classNode)
@Nullable public java.util.List<java.lang.String> getApplicableCallNames()
@Nullable public java.util.List<java.lang.String> getApplicableCallOwners()
public void checkCall(@NonNull ClassContext context, @NonNull org.objectweb.asm.tree.ClassNode classNode, @NonNull org.objectweb.asm.tree.MethodNode method, @NonNull org.objectweb.asm.tree.MethodInsnNode call)
@Nullable public int[] getApplicableAsmNodeTypes()
public void checkInstruction(@NonNull ClassContext context, @NonNull org.objectweb.asm.tree.ClassNode classNode, @NonNull org.objectweb.asm.tree.MethodNode method, @NonNull org.objectweb.asm.tree.AbstractInsnNode instruction)
@NonNull public java.util.EnumSet<Scope> getApplicableFiles()
public void visitBuildScript(@NonNull Context context, java.util.Map<java.lang.String,java.lang.Object> sharedData)
public void checkFolder(@NonNull ResourceContext context, @NonNull java.lang.String folderName)
public void checkBinaryResource(@NonNull ResourceContext context)
public boolean appliesTo(@NonNull com.android.resources.ResourceFolderType folderType)
@Nullable public java.util.List<java.lang.String> getApplicableMethodNames()
@Nullable public java.util.List<java.lang.String> getApplicableConstructorTypes()
public boolean appliesToResourceRefs()
@Nullable public java.util.List<java.lang.String> applicableSuperClasses()
public void visitMethod(@NonNull JavaContext context, @Nullable com.intellij.psi.JavaElementVisitor visitor, @NonNull com.intellij.psi.PsiMethodCallExpression call, @NonNull com.intellij.psi.PsiMethod method)
public void visitConstructor(@NonNull JavaContext context, @Nullable com.intellij.psi.JavaElementVisitor visitor, @NonNull com.intellij.psi.PsiNewExpression node, @NonNull com.intellij.psi.PsiMethod constructor)
public void visitResourceReference(@NonNull JavaContext context, @Nullable com.intellij.psi.JavaElementVisitor visitor, @NonNull com.intellij.psi.PsiElement node, @NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, boolean isFramework)
public void checkClass(@NonNull JavaContext context, @NonNull com.intellij.psi.PsiClass declaration)
@Nullable public com.intellij.psi.JavaElementVisitor createPsiVisitor(@NonNull JavaContext context)
@Nullable public java.util.List<java.lang.Class<? extends com.intellij.psi.PsiElement>> getApplicablePsiTypes()
@Nullable public java.util.List<java.lang.String> getApplicableReferenceNames()
public void visitReference(@NonNull JavaContext context, @Nullable com.intellij.psi.JavaElementVisitor visitor, @NonNull com.intellij.psi.PsiJavaCodeReferenceElement reference, @NonNull com.intellij.psi.PsiElement referenced)
public void visitClass(@NonNull JavaContext context, @NonNull org.jetbrains.uast.UClass declaration)
public void visitClass(@NonNull JavaContext context, @NonNull org.jetbrains.uast.ULambdaExpression declaration)
public void visitReference(@NonNull JavaContext context, @NonNull org.jetbrains.uast.UReferenceExpression reference, @NonNull com.intellij.psi.PsiElement referenced)
public void visitConstructor(@NonNull JavaContext context, @NonNull org.jetbrains.uast.UCallExpression node, @NonNull com.intellij.psi.PsiMethod constructor)
public void visitMethod(@NonNull JavaContext context, @NonNull org.jetbrains.uast.UCallExpression node, @NonNull com.intellij.psi.PsiMethod method)
@Nullable public UElementHandler createUastHandler(@NonNull JavaContext context)
@Nullable public java.util.List<java.lang.Class<? extends org.jetbrains.uast.UElement>> getApplicableUastTypes()
public void visitResourceReference(@NonNull JavaContext context, @NonNull org.jetbrains.uast.UElement node, @NonNull com.android.resources.ResourceType type, @NonNull java.lang.String name, boolean isFramework)