Skip to content

Commit aeda0cd

Browse files
oxkitsuneError Prone Team
authored andcommitted
Ignore disabled checks passed to -XepPatchChecks
Rather than throwing an `NoSuchElementException`. Fixes #3908. Fixes #4028 FUTURE_COPYBARA_INTEGRATE_REVIEW=#4028 from PicnicSupermarket:gdejong/remove-disabled-checks 5865373 PiperOrigin-RevId: 563488388
1 parent 35e51f3 commit aeda0cd

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

check_api/src/main/java/com/google/errorprone/BaseErrorProneJavaCompiler.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,14 +224,12 @@ static ErrorProneAnalyzer createAnalyzer(
224224
.customRefactorer()
225225
.or(
226226
() -> {
227-
ScannerSupplier toUse =
228-
ErrorPronePlugins.loadPlugins(scannerSupplier, context)
229-
.applyOverrides(epOptions);
227+
ScannerSupplier toUse = ErrorPronePlugins.loadPlugins(scannerSupplier, context);
230228
ImmutableSet<String> namedCheckers = epOptions.patchingOptions().namedCheckers();
231229
if (!namedCheckers.isEmpty()) {
232230
toUse = toUse.filter(bci -> namedCheckers.contains(bci.canonicalName()));
233231
}
234-
return ErrorProneScannerTransformer.create(toUse.get());
232+
return ErrorProneScannerTransformer.create(toUse.applyOverrides(epOptions).get());
235233
})
236234
.get();
237235

core/src/test/java/com/google/errorprone/scanner/ScannerTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,22 @@ public void suppressionAnnotationIgnoredWithOptions() {
9595
.doTest();
9696
}
9797

98+
@Test
99+
public void dontRunPatchForDisabledChecks() {
100+
compilationHelper
101+
.addSourceLines(
102+
"Test.java",
103+
"import com.google.errorprone.scanner.ScannerTest.Foo;",
104+
"class Test {",
105+
" Foo foo;",
106+
"}")
107+
.setArgs(
108+
"-XepPatchLocation:IN_PLACE",
109+
"-XepPatchChecks:ShouldNotUseFoo",
110+
"-Xep:ShouldNotUseFoo:OFF")
111+
.doTest();
112+
}
113+
98114
@OkToUseFoo // Foo can use itself. But this shouldn't suppress errors on *usages* of Foo.
99115
public static final class Foo<T> {}
100116

0 commit comments

Comments
 (0)