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.ClassScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, 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 |
| 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()
|
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, checkCall, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners, getApplicableFiles, getApplicableMethodNames, 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
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 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