public class StringFormatDetector
extends com.android.tools.lint.detector.api.ResourceXmlDetector
implements com.android.tools.lint.detector.api.SourceCodeScanner
TODO: Handle Resources.getQuantityString as well
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.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 com.android.tools.lint.detector.api.Issue |
ARG_COUNT
Whether formatting argument types are consistent across translations
|
static com.android.tools.lint.detector.api.Issue |
ARG_TYPES
Whether the string format supplied in a call to String.format matches the format string
|
static java.util.regex.Pattern |
FORMAT |
static com.android.tools.lint.detector.api.Issue |
INVALID
Whether formatting strings are invalid
|
static com.android.tools.lint.detector.api.Issue |
POTENTIAL_PLURAL
This plural does not use the quantity value
|
| Constructor and Description |
|---|
StringFormatDetector()
Constructs a new
StringFormatDetector check |
| Modifier and Type | Method and Description |
|---|---|
void |
afterCheckRootProject(com.android.tools.lint.detector.api.Context context) |
boolean |
appliesTo(com.android.resources.ResourceFolderType folderType) |
java.util.Collection<java.lang.String> |
getApplicableElements() |
java.util.List<java.lang.String> |
getApplicableMethodNames() |
static boolean |
isLocaleSpecific(java.lang.String format)
Determines whether the given
String.format(String, Object...) formatting string is
"locale dependent", meaning that its output depends on the locale. |
void |
visitElement(com.android.tools.lint.detector.api.XmlContext context,
org.w3c.dom.Element element) |
void |
visitMethodCall(com.android.tools.lint.detector.api.JavaContext context,
org.jetbrains.uast.UCallExpression node,
com.intellij.psi.PsiMethod method) |
afterCheckEachProject, afterCheckFile, afterCheckLibraryProject, afterCheckProject, analyzeCallGraph, applicableAnnotations, applicableSuperClasses, appliesTo, appliesToResourceRefs, beforeCheckEachProject, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, beforeCheckRootProject, checkBinaryResource, checkCall, checkClass, checkClass, checkDslPropertyAssignment, checkFolder, checkInstruction, checkMethodCall, createPsiVisitor, createUastHandler, fix, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableFiles, getApplicablePsiTypes, getApplicableReferenceNames, getApplicableUastTypes, getCustomVisitor, getSpeed, inheritAnnotation, isApplicableAnnotationUsage, isCallGraphRequired, visitAnnotationUsage, visitAnnotationUsage, visitAttribute, visitBuildScript, visitClass, visitClass, visitConstructor, visitConstructor, visitDocument, visitElementAfter, visitMethod, visitMethod, visitReference, visitReference, visitResourceReference, visitResourceReferenceclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitanalyzeCallGraph, applicableAnnotations, applicableSuperClasses, appliesToResourceRefs, createUastHandler, getApplicableConstructorTypes, getApplicableReferenceNames, getApplicableUastTypes, inheritAnnotation, isApplicableAnnotationUsage, isCallGraphRequired, visitAnnotationUsage, visitAnnotationUsage, visitClass, visitClass, visitConstructor, visitMethod, visitReference, visitResourceReferencepublic static final com.android.tools.lint.detector.api.Issue INVALID
public static final com.android.tools.lint.detector.api.Issue ARG_COUNT
public static final com.android.tools.lint.detector.api.Issue ARG_TYPES
public static final com.android.tools.lint.detector.api.Issue POTENTIAL_PLURAL
public static final java.util.regex.Pattern FORMAT
public StringFormatDetector()
StringFormatDetector checkpublic boolean appliesTo(@NonNull
com.android.resources.ResourceFolderType folderType)
appliesTo in interface com.android.tools.lint.detector.api.XmlScannerappliesTo 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.XmlScannergetApplicableElements in class com.android.tools.lint.detector.api.Detectorpublic 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.XmlScannervisitElement in class com.android.tools.lint.detector.api.Detectorpublic void afterCheckRootProject(@NonNull
com.android.tools.lint.detector.api.Context context)
afterCheckRootProject in class com.android.tools.lint.detector.api.Detectorpublic static boolean isLocaleSpecific(@NonNull
java.lang.String format)
String.format(String, Object...) formatting string is
"locale dependent", meaning that its output depends on the locale. This is the case if it for
example references decimal numbers of dates and times.format - the format stringpublic java.util.List<java.lang.String> getApplicableMethodNames()
getApplicableMethodNames in interface com.android.tools.lint.detector.api.SourceCodeScannergetApplicableMethodNames in class com.android.tools.lint.detector.api.Detectorpublic void visitMethodCall(@NonNull
com.android.tools.lint.detector.api.JavaContext context,
@NonNull
org.jetbrains.uast.UCallExpression node,
@NonNull
com.intellij.psi.PsiMethod method)
visitMethodCall in interface com.android.tools.lint.detector.api.SourceCodeScannervisitMethodCall in class com.android.tools.lint.detector.api.Detector