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.JavaPsiScanner
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.JavaPsiScanner, 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| Modifier and Type | Field and Description |
|---|---|
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
Method conflicts with new inherited method
|
static java.lang.String |
REQUIRES_API_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
UNSUPPORTED
Accessing an unsupported API
|
static com.android.tools.lint.detector.api.Issue |
UNUSED
Attribute unused on older versions
|
| Constructor and Description |
|---|
ApiDetector()
Constructs a new API check
|
| Modifier and Type | Method and Description |
|---|---|
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) |
static int |
codeNameToApi(java.lang.String text) |
com.intellij.psi.JavaElementVisitor |
createPsiVisitor(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 com.intellij.psi.PsiElement>> |
getApplicablePsiTypes() |
protected int |
getMinSdk(com.android.tools.lint.detector.api.Context context) |
static com.intellij.psi.PsiStatement |
getPreviousStatement(com.intellij.psi.PsiElement element) |
static int |
getRequiredVersion(com.android.tools.lint.detector.api.Issue issue,
java.lang.String errorMessage,
com.android.tools.lint.detector.api.TextFormat format) |
static int |
getTargetApi(com.intellij.psi.PsiElement scope) |
static int |
getTargetApi(com.intellij.psi.PsiModifierList modifierList)
Returns the API level for the given AST node if specified with
an
@TargetApi annotation. |
static boolean |
isBenignConstantUsage(com.intellij.psi.PsiElement 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.
|
static boolean |
isPrecededByVersionCheckExit(com.intellij.psi.PsiElement element,
int api) |
static boolean |
isWithinVersionCheckConditional(com.intellij.psi.PsiElement element,
int api) |
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) |
afterCheckFile, afterCheckLibraryProject, afterCheckProject, applicableSuperClasses, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, checkBinaryResource, checkCall, checkClass, checkClass, checkFolder, checkInstruction, createJavaVisitor, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableFiles, getApplicableMethodNames, getApplicableNodeTypes, getApplicableReferenceNames, getSpeed, getSpeed, visitBuildScript, visitConstructor, visitConstructor, visitDocument, visitElementAfter, visitMethod, visitMethod, visitReference, visitResourceReference, visitResourceReferenceclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcheckCall, checkInstruction, getApplicableAsmNodeTypes, getApplicableCallNames, getApplicableCallOwnersapplicableSuperClasses, appliesToResourceRefs, checkClass, getApplicableConstructorTypes, getApplicableMethodNames, getApplicableReferenceNames, visitConstructor, visitMethod, visitReference, visitResourceReferencepublic static final java.lang.String REQUIRES_API_ANNOTATION
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
public void beforeCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
beforeCheckProject in class com.android.tools.lint.detector.api.Detectorpublic 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.Detectorpublic 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.Detectorpublic 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@Nullable
public com.intellij.psi.JavaElementVisitor createPsiVisitor(@NonNull
com.android.tools.lint.detector.api.JavaContext context)
createPsiVisitor in interface com.android.tools.lint.detector.api.Detector.JavaPsiScannercreatePsiVisitor in class com.android.tools.lint.detector.api.Detectorpublic java.util.List<java.lang.Class<? extends com.intellij.psi.PsiElement>> getApplicablePsiTypes()
getApplicablePsiTypes in interface com.android.tools.lint.detector.api.Detector.JavaPsiScannergetApplicablePsiTypes in class com.android.tools.lint.detector.api.Detectorpublic static boolean isBenignConstantUsage(@Nullable
com.intellij.psi.PsiElement node,
@NonNull
java.lang.String name,
@NonNull
java.lang.String owner)
minSdkVersion.node - the instruction to checkname - the name of the constantowner - the field ownerpublic static int getTargetApi(@Nullable
com.intellij.psi.PsiElement scope)
public static int getTargetApi(@Nullable
com.intellij.psi.PsiModifierList modifierList)
@TargetApi annotation.modifierList - the modifier list to checkpublic static int codeNameToApi(@NonNull
java.lang.String text)
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)
public static boolean isPrecededByVersionCheckExit(com.intellij.psi.PsiElement element,
int api)
@Nullable public static com.intellij.psi.PsiStatement getPreviousStatement(com.intellij.psi.PsiElement element)
public static boolean isWithinVersionCheckConditional(com.intellij.psi.PsiElement element,
int api)