aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Herhut <herhut@google.com>2017-10-25 13:59:55 +0200
committerStephan Herhut <herhut@google.com>2017-10-25 13:59:55 +0200
commiteeae1e814d489c39da7b3b01538c0ac5b790d48a (patch)
treec7db42bbee39af49adc5b1e25269270cab5b20ab
parent05c52553a7e587306dc771529efddaf96417f20a (diff)
downloadr8-eeae1e814d489c39da7b3b01538c0ac5b790d48a.tar.gz
Enable more ErrorProne checks.
Bug: Change-Id: I1c16b0485a1549d251d9d900b7afca98a57fea15
-rw-r--r--build.gradle11
-rw-r--r--src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java3
-rw-r--r--src/main/java/com/android/tools/r8/dex/Marker.java2
-rw-r--r--src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java2
-rw-r--r--src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java4
-rw-r--r--src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java3
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java2
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java2
-rw-r--r--src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java11
9 files changed, 30 insertions, 10 deletions
diff --git a/build.gradle b/build.gradle
index e189e578d..9299592c7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,7 +22,16 @@ def errorProneConfiguration = [
'-Xep:MissingOverride:WARN',
'-Xep:OvershadowingSubclassFields:WARN',
'-Xep:IntLongMath:WARN',
- '-Xep:EqualsHashCode:WARN']
+ '-Xep:EqualsHashCode:WARN',
+ '-Xep:ArrayHashCode:WARN',
+ '-Xep:EqualsIncompatibleType:WARN',
+ '-Xep:NonOverridingEquals:WARN',
+ '-Xep:FallThrough:WARN',
+ '-Xep:MissingCasesInEnumSwitch:WARN',
+ '-Xep:MissingDefault:WARN',
+ '-Xep:MultipleTopLevelClasses:WARN',
+ '-Xep:NarrowingCompoundAssignment:WARN',
+ '-Xep:BoxedPrimitiveConstructor:WARN']
apply from: 'copyAdditionalJctfCommonFiles.gradle'
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
index 93b1b249b..356451a86 100644
--- a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
@@ -75,6 +75,9 @@ public class CompatDexBuilder {
case "--nolocals":
noLocals = true;
break;
+ default:
+ System.err.println("Unsupported option: " + flag);
+ System.exit(1);
}
}
diff --git a/src/main/java/com/android/tools/r8/dex/Marker.java b/src/main/java/com/android/tools/r8/dex/Marker.java
index ef17aa761..463d4843f 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -53,7 +53,7 @@ public class Marker {
public Marker put(String key, int value) {
// value is converted to Long ensuring equals works with the parsed json string.
- return internalPut(key, new Long(value));
+ return internalPut(key, Long.valueOf(value));
}
public Marker put(String key, String value) {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 4d97764cd..042232b82 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -1219,6 +1219,8 @@ public class DexBuilder {
throw new Unreachable("Unexpected type: " + move.outType());
}
break;
+ default:
+ throw new Unreachable("Unexpected size: " + size);
}
instruction.setOffset(getOffset());
instructions.add(instruction);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index 18622775f..3cd2b5799 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -2600,9 +2600,9 @@ public class JarSourceCode implements SourceCode {
case Type.METHOD:
return new DexValue.DexValueMethodType(
application.getProto(((Type) value).getDescriptor()));
+ default:
+ throw new Unreachable("Type sort is not supported: " + type.getSort());
}
- throw new Unreachable("Type sort is not supported: " + type.getSort());
-
} else if (value instanceof Handle) {
return new DexValue.DexValueMethodHandle(getMethodHandle(application, (Handle) value));
} else {
diff --git a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
index 2d9154a89..9a5baafa8 100644
--- a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
+++ b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureParser.java
@@ -360,8 +360,9 @@ public class GenericSignatureParser<T> {
case '<':
case '.':
return true;
+ default:
+ return false;
}
- return false;
}
// PRE: symbol is the first char of the identifier.
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index 40b759810..d24a3578f 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -683,6 +683,8 @@ public class ProguardConfigurationParser {
flags.setVolatile();
}
break;
+ default:
+ // Intentionally left empty.
}
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
index f3e6c6f33..121641b69 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -203,6 +203,7 @@ public class ProguardMemberRule {
if (method.isClassInitializer()) {
break;
}
+ // Fall through for all other methods.
case ALL:
// Access flags check.
if (!method.accessFlags.containsAllOf(getAccessFlags()) ||
@@ -319,6 +320,7 @@ public class ProguardMemberRule {
case METHOD:
result.append(getType());
result.append(' ');
+ // Fall through for rest of method signature.
case CONSTRUCTOR:
case INIT: {
result.append(getName());
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
index e50a1e389..ef149f74f 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardTypeMatcher.java
@@ -48,12 +48,13 @@ public abstract class ProguardTypeMatcher {
return MatchClassTypes.LEGACY_MATCH_CLASS_TYPES;
case MATCH_BASIC_PATTERN:
return MatchBasicTypes.MATCH_BASIC_TYPES;
+ default:
+ if (!pattern.contains("*") && !pattern.contains("%") && !pattern.contains("?")) {
+ return new MatchSpecificType(
+ dexItemFactory.createType(DescriptorUtils.javaTypeToDescriptor(pattern)));
+ }
+ return new MatchTypePattern(pattern, kind);
}
- if (!pattern.contains("*") && !pattern.contains("%") && !pattern.contains("?")) {
- return new MatchSpecificType(
- dexItemFactory.createType(DescriptorUtils.javaTypeToDescriptor(pattern)));
- }
- return new MatchTypePattern(pattern, kind);
}
public static ProguardTypeMatcher defaultAllMatcher() {