Add error prone patterns to warn.py

Bug: 28681096
Change-Id: I06ac0ed4593b03cea0a8163ca85e393ff1358855
This commit is contained in:
Ian Rogers 2016-05-09 23:19:42 -07:00
parent 8561a459b5
commit df79adacab

View file

@ -303,6 +303,89 @@ warnpatterns = [
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Unchecked conversion',
'patterns':[r".*: warning: \[unchecked\] unchecked conversion"] },
# Warnings from error prone.
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Long literal suffix',
'patterns':[r".*: warning: \[LongLiteralLowerCaseSuffix\] Prefer 'L' to 'l' for the suffix to long literal"] },
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Missing @Deprecated',
'patterns':[r".*: warning: \[DepAnn\] Deprecated item is not annotated with @Deprecated"] },
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Use of deprecated member',
'patterns':[r".*: warning: \[deprecation\] .+ in .+ has been deprecated"] },
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Missing hashCode method',
'patterns':[r".*: warning: \[EqualsHashCode\] Classes that override equals should also override hashCode."] },
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Hashtable contains is a legacy method',
'patterns':[r".*: warning: \[HashtableContains\] contains\(\) is a legacy method that is equivalent to containsValue\(\)"] },
{ 'category':'java', 'severity':severity.LOW, 'members':[], 'option':'',
'description':'Java: Type parameter used only for return type',
'patterns':[r".*: warning: \[TypeParameterUnusedInFormals\] Declaring a type parameter that is only used in the return type is a misuse of generics: operations on the type parameter are unchecked, it hides unsafe casts at invocations of the method, and it interacts badly with method overload resolution."] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: reference equality used on arrays',
'patterns':[r".*: warning: \[ArrayEquals\] Reference equality used to compare arrays"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: hashcode used on array',
'patterns':[r".*: warning: \[ArrayHashCode\] hashcode method on array does not hash array contents"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: toString used on an array',
'patterns':[r".*: warning: \[ArrayToStringConcatenation\] Implicit toString used on an array \(String \+ Array\)",
r".*: warning: \[ArrayToString\] Calling toString on an array does not provide useful information"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Exception created but not thrown',
'patterns':[r".*: warning: \[DeadException\] Exception created but not thrown"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Return or throw from a finally',
'patterns':[r".*: warning: \[Finally\] If you return or throw from a finally, then values returned or thrown from the try-catch block will be ignored. Consider using try-with-resources instead."] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Erroneous use of @GuardedBy',
'patterns':[r".*: warning: \[GuardedByChecker\] This access should be guarded by '.+'; instead found: '.+'",
r".*: warning: \[GuardedByChecker\] This access should be guarded by '.+', which is not currently held"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Mislabeled Android string',
'patterns':[r".*: warning: \[MislabeledAndroidString\] .+ is not \".+\" but \".+\"; prefer .+ for clarity"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Missing cases in enum switch',
'patterns':[r".*: warning: \[MissingCasesInEnumSwitch\] Non-exhaustive switch, expected cases for: .+"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Multiple top-level classes (inhibits bug analysis)',
'patterns':[r".*: warning: \[MultipleTopLevelClasses\] Expected at most one top-level class declaration, instead found: .+"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: equals method doesn\'t override Object.equals',
'patterns':[r".*: warning: \[NonOverridingEquals\] equals method doesn't override Object\.equals.*"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Update of a volatile variable is non-atomic',
'patterns':[r".*: warning: \[NonAtomicVolatileUpdate\] This update of a volatile variable is non-atomic"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Return value ignored',
'patterns':[r".*: warning: \[ReturnValueIgnored\] Return value of this method must be used",
r".*: warning: \[RectIntersectReturnValueIgnored\] Return value of android.graphics.Rect.intersect\(\) must be checked"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Static variable accessed from an object instance',
'patterns':[r".*: warning: \[StaticAccessedFromInstance\] Static (method|variable) .+ should not be accessed from an object instance; instead use .+"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Static guarded by instance',
'patterns':[r".*: warning: \[StaticGuardedByInstance\] Write to static variable should not be guarded by instance lock '.+'"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: String reference equality',
'patterns':[r".*: warning: \[StringEquality\] String comparison using reference equality instead of value equality"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Synchronization on non-final field',
'patterns':[r".*: warning: \[SynchronizeOnNonFinalField\] Synchronizing on non-final fields is not safe: if the field is ever updated, different threads may end up locking on different objects."] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Catch masks fail or assert',
'patterns':[r".*: warning: \[TryFailThrowable\] Catching Throwable/Error masks failures from fail\(\) or assert\*\(\) in the try block"] },
{ 'category':'java', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'Java: Wait not in a loop',
'patterns':[r".*: warning: \[WaitNotInLoop\] Because of spurious wakeups, a?wait.*\(.*\) must always be called in a loop"] },
{ 'category':'java', 'severity':severity.UNKNOWN, 'members':[], 'option':'',
'description':'Java: Unclassified/unrecognized warnings',
'patterns':[r".*: warning: \[.+\] .+"] },
{ 'category':'aapt', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'aapt: No default translation',
'patterns':[r".*: warning: string '.+' has no default translation in .*"] },
@ -883,4 +966,3 @@ dumpseverity(severity.TIDY)
dumpseverity(severity.HARMLESS)
dumpseverity(severity.UNKNOWN)
dumpfixed()