Add Error Prone.
diff --git a/build.gradle b/build.gradle
index 9fd268a..b7f0ac0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,9 +1,11 @@
buildscript {
repositories {
jcenter()
+ maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
+ classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.10'
}
}
@@ -16,6 +18,15 @@
// mavenLocal()
}
+ apply plugin: 'net.ltgt.errorprone'
+
+ tasks.withType(JavaCompile) {
+ options.compilerArgs += ['-Xlint:all',
+ '-Xlint:-serial',
+ '-Xlint:-deprecation',
+ '-Werror']
+ }
+
tasks.withType(Test) {
testLogging {
exceptionFormat 'FULL'
diff --git a/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java b/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
index 58b8131..a651572 100644
--- a/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
+++ b/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
@@ -159,10 +159,10 @@
return classInstance.getValues();
}
+ @SuppressWarnings({ "unchecked", "TypeParameterUnusedInFormals" })
static <T> T fieldValue(List<ClassInstance.FieldValue> values, String fieldName) {
for (ClassInstance.FieldValue fieldValue : values) {
if (fieldValue.getField().getName().equals(fieldName)) {
- //noinspection unchecked
return (T) fieldValue.getValue();
}
}
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
index 3002cd7..2379736 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
@@ -40,6 +40,8 @@
mainHandler = new Handler(Looper.getMainLooper());
}
+
+ @SuppressWarnings("ReferenceEquality") // Explicitly checking for named null.
@Override public File dumpHeap() {
File heapDumpFile = leakDirectoryProvider.newHeapDumpFile();
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
index f8a132e..49d530f 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
@@ -104,6 +104,7 @@
private TextView failureView;
private Button actionButton;
+ @SuppressWarnings("unchecked")
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -116,7 +117,6 @@
}
}
- //noinspection unchecked
leaks = (List<Leak>) getLastNonConfigurationInstance();
setContentView(R.layout.leak_canary_display_leak);
@@ -334,12 +334,12 @@
android.R.drawable.ic_dialog_alert)
.setTitle(R.string.leak_canary_delete_all)
.setMessage(R.string.leak_canary_delete_all_leaks_title)
- .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {
deleteAllLeaks();
}
})
- .setNegativeButton(android.R.string.no, null)
+ .setNegativeButton(android.R.string.cancel, null)
.show();
}
});
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
index fd23cfb..4e71b4f 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
@@ -196,7 +196,8 @@
return position;
}
- @SuppressWarnings("unchecked") private static <T extends View> T findById(View view, int id) {
+ @SuppressWarnings({ "unchecked", "TypeParameterUnusedInFormals" })
+ private static <T extends View> T findById(View view, int id) {
return (T) view.findViewById(id);
}
}
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
index ce75157..6ac369e 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
@@ -185,7 +185,7 @@
return this;
}
- public ExcludedRefs build() {
+ @Override public ExcludedRefs build() {
return new ExcludedRefs(this);
}
}
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
index 57ee1e3..8a01a47 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
@@ -97,6 +97,7 @@
});
}
+ @SuppressWarnings("ReferenceEquality") // Explicitly checking for named null.
Retryable.Result ensureGone(final KeyedWeakReference reference, final long watchStartNanoTime) {
long gcStartNanoTime = System.nanoTime();
long watchDurationMs = NANOSECONDS.toMillis(gcStartNanoTime - watchStartNanoTime);
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
index 9e5d2a1..b4c9eb3 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
@@ -4,7 +4,7 @@
* Responsible for building {@link RefWatcher} instances. Subclasses should provide sane defaults
* for the platform they support.
*/
-public class RefWatcherBuilder<T extends RefWatcherBuilder> {
+public class RefWatcherBuilder<T extends RefWatcherBuilder<T>> {
private ExcludedRefs excludedRefs;
private HeapDump.Listener heapDumpListener;
@@ -117,8 +117,8 @@
return WatchExecutor.NONE;
}
+ @SuppressWarnings("unchecked")
protected final T self() {
- //noinspection unchecked
return (T) this;
}
}