|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.android.tools.lint.detector.api.Detector com.android.tools.lint.checks.SupportAnnotationDetector
public class SupportAnnotationDetector
Looks up annotations on method calls and enforces the various things they
express, e.g. for @CheckReturn
it makes sure the return value is used,
for ColorInt
it ensures that a proper color integer is passed in, etc.
TODO: Throw in some annotation usage checks here too; e.g. specifying @Size without parameters,
specifying toInclusive without setting to, combining @ColorInt with any @ResourceTypeRes,
using @CheckResult on a void method, etc.
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 |
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_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 java.lang.String |
COLOR_INT_ANNOTATION
|
static com.android.resources.ResourceType |
COLOR_INT_MARKER_TYPE
Marker ResourceType used to signify that an expression is of type @ColorInt ,
which isn't actually a ResourceType but one we want to specifically compare with. |
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 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 java.lang.String |
RES_SUFFIX
|
static com.android.tools.lint.detector.api.Issue |
RESOURCE_TYPE
Attempting to set a resource id as a color |
static java.lang.String |
SIZE_ANNOTATION
|
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 |
WORKER_THREAD_ANNOTATION
|
Constructor Summary | |
---|---|
SupportAnnotationDetector()
Constructs a new SupportAnnotationDetector check |
Method Summary | |
---|---|
lombok.ast.AstVisitor |
createJavaVisitor(com.android.tools.lint.detector.api.JavaContext context)
|
static java.lang.String |
describeThread(java.lang.String annotation)
|
java.util.List<java.lang.Class<? extends lombok.ast.Node>> |
getApplicableNodeTypes()
|
static java.lang.String |
getMissingPermissionMessage(PermissionRequirement requirement,
java.lang.String callName,
PermissionHolder permissions,
PermissionFinder.Operation operation)
Returns the error message shown when a given call is missing one or more permissions |
static java.lang.String |
getUnhandledPermissionMessage()
Returns the error message shown when a revocable permission call is not properly handled |
static boolean |
isCompatibleThread(java.lang.String thread1,
java.lang.String thread2)
returns true if the two threads are compatible |
Methods inherited from class com.android.tools.lint.detector.api.Detector |
---|
afterCheckFile, afterCheckLibraryProject, afterCheckProject, applicableSuperClasses, appliesTo, appliesTo, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkBinaryResource, checkCall, checkClass, checkClass, checkFolder, checkInstruction, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableElements, getApplicableFiles, getApplicableMethodNames, getSpeed, getSpeed, run, visitAttribute, visitBuildScript, visitConstructor, visitDocument, visitElement, 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.JavaScanner |
---|
applicableSuperClasses, appliesToResourceRefs, checkClass, getApplicableConstructorTypes, getApplicableMethodNames, visitConstructor, visitMethod, visitResourceReference |
Field Detail |
---|
public 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 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 CHECK_RESULT_ANNOTATION
public static final java.lang.String COLOR_INT_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 PERMISSION_ANNOTATION_READ
public static final java.lang.String PERMISSION_ANNOTATION_WRITE
public static final java.lang.String RES_SUFFIX
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 com.android.resources.ResourceType COLOR_INT_MARKER_TYPE
@ColorInt
,
which isn't actually a ResourceType but one we want to specifically compare with.
We're using ResourceType.PUBLIC
because that one won't appear in the R
class (and ResourceType is an enum we can't just create new constants for.)
Constructor Detail |
---|
public SupportAnnotationDetector()
SupportAnnotationDetector
check
Method Detail |
---|
public static java.lang.String getMissingPermissionMessage(@NonNull PermissionRequirement requirement, @NonNull java.lang.String callName, @NonNull PermissionHolder permissions, @NonNull PermissionFinder.Operation operation)
public static java.lang.String getUnhandledPermissionMessage()
@NonNull public static java.lang.String describeThread(@NonNull java.lang.String annotation)
public static boolean isCompatibleThread(@NonNull java.lang.String thread1, @NonNull java.lang.String thread2)
public java.util.List<java.lang.Class<? extends lombok.ast.Node>> getApplicableNodeTypes()
getApplicableNodeTypes
in interface com.android.tools.lint.detector.api.Detector.JavaScanner
getApplicableNodeTypes
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.JavaScanner
createJavaVisitor
in class com.android.tools.lint.detector.api.Detector
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |