Skip to content

Commit 7465ef8

Browse files
oxkitsuneError Prone Team
authored and
Error Prone Team
committed
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 4d502e0 PiperOrigin-RevId: 552531114
1 parent bbf7cd9 commit 7465ef8

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

+2-4
Original file line numberDiff line numberDiff line change
@@ -227,14 +227,12 @@ static ErrorProneAnalyzer createAnalyzer(
227227
.customRefactorer()
228228
.or(
229229
() -> {
230-
ScannerSupplier toUse =
231-
ErrorPronePlugins.loadPlugins(scannerSupplier, context)
232-
.applyOverrides(epOptions);
230+
ScannerSupplier toUse = ErrorPronePlugins.loadPlugins(scannerSupplier, context);
233231
ImmutableSet<String> namedCheckers = epOptions.patchingOptions().namedCheckers();
234232
if (!namedCheckers.isEmpty()) {
235233
toUse = toUse.filter(bci -> namedCheckers.contains(bci.canonicalName()));
236234
}
237-
return ErrorProneScannerTransformer.create(toUse.get());
235+
return ErrorProneScannerTransformer.create(toUse.applyOverrides(epOptions).get());
238236
})
239237
.get();
240238

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

+16
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)