public class SupportAnnotationDetector
extends com.android.tools.lint.detector.api.Detector
implements com.android.tools.lint.detector.api.Detector.UastScanner
@CheckReturn it makes sure the return value is used,
for ColorInt it ensures that a proper color integer is passed in, etc.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.UastScanner, com.android.tools.lint.detector.api.Detector.XmlScanner| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
ANY_THREAD_ANNOTATION |
static java.lang.String |
ATTR_ALL_OF |
static java.lang.String |
ATTR_ANY_OF |
static java.lang.String |
ATTR_CONDITIONAL |
static java.lang.String |
ATTR_FROM |
static java.lang.String |
ATTR_FROM_INCLUSIVE |
static java.lang.String |
ATTR_MAX |
static java.lang.String |
ATTR_MIN |
static java.lang.String |
ATTR_MULTIPLE |
static java.lang.String |
ATTR_OTHERWISE |
static java.lang.String |
ATTR_SUGGEST |
static java.lang.String |
ATTR_TO |
static java.lang.String |
ATTR_TO_INCLUSIVE |
static java.lang.String |
BINDER_THREAD_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
CHECK_PERMISSION
Failing to enforce security by just calling check permission
|
static com.android.tools.lint.detector.api.Issue |
CHECK_RESULT
Method result should be used
|
static java.lang.String |
CHECK_RESULT_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
COLOR_USAGE
Attempting to set a resource id as a color
|
static java.lang.String |
FLOAT_RANGE_ANNOTATION |
static java.lang.String |
GMS_HIDE_ANNOTATION |
static java.lang.String |
HALF_FLOAT_ANNOTATION |
static com.android.tools.lint.detector.api.Implementation |
IMPLEMENTATION |
static java.lang.String |
INT_RANGE_ANNOTATION |
static java.lang.String |
MAIN_THREAD_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
MISSING_PERMISSION
Method result should be used
|
static java.lang.String |
PERMISSION_ANNOTATION |
static java.lang.String |
PERMISSION_ANNOTATION_READ |
static java.lang.String |
PERMISSION_ANNOTATION_WRITE |
static com.android.tools.lint.detector.api.Issue |
RANGE
Method result should be used
|
static com.android.tools.lint.detector.api.Issue |
RESOURCE_TYPE
Attempting to set a resource id as a color
|
static java.lang.String |
RESTRICT_TO_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
RESTRICTED
Using a restricted API
|
static java.lang.String |
SECURITY_EXCEPTION |
static java.lang.String |
SIZE_ANNOTATION |
static com.android.tools.lint.detector.api.Issue |
TEST_VISIBILITY
Using an intended-for-tests API
|
static com.android.tools.lint.detector.api.Issue |
THREAD
Passing the wrong constant to an int or String method
|
static java.lang.String |
THREAD_SUFFIX |
static com.android.tools.lint.detector.api.Issue |
TYPE_DEF
Passing the wrong constant to an int or String method
|
static java.lang.String |
UI_THREAD_ANNOTATION |
static java.lang.String |
VISIBLE_FOR_TESTING_ANNOTATION |
static java.lang.String |
WORKER_THREAD_ANNOTATION |
| Constructor and Description |
|---|
SupportAnnotationDetector()
Constructs a new
SupportAnnotationDetector check |
| Modifier and Type | Method and Description |
|---|---|
static void |
checkRestrictTo(com.android.tools.lint.detector.api.JavaContext context,
org.jetbrains.uast.UElement node,
com.intellij.psi.PsiMethod method,
org.jetbrains.uast.UAnnotation annotation,
java.util.List<org.jetbrains.uast.UAnnotation> allMethodAnnotations,
java.util.List<org.jetbrains.uast.UAnnotation> allClassAnnotations) |
static void |
checkVisibleForTesting(com.android.tools.lint.detector.api.JavaContext context,
org.jetbrains.uast.UElement node,
com.intellij.psi.PsiMethod method,
org.jetbrains.uast.UAnnotation annotation,
java.util.List<org.jetbrains.uast.UAnnotation> allMethodAnnotations,
java.util.List<org.jetbrains.uast.UAnnotation> allClassAnnotations) |
static boolean |
containsAnnotation(java.util.List<org.jetbrains.uast.UAnnotation> list,
java.lang.String qualifiedName) |
static boolean |
containsAnnotation(java.util.List<org.jetbrains.uast.UAnnotation> list,
org.jetbrains.uast.UAnnotation annotation) |
static boolean |
containsRestrictionAnnotation(java.util.List<org.jetbrains.uast.UAnnotation> list) |
static boolean |
containsThreadingAnnotation(java.util.List<org.jetbrains.uast.UAnnotation> array) |
com.android.tools.lint.client.api.UElementHandler |
createUastHandler(com.android.tools.lint.detector.api.JavaContext context) |
static java.lang.String |
describeThread(java.lang.String annotation) |
static java.lang.String |
describeThreads(java.util.List<java.lang.String> annotations,
boolean any) |
java.util.List<java.lang.Class<? extends org.jetbrains.uast.UElement>> |
getApplicableUastTypes() |
static int |
getRestrictionScope(org.jetbrains.uast.UAnnotation annotation) |
static java.util.List<java.lang.String> |
getThreadContext(com.android.tools.lint.detector.api.JavaContext context,
org.jetbrains.uast.UElement methodCall)
Attempts to infer the current thread context at the site of the given method call
|
static int |
getVisibilityForTesting(org.jetbrains.uast.UAnnotation annotation) |
static boolean |
isCompatibleThread(java.util.List<java.lang.String> callers,
java.lang.String callee)
returns true if the two threads are compatible
|
static boolean |
isCompatibleThread(java.lang.String caller,
java.lang.String callee)
returns true if the two threads are compatible
|
static boolean |
isThreadingAnnotation(org.jetbrains.uast.UAnnotation annotation) |
static boolean |
typeArrayFromArrayLiteral(org.jetbrains.uast.UElement node,
com.android.tools.lint.detector.api.JavaContext context)
Returns true if the node is pointing to a TypedArray whose value was obtained
from an array literal
|
afterCheckFile, afterCheckLibraryProject, afterCheckProject, applicableSuperClasses, appliesTo, appliesTo, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkBinaryResource, checkCall, checkClass, checkClass, checkClass, checkFolder, checkInstruction, createJavaVisitor, createPsiVisitor, fix, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableElements, getApplicableFiles, getApplicableMethodNames, getApplicableNodeTypes, getApplicablePsiTypes, getApplicableReferenceNames, getSpeed, getSpeed, run, visitAttribute, visitBuildScript, visitClass, visitClass, visitConstructor, visitConstructor, visitConstructor, visitDocument, visitElement, visitElementAfter, visitMethod, visitMethod, visitMethod, visitReference, visitReference, visitResourceReference, visitResourceReference, visitResourceReferenceclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitapplicableSuperClasses, appliesToResourceRefs, getApplicableConstructorTypes, getApplicableMethodNames, getApplicablePsiTypes, getApplicableReferenceNames, visitClass, visitClass, visitConstructor, visitMethod, visitReference, visitResourceReferencepublic static final com.android.tools.lint.detector.api.Implementation IMPLEMENTATION
public static final com.android.tools.lint.detector.api.Issue RANGE
public static final com.android.tools.lint.detector.api.Issue RESOURCE_TYPE
public static final com.android.tools.lint.detector.api.Issue COLOR_USAGE
public static final com.android.tools.lint.detector.api.Issue TYPE_DEF
public static final com.android.tools.lint.detector.api.Issue RESTRICTED
public static final com.android.tools.lint.detector.api.Issue TEST_VISIBILITY
public static final com.android.tools.lint.detector.api.Issue CHECK_RESULT
public static final com.android.tools.lint.detector.api.Issue CHECK_PERMISSION
public static final com.android.tools.lint.detector.api.Issue MISSING_PERMISSION
public static final com.android.tools.lint.detector.api.Issue THREAD
public static final java.lang.String GMS_HIDE_ANNOTATION
public static final java.lang.String CHECK_RESULT_ANNOTATION
public static final java.lang.String INT_RANGE_ANNOTATION
public static final java.lang.String FLOAT_RANGE_ANNOTATION
public static final java.lang.String SIZE_ANNOTATION
public static final java.lang.String PERMISSION_ANNOTATION
public static final java.lang.String UI_THREAD_ANNOTATION
public static final java.lang.String MAIN_THREAD_ANNOTATION
public static final java.lang.String WORKER_THREAD_ANNOTATION
public static final java.lang.String BINDER_THREAD_ANNOTATION
public static final java.lang.String ANY_THREAD_ANNOTATION
public static final java.lang.String RESTRICT_TO_ANNOTATION
public static final java.lang.String VISIBLE_FOR_TESTING_ANNOTATION
public static final java.lang.String PERMISSION_ANNOTATION_READ
public static final java.lang.String PERMISSION_ANNOTATION_WRITE
public static final java.lang.String HALF_FLOAT_ANNOTATION
public static final java.lang.String THREAD_SUFFIX
public static final java.lang.String ATTR_SUGGEST
public static final java.lang.String ATTR_TO
public static final java.lang.String ATTR_FROM
public static final java.lang.String ATTR_FROM_INCLUSIVE
public static final java.lang.String ATTR_TO_INCLUSIVE
public static final java.lang.String ATTR_MULTIPLE
public static final java.lang.String ATTR_MIN
public static final java.lang.String ATTR_MAX
public static final java.lang.String ATTR_ALL_OF
public static final java.lang.String ATTR_ANY_OF
public static final java.lang.String ATTR_CONDITIONAL
public static final java.lang.String ATTR_OTHERWISE
public static final java.lang.String SECURITY_EXCEPTION
public SupportAnnotationDetector()
SupportAnnotationDetector checkpublic static void checkVisibleForTesting(@NonNull
com.android.tools.lint.detector.api.JavaContext context,
@NonNull
org.jetbrains.uast.UElement node,
@NonNull
com.intellij.psi.PsiMethod method,
@NonNull
org.jetbrains.uast.UAnnotation annotation,
@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> allMethodAnnotations,
@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> allClassAnnotations)
public static int getVisibilityForTesting(@NonNull
org.jetbrains.uast.UAnnotation annotation)
public static void checkRestrictTo(@NonNull
com.android.tools.lint.detector.api.JavaContext context,
@NonNull
org.jetbrains.uast.UElement node,
@NonNull
com.intellij.psi.PsiMethod method,
@NonNull
org.jetbrains.uast.UAnnotation annotation,
@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> allMethodAnnotations,
@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> allClassAnnotations)
public static int getRestrictionScope(@NonNull
org.jetbrains.uast.UAnnotation annotation)
public static boolean containsAnnotation(@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> list,
@NonNull
org.jetbrains.uast.UAnnotation annotation)
public static boolean containsRestrictionAnnotation(@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> list)
public static boolean containsAnnotation(@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> list,
@NonNull
java.lang.String qualifiedName)
public static boolean containsThreadingAnnotation(@NonNull
java.util.List<org.jetbrains.uast.UAnnotation> array)
public static boolean isThreadingAnnotation(@NonNull
org.jetbrains.uast.UAnnotation annotation)
@NonNull
public static java.lang.String describeThreads(@NonNull
java.util.List<java.lang.String> annotations,
boolean any)
@NonNull
public static java.lang.String describeThread(@NonNull
java.lang.String annotation)
public static boolean isCompatibleThread(@NonNull
java.util.List<java.lang.String> callers,
@NonNull
java.lang.String callee)
public static boolean isCompatibleThread(@NonNull
java.lang.String caller,
@NonNull
java.lang.String callee)
@Nullable
public static java.util.List<java.lang.String> getThreadContext(@NonNull
com.android.tools.lint.detector.api.JavaContext context,
@NonNull
org.jetbrains.uast.UElement methodCall)
public static boolean typeArrayFromArrayLiteral(@Nullable
org.jetbrains.uast.UElement node,
@NonNull
com.android.tools.lint.detector.api.JavaContext context)
public java.util.List<java.lang.Class<? extends org.jetbrains.uast.UElement>> getApplicableUastTypes()
getApplicableUastTypes in interface com.android.tools.lint.detector.api.Detector.UastScannergetApplicableUastTypes in class com.android.tools.lint.detector.api.Detector@Nullable
public com.android.tools.lint.client.api.UElementHandler createUastHandler(@NonNull
com.android.tools.lint.detector.api.JavaContext context)
createUastHandler in interface com.android.tools.lint.detector.api.Detector.UastScannercreateUastHandler in class com.android.tools.lint.detector.api.Detector