summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2018-09-05 06:33:29 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-09-05 06:33:29 +0000
commitf484e3f35680d8cf24b26d147475202ad4fcf848 (patch)
tree22318693a8e170a61369aa135eb3c21009b5117e
parent39262bca07ca62b3dc2bea95cf3dab2222dff8c6 (diff)
parent08fca6a7d51046fb2aa1c335ebf4cd107c122654 (diff)
Merge "Bazel: Provide toolchain with activated error prone warnings" into stable-2.14
-rw-r--r--Documentation/dev-bazel.txt5
-rw-r--r--tools/BUILD148
2 files changed, 153 insertions, 0 deletions
diff --git a/Documentation/dev-bazel.txt b/Documentation/dev-bazel.txt
index caa4ba8e77..129071e188 100644
--- a/Documentation/dev-bazel.txt
+++ b/Documentation/dev-bazel.txt
@@ -121,6 +121,11 @@ The output JAR file will be be placed in:
Note that when building an individual plugin, the `core.zip` package
is not regenerated.
+To build with all Error Prone warnings activated, run:
+
+----
+ bazel build --java_toolchain //tools:error_prone_warnings_toolchain //...
+----
[[IDEs]]
diff --git a/tools/BUILD b/tools/BUILD
index 060cbd8787..379ea6cb10 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -1,6 +1,154 @@
+load("@bazel_tools//tools/jdk:default_java_toolchain.bzl", "default_java_toolchain")
+
py_binary(
name = "merge_jars",
srcs = ["merge_jars.py"],
main = "merge_jars.py",
visibility = ["//visibility:public"],
)
+
+# TODO(davido): remove this when minimum suported Bazel version >= 0.17
+# Copied from tools/jdk/default_java_toolchain.bzl to make Bazel 0.16
+# and later Bazel released to work as expected. See this issue for context:
+# https://github.com/bazelbuild/bazel/issues/6009
+JDK9_JVM_OPTS = [
+ # Allow JavaBuilder to access internal javac APIs.
+ "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
+ "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
+ "--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
+
+ # override the javac in the JDK.
+ "--patch-module=java.compiler=$(location @bazel_tools//third_party/java/jdk/langtools:java_compiler_jar)",
+ "--patch-module=jdk.compiler=$(location @bazel_tools//third_party/java/jdk/langtools:jdk_compiler_jar)",
+
+ # quiet warnings from com.google.protobuf.UnsafeUtil,
+ # see: https://github.com/google/protobuf/issues/3781
+ "--add-opens=java.base/java.nio=ALL-UNNAMED",
+]
+
+# See https://github.com/bazelbuild/bazel/issues/3427 for more context
+default_java_toolchain(
+ name = "error_prone_warnings_toolchain_bazel_0.16",
+ bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath.jar"],
+ jvm_opts = JDK9_JVM_OPTS,
+ package_configuration = [
+ ":error_prone",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+default_java_toolchain(
+ name = "error_prone_warnings_toolchain",
+ bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath8.jar"],
+ package_configuration = [
+ ":error_prone",
+ ],
+ visibility = ["//visibility:public"],
+)
+
+# This EP warnings list is based on:
+# https://github.com/bazelbuild/BUILD_file_generator/blob/master/tools/bazel_defs/java.bzl
+java_package_configuration(
+ name = "error_prone",
+ javacopts = [
+ "-XepDisableWarningsInGeneratedCode",
+ "-Xep:MissingCasesInEnumSwitch:ERROR",
+ "-Xep:ReferenceEquality:WARN",
+ "-Xep:StringEquality:WARN",
+ "-Xep:WildcardImport:WARN",
+ "-Xep:AmbiguousMethodReference:WARN",
+ "-Xep:BadAnnotationImplementation:WARN",
+ "-Xep:BadComparable:WARN",
+ "-Xep:BoxedPrimitiveConstructor:ERROR",
+ "-Xep:CannotMockFinalClass:WARN",
+ "-Xep:ClassCanBeStatic:WARN",
+ "-Xep:ClassNewInstance:WARN",
+ "-Xep:DefaultCharset:WARN",
+ "-Xep:DoubleCheckedLocking:WARN",
+ "-Xep:ElementsCountedInLoop:WARN",
+ "-Xep:EqualsHashCode:WARN",
+ "-Xep:EqualsIncompatibleType:WARN",
+ "-Xep:ExpectedExceptionChecker:ERROR",
+ "-Xep:Finally:WARN",
+ "-Xep:FloatingPointLiteralPrecision:WARN",
+ "-Xep:FragmentInjection:WARN",
+ "-Xep:FragmentNotInstantiable:WARN",
+ "-Xep:FunctionalInterfaceClash:WARN",
+ "-Xep:FutureReturnValueIgnored:WARN",
+ "-Xep:GetClassOnEnum:WARN",
+ "-Xep:ImmutableAnnotationChecker:WARN",
+ "-Xep:ImmutableEnumChecker:WARN",
+ "-Xep:IncompatibleModifiers:WARN",
+ "-Xep:InjectOnConstructorOfAbstractClass:WARN",
+ "-Xep:InputStreamSlowMultibyteRead:WARN",
+ "-Xep:IterableAndIterator:WARN",
+ "-Xep:JUnit3FloatingPointComparisonWithoutDelta:WARN",
+ "-Xep:JUnitAmbiguousTestClass:WARN",
+ "-Xep:LiteralClassName:WARN",
+ "-Xep:MissingFail:WARN",
+ "-Xep:MissingOverride:WARN",
+ "-Xep:MutableConstantField:WARN",
+ "-Xep:NarrowingCompoundAssignment:WARN",
+ "-Xep:NonAtomicVolatileUpdate:WARN",
+ "-Xep:NonOverridingEquals:WARN",
+ "-Xep:NullableConstructor:WARN",
+ "-Xep:NullablePrimitive:WARN",
+ "-Xep:NullableVoid:WARN",
+ "-Xep:OperatorPrecedence:WARN",
+ "-Xep:OverridesGuiceInjectableMethod:WARN",
+ "-Xep:PreconditionsInvalidPlaceholder:WARN",
+ "-Xep:ProtoFieldPreconditionsCheckNotNull:WARN",
+ "-Xep:ProtocolBufferOrdinal:WARN",
+ "-Xep:RequiredModifiers:WARN",
+ "-Xep:ShortCircuitBoolean:WARN",
+ "-Xep:SimpleDateFormatConstant:WARN",
+ "-Xep:StaticGuardedByInstance:WARN",
+ "-Xep:SynchronizeOnNonFinalField:WARN",
+ "-Xep:TruthConstantAsserts:WARN",
+ "-Xep:TypeParameterShadowing:WARN",
+ "-Xep:TypeParameterUnusedInFormals:WARN",
+ "-Xep:URLEqualsHashCode:WARN",
+ "-Xep:UnsynchronizedOverridesSynchronized:WARN",
+ "-Xep:WaitNotInLoop:WARN",
+ ],
+ packages = ["error_prone_packages"],
+)
+
+package_group(
+ name = "error_prone_packages",
+ packages = [
+ "//gerrit-acceptance-framework/...",
+ "//gerrit-acceptance-tests/...",
+ "//gerrit-cache-h2/...",
+ "//gerrit-cache-mem/...",
+ "//gerrit-common/...",
+ "//gerrit-elasticsearch/...",
+ "//gerrit-extension-api/...",
+ "//gerrit-gpg/...",
+ "//gerrit-httpd/...",
+ "//gerrit-launcher/...",
+ "//gerrit-lucene/...",
+ "//gerrit-main/...",
+ "//gerrit-oauth/...",
+ "//gerrit-openid/...",
+ "//gerrit-patch-commonsnet/...",
+ "//gerrit-patch-jgit/...",
+ "//gerrit-pgm/...",
+ "//gerrit-plugin-api/...",
+ "//gerrit-plugin-gwtui/...",
+ "//gerrit-prettify/...",
+ "//gerrit-reviewdb/...",
+ "//gerrit-server/...",
+ "//gerrit-sshd/...",
+ "//gerrit-test-util/...",
+ "//gerrit-util-cli/...",
+ "//gerrit-util-http/...",
+ "//gerrit-util-ssl/...",
+ "//gerrit-war/...",
+ ],
+)