com.android.tools.lint.checks
Class SecurityDetector

java.lang.Object
  extended by com.android.tools.lint.detector.api.Detector
      extended by com.android.tools.lint.checks.SecurityDetector
All Implemented Interfaces:
com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.XmlScanner

public class SecurityDetector
extends com.android.tools.lint.detector.api.Detector
implements com.android.tools.lint.detector.api.Detector.XmlScanner, com.android.tools.lint.detector.api.Detector.JavaScanner

Checks that exported services request a permission.


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 com.android.tools.lint.detector.api.Issue EXPORTED_PROVIDER
          Exported content providers
static com.android.tools.lint.detector.api.Issue EXPORTED_RECEIVER
          Exported receivers
static com.android.tools.lint.detector.api.Issue EXPORTED_SERVICE
          Exported services
static com.android.tools.lint.detector.api.Issue OPEN_PROVIDER
          Content provides which grant all URIs access
static com.android.tools.lint.detector.api.Issue WORLD_READABLE
          Using the world-readable flag
static com.android.tools.lint.detector.api.Issue WORLD_WRITEABLE
          Using the world-writable flag
 
Fields inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner
ALL
 
Constructor Summary
SecurityDetector()
          Constructs a new SecurityDetector check
 
Method Summary
 boolean appliesTo(com.android.tools.lint.detector.api.Context context, java.io.File file)
           
 lombok.ast.AstVisitor createJavaVisitor(com.android.tools.lint.detector.api.JavaContext context)
           
 java.util.Collection<java.lang.String> getApplicableElements()
           
 java.util.List<java.lang.String> getApplicableMethodNames()
           
static boolean getExported(org.w3c.dom.Element element)
           
 com.android.tools.lint.detector.api.Speed getSpeed()
           
 void visitElement(com.android.tools.lint.detector.api.XmlContext context, org.w3c.dom.Element element)
           
 void visitMethod(com.android.tools.lint.detector.api.JavaContext context, lombok.ast.AstVisitor visitor, lombok.ast.MethodInvocation node)
           
 
Methods inherited from class com.android.tools.lint.detector.api.Detector
afterCheckFile, afterCheckLibraryProject, afterCheckProject, applicableSuperClasses, appliesTo, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkBinaryResource, checkCall, checkClass, checkClass, checkFolder, checkInstruction, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableFiles, getApplicableNodeTypes, getSpeed, run, visitAttribute, visitBuildScript, visitConstructor, visitDocument, visitElementAfter, 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.XmlScanner
getApplicableAttributes, visitAttribute, visitDocument, visitElementAfter
 
Methods inherited from interface com.android.tools.lint.detector.api.Detector.JavaScanner
applicableSuperClasses, appliesToResourceRefs, checkClass, getApplicableConstructorTypes, getApplicableNodeTypes, visitConstructor, visitResourceReference
 

Field Detail

EXPORTED_SERVICE

public static final com.android.tools.lint.detector.api.Issue EXPORTED_SERVICE
Exported services


EXPORTED_PROVIDER

public static final com.android.tools.lint.detector.api.Issue EXPORTED_PROVIDER
Exported content providers


EXPORTED_RECEIVER

public static final com.android.tools.lint.detector.api.Issue EXPORTED_RECEIVER
Exported receivers


OPEN_PROVIDER

public static final com.android.tools.lint.detector.api.Issue OPEN_PROVIDER
Content provides which grant all URIs access


WORLD_WRITEABLE

public static final com.android.tools.lint.detector.api.Issue WORLD_WRITEABLE
Using the world-writable flag


WORLD_READABLE

public static final com.android.tools.lint.detector.api.Issue WORLD_READABLE
Using the world-readable flag

Constructor Detail

SecurityDetector

public SecurityDetector()
Constructs a new SecurityDetector check

Method Detail

getSpeed

@NonNull
public com.android.tools.lint.detector.api.Speed getSpeed()
Overrides:
getSpeed in class com.android.tools.lint.detector.api.Detector

appliesTo

public boolean appliesTo(@NonNull
                         com.android.tools.lint.detector.api.Context context,
                         @NonNull
                         java.io.File file)
Overrides:
appliesTo in class com.android.tools.lint.detector.api.Detector

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

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

getExported

public static boolean getExported(org.w3c.dom.Element element)

getApplicableMethodNames

public java.util.List<java.lang.String> getApplicableMethodNames()
Specified by:
getApplicableMethodNames in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
getApplicableMethodNames in class com.android.tools.lint.detector.api.Detector

visitMethod

public void visitMethod(@NonNull
                        com.android.tools.lint.detector.api.JavaContext context,
                        @Nullable
                        lombok.ast.AstVisitor visitor,
                        @NonNull
                        lombok.ast.MethodInvocation node)
Specified by:
visitMethod in interface com.android.tools.lint.detector.api.Detector.JavaScanner
Overrides:
visitMethod in class com.android.tools.lint.detector.api.Detector

createJavaVisitor

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