diff --git a/check_api/src/main/java/com/google/errorprone/BaseErrorProneJavaCompiler.java b/check_api/src/main/java/com/google/errorprone/BaseErrorProneJavaCompiler.java index 51cf7c94f95..1747559e0b0 100644 --- a/check_api/src/main/java/com/google/errorprone/BaseErrorProneJavaCompiler.java +++ b/check_api/src/main/java/com/google/errorprone/BaseErrorProneJavaCompiler.java @@ -228,8 +228,10 @@ static ErrorProneAnalyzer createAnalyzer( ImmutableSet namedCheckers = epOptions.patchingOptions().namedCheckers(); if (!namedCheckers.isEmpty()) { toUse = toUse.filter(bci -> namedCheckers.contains(bci.canonicalName())); + } else { + toUse = toUse.applyOverrides(epOptions); } - return ErrorProneScannerTransformer.create(toUse.applyOverrides(epOptions).get()); + return ErrorProneScannerTransformer.create(toUse.get()); }) .get(); diff --git a/core/src/test/java/com/google/errorprone/scanner/ScannerTest.java b/core/src/test/java/com/google/errorprone/scanner/ScannerTest.java index 0a1a1899c8f..09fce873315 100644 --- a/core/src/test/java/com/google/errorprone/scanner/ScannerTest.java +++ b/core/src/test/java/com/google/errorprone/scanner/ScannerTest.java @@ -106,11 +106,26 @@ public void dontRunPatchForDisabledChecks() { "}") .setArgs( "-XepPatchLocation:IN_PLACE", - "-XepPatchChecks:ShouldNotUseFoo", + "-XepPatchChecks:", "-Xep:ShouldNotUseFoo:OFF") .doTest(); } + @Test + public void dontRunPatchUnlessRequested() { + compilationHelper.addSourceLines( + "Test.java", + "import com.google.errorprone.scanner.ScannerTest.Foo;", + "class Test {", + " Foo foo;", + "}") + .setArgs( + "-XepPatchLocation:IN_PLACE", + "-Xep:ShouldNotUseFoo:WARN", + "-XepPatchChecks:DeadException" + ).doTest(); + } + @OkToUseFoo // Foo can use itself. But this shouldn't suppress errors on *usages* of Foo. public static final class Foo {}