com.android.tools.lint.checks
Class StringFormatDetector
java.lang.Object
com.android.tools.lint.detector.api.Detector
com.android.tools.lint.detector.api.ResourceXmlDetector
com.android.tools.lint.checks.StringFormatDetector
- All Implemented Interfaces:
- com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.XmlScanner
public class StringFormatDetector
- extends com.android.tools.lint.detector.api.ResourceXmlDetector
- implements com.android.tools.lint.detector.api.Detector.JavaScanner
Check which looks for problems with formatting strings such as inconsistencies between
translations or between string declaration and string usage in Java.
TODO: Handle Resources.getQuantityString as well
| Nested classes/interfaces inherited from class com.android.tools.lint.detector.api.Detector |
com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, com.android.tools.lint.detector.api.Detector.XmlScanner |
|
Field Summary |
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 com.android.tools.lint.detector.api.Issue |
INVALID
Whether formatting strings are invalid |
| Fields inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner |
ALL |
|
Method Summary |
void |
afterCheckProject(com.android.tools.lint.detector.api.Context context)
|
boolean |
appliesTo(com.android.tools.lint.detector.api.Context context,
java.io.File file)
|
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 |
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.ResourceXmlDetector |
run |
| Methods inherited from class com.android.tools.lint.detector.api.Detector |
afterCheckFile, afterCheckLibraryProject, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkCall, checkClass, checkInstruction, createJavaVisitor, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableFiles, getApplicableNodeTypes, getSpeed, visitAttribute, 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.JavaScanner |
appliesToResourceRefs, createJavaVisitor, getApplicableNodeTypes, visitResourceReference |
| Methods inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner |
getApplicableAttributes, visitAttribute, visitDocument, visitElementAfter |
INVALID
public static final com.android.tools.lint.detector.api.Issue INVALID
- Whether formatting strings are invalid
ARG_COUNT
public static final com.android.tools.lint.detector.api.Issue ARG_COUNT
- Whether formatting argument types are consistent across translations
ARG_TYPES
public static final com.android.tools.lint.detector.api.Issue ARG_TYPES
- Whether the string format supplied in a call to String.format matches the format string
StringFormatDetector
public StringFormatDetector()
- Constructs a new
StringFormatDetector check
appliesTo
public boolean appliesTo(@NonNull
com.android.resources.ResourceFolderType folderType)
- Overrides:
appliesTo in class com.android.tools.lint.detector.api.ResourceXmlDetector
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.ResourceXmlDetector
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
afterCheckProject
public void afterCheckProject(@NonNull
com.android.tools.lint.detector.api.Context context)
- Overrides:
afterCheckProject in class com.android.tools.lint.detector.api.Detector
isLocaleSpecific
public static boolean isLocaleSpecific(@NonNull
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. This is the case if it for example references decimal
numbers of dates and times.
- Parameters:
format - the format string
- Returns:
- true if the format is locale sensitive, false otherwise
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