aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-07-29 17:47:12 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-08-01 08:06:35 +0000
commit257fdca9e6fade912148259bd036449d6d8da474 (patch)
tree8ffe3ddf7707998c8ca4a02a0babce898bd5787a /src/java_tools
parent4373185ef4cc6ce830ec401c1415d695cdc09cae (diff)
Use Error Prone's own plugin loading code
also remove unused 'enabled' bit. -- MOS_MIGRATED_REVID=128823297
Diffstat (limited to 'src/java_tools')
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java68
1 files changed, 14 insertions, 54 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
index 70916c7ceb..63be47d1ab 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java
@@ -14,17 +14,14 @@
package com.google.devtools.build.buildjar.javac.plugins.errorprone;
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
import com.google.devtools.build.buildjar.InvalidCommandLineException;
import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin;
import com.google.errorprone.ErrorProneAnalyzer;
import com.google.errorprone.ErrorProneError;
import com.google.errorprone.ErrorProneOptions;
+import com.google.errorprone.ErrorPronePlugins;
import com.google.errorprone.InvalidCommandLineOptionException;
-import com.google.errorprone.bugpatterns.BugChecker;
import com.google.errorprone.scanner.BuiltInCheckerSuppliers;
import com.google.errorprone.scanner.ScannerSupplier;
import com.sun.source.util.TaskEvent;
@@ -38,14 +35,10 @@ import com.sun.tools.javac.util.JavacMessages;
import com.sun.tools.javac.util.Log;
import java.util.Arrays;
import java.util.List;
-import java.util.ServiceLoader;
-import javax.tools.JavaFileManager;
-import javax.tools.StandardLocation;
/**
- * A plugin for BlazeJavaCompiler that performs Error Prone analysis.
- * Error Prone is a static analysis framework that we use to perform
- * some simple static checks on Java code.
+ * A plugin for BlazeJavaCompiler that performs Error Prone analysis. Error Prone is a static
+ * analysis framework that we use to perform some simple static checks on Java code.
*/
public final class ErrorPronePlugin extends BlazeJavaCompilerPlugin {
@@ -58,7 +51,7 @@ public final class ErrorPronePlugin extends BlazeJavaCompilerPlugin {
public ErrorPronePlugin() {
this.scannerSupplier = BuiltInCheckerSuppliers.errorChecks();
}
-
+
/**
* Constructs an {@link ErrorPronePlugin} with the set of checks that are enabled in {@code
* scannerSupplier}.
@@ -69,8 +62,6 @@ public final class ErrorPronePlugin extends BlazeJavaCompilerPlugin {
private ErrorProneAnalyzer errorProneAnalyzer;
private ErrorProneOptions epOptions;
- // error-prone is enabled by default
- private boolean enabled = true;
/** Registers our message bundle. */
public static void setupMessageBundle(Context context) {
@@ -93,36 +84,14 @@ public final class ErrorPronePlugin extends BlazeJavaCompilerPlugin {
return Arrays.asList(epOptions.getRemainingArgs());
}
- private static final Function<BugChecker, Class<? extends BugChecker>> GET_CLASS =
- new Function<BugChecker, Class<? extends BugChecker>>() {
- @Override
- public Class<? extends BugChecker> apply(BugChecker input) {
- return input.getClass();
- }
- };
-
@Override
public void init(Context context, Log log, JavaCompiler compiler) {
super.init(context, log, compiler);
- if (!enabled) { // error-prone plugin is turned-off
- return;
- }
-
setupMessageBundle(context);
- // TODO(cushon): Move this into error-prone proper
- JavaFileManager fileManager = context.get(JavaFileManager.class);
- // Search ANNOTATION_PROCESSOR_PATH if it's available, otherwise fallback to fileManager's
- // own class loader. Unlike in annotation processor discovery, we never search CLASS_PATH.
- ClassLoader loader = fileManager.hasLocation(StandardLocation.ANNOTATION_PROCESSOR_PATH)
- ? fileManager.getClassLoader(StandardLocation.ANNOTATION_PROCESSOR_PATH)
- : fileManager.getClass().getClassLoader();
- Iterable<BugChecker> extraBugCheckers = ServiceLoader.load(BugChecker.class, loader);
- ScannerSupplier result =
- scannerSupplier.plus(
- ScannerSupplier.fromBugCheckerClasses(
- Iterables.transform(extraBugCheckers, GET_CLASS)));
+ // load Error Prone plugins from the annotation processor classpath
+ ScannerSupplier result = ErrorPronePlugins.loadPlugins(scannerSupplier, context);
if (epOptions != null) {
try {
@@ -137,25 +106,16 @@ public final class ErrorPronePlugin extends BlazeJavaCompilerPlugin {
errorProneAnalyzer = ErrorProneAnalyzer.create(result.get()).init(context, epOptions);
}
- /**
- * Run Error Prone analysis after performing dataflow checks.
- */
+ /** Run Error Prone analysis after performing dataflow checks. */
@Override
public void postFlow(Env<AttrContext> env) {
- if (enabled) {
- try {
- errorProneAnalyzer.finished(new TaskEvent(Kind.ANALYZE, env.toplevel, env.enclClass.sym));
- } catch (ErrorProneError e) {
- e.logFatalError(log);
- // let the exception propagate to javac's main, where it will cause the compilation to
- // terminate with Result.ABNORMAL
- throw e;
- }
+ try {
+ errorProneAnalyzer.finished(new TaskEvent(Kind.ANALYZE, env.toplevel, env.enclClass.sym));
+ } catch (ErrorProneError e) {
+ e.logFatalError(log);
+ // let the exception propagate to javac's main, where it will cause the compilation to
+ // terminate with Result.ABNORMAL
+ throw e;
}
}
-
- @VisibleForTesting
- public boolean isEnabled() {
- return enabled;
- }
}