|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Objectcom.android.tools.lint.detector.api.Detector
com.android.tools.lint.detector.api.ResourceXmlDetector
com.android.tools.lint.checks.ApiDetector
public class ApiDetector
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 Class Summary |
|---|
| 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 java.lang.String |
ENUM_SWITCH_PREFIX
|
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)
|
static int |
getRequiredVersion(com.android.tools.lint.detector.api.Issue issue,
java.lang.String errorMessage,
com.android.tools.lint.detector.api.TextFormat format)
|
com.android.tools.lint.detector.api.Speed |
getSpeed()
|
static int |
getTargetApi(lombok.ast.Modifiers modifiers)
Returns the API level for the given AST node if specified with an @TargetApi annotation. |
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. |
static boolean |
isBenignUnusedAttribute(java.lang.String name)
Is the given attribute a "benign" unused attribute, one we probably don't need to flag to the user as not applicable on all versions? These are typically attributes which add some nice platform behavior when available, but that are not critical and developers would not typically need to be aware of to try to implement workarounds on older platforms. |
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, applicableSuperClasses, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, checkBinaryResource, checkCall, checkClass, checkFolder, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableFiles, getApplicableMethodNames, getSpeed, visitBuildScript, visitConstructor, 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 |
|---|
applicableSuperClasses, appliesToResourceRefs, checkClass, getApplicableConstructorTypes, getApplicableMethodNames, visitConstructor, visitMethod, visitResourceReference |
| Methods inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner |
|---|
visitDocument, visitElementAfter |
| Field Detail |
|---|
public static final com.android.tools.lint.detector.api.Issue UNSUPPORTED
public static final com.android.tools.lint.detector.api.Issue INLINED
public static final com.android.tools.lint.detector.api.Issue OVERRIDE
public static final com.android.tools.lint.detector.api.Issue UNUSED
public static final java.lang.String ENUM_SWITCH_PREFIX
protected ApiLookup mApiDatabase
| Constructor Detail |
|---|
public ApiDetector()
| Method Detail |
|---|
@NonNull public com.android.tools.lint.detector.api.Speed getSpeed()
getSpeed in class com.android.tools.lint.detector.api.Detector
public void beforeCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
beforeCheckProject in class com.android.tools.lint.detector.api.Detector
public boolean appliesTo(@NonNull
com.android.resources.ResourceFolderType folderType)
appliesTo in class com.android.tools.lint.detector.api.ResourceXmlDetectorpublic java.util.Collection<java.lang.String> getApplicableElements()
getApplicableElements in interface com.android.tools.lint.detector.api.Detector.XmlScannergetApplicableElements in class com.android.tools.lint.detector.api.Detectorpublic java.util.Collection<java.lang.String> getApplicableAttributes()
getApplicableAttributes in interface com.android.tools.lint.detector.api.Detector.XmlScannergetApplicableAttributes in class com.android.tools.lint.detector.api.Detector
public void visitAttribute(@NonNull
com.android.tools.lint.detector.api.XmlContext context,
@NonNull
org.w3c.dom.Attr attribute)
visitAttribute in interface com.android.tools.lint.detector.api.Detector.XmlScannervisitAttribute in class com.android.tools.lint.detector.api.Detector
public static boolean isBenignUnusedAttribute(@NonNull
java.lang.String name)
public void visitElement(@NonNull
com.android.tools.lint.detector.api.XmlContext context,
@NonNull
org.w3c.dom.Element element)
visitElement in interface com.android.tools.lint.detector.api.Detector.XmlScannervisitElement in class com.android.tools.lint.detector.api.Detectorprotected int getMinSdk(com.android.tools.lint.detector.api.Context context)
public void checkClass(@NonNull
com.android.tools.lint.detector.api.ClassContext context,
@NonNull
org.objectweb.asm.tree.ClassNode classNode)
checkClass in interface com.android.tools.lint.detector.api.Detector.ClassScannercheckClass in class com.android.tools.lint.detector.api.Detector
public void afterCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
afterCheckProject in class com.android.tools.lint.detector.api.Detector
@Nullable
public lombok.ast.AstVisitor createJavaVisitor(@NonNull
com.android.tools.lint.detector.api.JavaContext context)
createJavaVisitor in interface com.android.tools.lint.detector.api.Detector.JavaScannercreateJavaVisitor in class com.android.tools.lint.detector.api.Detector@Nullable public java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
getApplicableNodeTypes in interface com.android.tools.lint.detector.api.Detector.JavaScannergetApplicableNodeTypes in class com.android.tools.lint.detector.api.Detector
public static boolean isBenignConstantUsage(@Nullable
lombok.ast.Node node,
@NonNull
java.lang.String name,
@NonNull
java.lang.String owner)
minSdkVersion.
node - the instruction to checkname - the name of the constantowner - the field owner
public static int getTargetApi(@Nullable
lombok.ast.Modifiers modifiers)
@TargetApi annotation.
modifiers - the modifier to check
public static int getRequiredVersion(@NonNull
com.android.tools.lint.detector.api.Issue issue,
@NonNull
java.lang.String errorMessage,
@NonNull
com.android.tools.lint.detector.api.TextFormat format)
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||