all: Enable ErrorProne during compilation
ErrorProne provides static analysis for common issues, including
misused variables GuardedBy locks.
This increases build time by 60% for parallel builds and 30% for
non-parallel, so I've provided a way to disable the check. It is on by
default though and will be run in our CI environments.
diff --git a/build.gradle b/build.gradle
index def381d..a3c63b9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,10 +2,14 @@
repositories {
mavenCentral()
mavenLocal()
+ maven {
+ url "https://plugins.gradle.org/m2/"
+ }
}
dependencies {
classpath 'com.google.gradle:osdetector-gradle-plugin:1.4.0'
- classpath "ru.vyarus:gradle-animalsniffer-plugin:1.2.0"
+ classpath 'ru.vyarus:gradle-animalsniffer-plugin:1.2.0'
+ classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.9'
}
}
@@ -20,6 +24,9 @@
apply plugin: "com.google.osdetector"
// The plugin only has an effect if a signature is specified
apply plugin: "ru.vyarus.animalsniffer"
+ if (!rootProject.hasProperty('errorProne') || rootProject.errorProne.toBoolean()) {
+ apply plugin: "net.ltgt.errorprone"
+ }
group = "io.grpc"
version = "1.2.0-SNAPSHOT" // CURRENT_GRPC_VERSION
@@ -33,7 +40,7 @@
}
[compileJava, compileTestJava].each() {
- it.options.compilerArgs += ["-Xlint:all", "-Xlint:-options"]
+ it.options.compilerArgs += ["-Xlint:all", "-Xlint:-options", "-Xlint:-path"]
it.options.encoding = "UTF-8"
if (rootProject.hasProperty('failOnWarnings') && rootProject.failOnWarnings.toBoolean()) {
it.options.compilerArgs += ["-Werror"]
@@ -136,7 +143,9 @@
[compileJava, compileTestJava].each() {
// Protobuf-generated code produces some warnings.
- it.options.compilerArgs += ["-Xlint:-cast"]
+ // https://github.com/google/protobuf/issues/2718
+ it.options.compilerArgs += ["-Xlint:-cast", "-Xep:MissingOverride:OFF",
+ "-Xep:ReferenceEquality:OFF", "-Xep:FunctionalInterfaceClash:OFF"]
}
}
@@ -198,6 +207,10 @@
// Configuration for modules that use Netty tcnative (for OpenSSL).
tcnative libraries.netty_tcnative
+
+ // The ErrorProne plugin defaults to the latest, which would break our
+ // build if error prone releases a new version with a new check
+ errorprone 'com.google.errorprone:error_prone_core:2.0.15'
}
signing {