From 29e46b23143eaeeda1d43e72d0a69131490e6bde Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Mon, 18 May 2015 19:50:00 +0000 Subject: Add a plugin to drop Error Prone-specific javacopts -- MOS_MIGRATED_REVID=93915666 --- src/java_tools/buildjar/BUILD | 1 + .../devtools/build/buildjar/BazelJavaBuilder.java | 7 ++- .../FileManagerInitializationPlugin.java | 31 ----------- .../errorprone/ErrorProneOptionsPlugin.java | 64 ++++++++++++++++++++++ .../FileManagerInitializationPlugin.java | 31 +++++++++++ 5 files changed, 101 insertions(+), 33 deletions(-) delete mode 100644 src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/FileManagerInitializationPlugin.java create mode 100644 src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorProneOptionsPlugin.java create mode 100644 src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/filemanager/FileManagerInitializationPlugin.java (limited to 'src/java_tools/buildjar') diff --git a/src/java_tools/buildjar/BUILD b/src/java_tools/buildjar/BUILD index 98c2afef24..f8cfd4a625 100644 --- a/src/java_tools/buildjar/BUILD +++ b/src/java_tools/buildjar/BUILD @@ -6,6 +6,7 @@ java_binary( main_class = "com.google.devtools.build.buildjar.BazelJavaBuilder", deps = [ "//src/main/protobuf:proto_deps", + "//third_party:error_prone", "//third_party:guava", "//third_party:jsr305", "//third_party:protobuf", diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BazelJavaBuilder.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BazelJavaBuilder.java index 0441e91fcb..4531098a77 100644 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BazelJavaBuilder.java +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BazelJavaBuilder.java @@ -18,7 +18,8 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.buildjar.javac.JavacOptions; import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin; import com.google.devtools.build.buildjar.javac.plugins.dependency.DependencyModule; -import com.google.devtools.build.buildjar.javac.plugins.dependency.FileManagerInitializationPlugin; +import com.google.devtools.build.buildjar.javac.plugins.errorprone.ErrorProneOptionsPlugin; +import com.google.devtools.build.buildjar.javac.plugins.filemanager.FileManagerInitializationPlugin; import java.io.IOException; import java.util.Arrays; @@ -36,7 +37,9 @@ public abstract class BazelJavaBuilder { public static void main(String[] args) { try { ImmutableList plugins = - ImmutableList.of(new FileManagerInitializationPlugin()); + ImmutableList.of( + new FileManagerInitializationPlugin(), + new ErrorProneOptionsPlugin()); JavaLibraryBuildRequest build = new JavaLibraryBuildRequest( Arrays.asList(args), plugins, new DependencyModule.Builder()); diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/FileManagerInitializationPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/FileManagerInitializationPlugin.java deleted file mode 100644 index fe76c5d84a..0000000000 --- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/FileManagerInitializationPlugin.java +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.buildjar.javac.plugins.dependency; - -import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin; - -import com.sun.tools.javac.file.JavacFileManager; -import com.sun.tools.javac.util.Context; - -/** - * Register a context factory to create JavacFileManagers. - */ -public class FileManagerInitializationPlugin extends BlazeJavaCompilerPlugin { - - @Override - public void initializeContext(Context context) { - JavacFileManager.preRegister(context); - } -} diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorProneOptionsPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorProneOptionsPlugin.java new file mode 100644 index 0000000000..2172cd9f49 --- /dev/null +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorProneOptionsPlugin.java @@ -0,0 +1,64 @@ +// Copyright 2014 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.buildjar.javac.plugins.errorprone; + +import com.google.devtools.build.buildjar.InvalidCommandLineException; +import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin; +import com.google.errorprone.ErrorProneOptions; +import com.google.errorprone.InvalidCommandLineOptionException; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Process (and discard) Error Prone specific options. + * + *

This is a stop-gap until full Error Prone support is added to Bazel. + */ +public class ErrorProneOptionsPlugin extends BlazeJavaCompilerPlugin { + + @Override + public List processArgs(List args) throws InvalidCommandLineException { + // TODO(cushon): add -XepIgnoreUnknownCheckNames once Error Prone is supported + return processEpOptions(processExtraChecksOption(args)); + } + + private List processEpOptions(List args) throws InvalidCommandLineException { + ErrorProneOptions epOptions; + try { + epOptions = ErrorProneOptions.processArgs(args); + } catch (InvalidCommandLineOptionException e) { + throw new InvalidCommandLineException(e.getMessage()); + } + return Arrays.asList(epOptions.getRemainingArgs()); + } + + private List processExtraChecksOption(List args) { + List arguments = new ArrayList<>(); + for (String arg : args) { + switch (arg) { + case "-extra_checks": + case "-extra_checks:on": + break; + case "-extra_checks:off": + break; + default: + arguments.add(arg); + } + } + return arguments; + } +} diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/filemanager/FileManagerInitializationPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/filemanager/FileManagerInitializationPlugin.java new file mode 100644 index 0000000000..532bada25e --- /dev/null +++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/filemanager/FileManagerInitializationPlugin.java @@ -0,0 +1,31 @@ +// Copyright 2014 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.buildjar.javac.plugins.filemanager; + +import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin; + +import com.sun.tools.javac.file.JavacFileManager; +import com.sun.tools.javac.util.Context; + +/** + * Register a context factory to create JavacFileManagers. + */ +public class FileManagerInitializationPlugin extends BlazeJavaCompilerPlugin { + + @Override + public void initializeContext(Context context) { + JavacFileManager.preRegister(context); + } +} -- cgit v1.2.3