com.android.tools.lint.checks
Class ApiDetector
java.lang.Object
com.android.tools.lint.detector.api.Detector
com.android.tools.lint.detector.api.ResourceXmlDetector
com.android.tools.lint.checks.ApiDetector
- All Implemented Interfaces:
- com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.XmlScanner
public class ApiDetector
- extends com.android.tools.lint.detector.api.ResourceXmlDetector
- implements com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.JavaScanner
Looks for usages of APIs that are not supported in all the versions targeted
by this application (according to its minimum API requirement in the manifest).
Nested classes/interfaces inherited from class com.android.tools.lint.detector.api.Detector |
com.android.tools.lint.detector.api.Detector.BinaryResourceScanner, com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.GradleScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, com.android.tools.lint.detector.api.Detector.ResourceFolderScanner, com.android.tools.lint.detector.api.Detector.XmlScanner |
Field Summary |
static com.android.tools.lint.detector.api.Issue |
INLINED
Accessing an inlined API on older platforms |
protected ApiLookup |
mApiDatabase
|
static com.android.tools.lint.detector.api.Issue |
OVERRIDE
Accessing an unsupported API |
static com.android.tools.lint.detector.api.Issue |
UNSUPPORTED
Accessing an unsupported API |
static com.android.tools.lint.detector.api.Issue |
UNUSED
Accessing an inlined API on older platforms |
Fields inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner |
ALL |
Constructor Summary |
ApiDetector()
Constructs a new API check |
Method Summary |
void |
afterCheckProject(com.android.tools.lint.detector.api.Context context)
|
boolean |
appliesTo(com.android.resources.ResourceFolderType folderType)
|
void |
beforeCheckProject(com.android.tools.lint.detector.api.Context context)
|
void |
checkClass(com.android.tools.lint.detector.api.ClassContext context,
org.objectweb.asm.tree.ClassNode classNode)
|
lombok.ast.AstVisitor |
createJavaVisitor(com.android.tools.lint.detector.api.JavaContext context)
|
java.util.Collection<java.lang.String> |
getApplicableAttributes()
|
java.util.Collection<java.lang.String> |
getApplicableElements()
|
java.util.List<java.lang.Class<? extends lombok.ast.Node>> |
getApplicableNodeTypes()
|
protected int |
getMinSdk(com.android.tools.lint.detector.api.Context context)
|
com.android.tools.lint.detector.api.Speed |
getSpeed()
|
static boolean |
isBenignConstantUsage(lombok.ast.Node node,
java.lang.String name,
java.lang.String owner)
Checks whether the given instruction is a benign usage of a constant defined in
a later version of Android than the application's minSdkVersion . |
void |
visitAttribute(com.android.tools.lint.detector.api.XmlContext context,
org.w3c.dom.Attr attribute)
|
void |
visitElement(com.android.tools.lint.detector.api.XmlContext context,
org.w3c.dom.Element element)
|
Methods inherited from class com.android.tools.lint.detector.api.ResourceXmlDetector |
appliesTo, run |
Methods inherited from class com.android.tools.lint.detector.api.Detector |
afterCheckFile, afterCheckLibraryProject, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, checkBinaryResource, checkCall, checkFolder, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners, getApplicableFiles, getApplicableMethodNames, getSpeed, visitBuildScript, visitDocument, visitElementAfter, visitMethod, visitResourceReference |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.android.tools.lint.detector.api.Detector.ClassScanner |
checkCall, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners |
Methods inherited from interface com.android.tools.lint.detector.api.Detector.JavaScanner |
appliesToResourceRefs, getApplicableMethodNames, visitMethod, visitResourceReference |
Methods inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner |
visitDocument, visitElementAfter |
UNSUPPORTED
public static final com.android.tools.lint.detector.api.Issue UNSUPPORTED
- Accessing an unsupported API
INLINED
public static final com.android.tools.lint.detector.api.Issue INLINED
- Accessing an inlined API on older platforms
OVERRIDE
public static final com.android.tools.lint.detector.api.Issue OVERRIDE
- Accessing an unsupported API
UNUSED
public static final com.android.tools.lint.detector.api.Issue UNUSED
- Accessing an inlined API on older platforms
mApiDatabase
protected ApiLookup mApiDatabase
ApiDetector
public ApiDetector()
- Constructs a new API check
getSpeed
@NonNull
public com.android.tools.lint.detector.api.Speed getSpeed()
- Overrides:
getSpeed
in class com.android.tools.lint.detector.api.Detector
beforeCheckProject
public void beforeCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
- Overrides:
beforeCheckProject
in class com.android.tools.lint.detector.api.Detector
appliesTo
public boolean appliesTo(@NonNull
com.android.resources.ResourceFolderType folderType)
- Overrides:
appliesTo
in class com.android.tools.lint.detector.api.ResourceXmlDetector
getApplicableElements
public java.util.Collection<java.lang.String> getApplicableElements()
- Specified by:
getApplicableElements
in interface com.android.tools.lint.detector.api.Detector.XmlScanner
- Overrides:
getApplicableElements
in class com.android.tools.lint.detector.api.Detector
getApplicableAttributes
public java.util.Collection<java.lang.String> getApplicableAttributes()
- Specified by:
getApplicableAttributes
in interface com.android.tools.lint.detector.api.Detector.XmlScanner
- Overrides:
getApplicableAttributes
in class com.android.tools.lint.detector.api.Detector
visitAttribute
public void visitAttribute(@NonNull
com.android.tools.lint.detector.api.XmlContext context,
@NonNull
org.w3c.dom.Attr attribute)
- Specified by:
visitAttribute
in interface com.android.tools.lint.detector.api.Detector.XmlScanner
- Overrides:
visitAttribute
in class com.android.tools.lint.detector.api.Detector
visitElement
public void visitElement(@NonNull
com.android.tools.lint.detector.api.XmlContext context,
@NonNull
org.w3c.dom.Element element)
- Specified by:
visitElement
in interface com.android.tools.lint.detector.api.Detector.XmlScanner
- Overrides:
visitElement
in class com.android.tools.lint.detector.api.Detector
getMinSdk
protected int getMinSdk(com.android.tools.lint.detector.api.Context context)
checkClass
public void checkClass(@NonNull
com.android.tools.lint.detector.api.ClassContext context,
@NonNull
org.objectweb.asm.tree.ClassNode classNode)
- Specified by:
checkClass
in interface com.android.tools.lint.detector.api.Detector.ClassScanner
- Overrides:
checkClass
in class com.android.tools.lint.detector.api.Detector
afterCheckProject
public void afterCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
- Overrides:
afterCheckProject
in class com.android.tools.lint.detector.api.Detector
createJavaVisitor
@Nullable
public lombok.ast.AstVisitor createJavaVisitor(@NonNull
com.android.tools.lint.detector.api.JavaContext context)
- Specified by:
createJavaVisitor
in interface com.android.tools.lint.detector.api.Detector.JavaScanner
- Overrides:
createJavaVisitor
in class com.android.tools.lint.detector.api.Detector
getApplicableNodeTypes
@Nullable
public java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
- Specified by:
getApplicableNodeTypes
in interface com.android.tools.lint.detector.api.Detector.JavaScanner
- Overrides:
getApplicableNodeTypes
in class com.android.tools.lint.detector.api.Detector
isBenignConstantUsage
public static boolean isBenignConstantUsage(@Nullable
lombok.ast.Node node,
@NonNull
java.lang.String name,
@NonNull
java.lang.String owner)
- Checks whether the given instruction is a benign usage of a constant defined in
a later version of Android than the application's
minSdkVersion
.
- Parameters:
node
- the instruction to checkname
- the name of the constantowner
- the field owner
- Returns:
- true if the given usage is safe on older versions than the introduction
level of the constant