diff --git a/check_api/src/main/java/com/google/errorprone/bugpatterns/BugChecker.java b/check_api/src/main/java/com/google/errorprone/bugpatterns/BugChecker.java index 84fee1a7e64..0c2dd6e3fc9 100644 --- a/check_api/src/main/java/com/google/errorprone/bugpatterns/BugChecker.java +++ b/check_api/src/main/java/com/google/errorprone/bugpatterns/BugChecker.java @@ -641,6 +641,11 @@ public R scan(TreePath treePath, P param) { } private boolean suppressed(Tree tree) { + boolean ignoreSuppressions = state.errorProneOptions().isIgnoreSuppressionAnnotations(); + if (ignoreSuppressions) { + return false; + } + boolean isSuppressible = tree instanceof ClassTree || tree instanceof MethodTree || tree instanceof VariableTree; return isSuppressible && isSuppressed(tree, state); diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/BugCheckerTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/BugCheckerTest.java index fdb184d2572..c8eb5983e02 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/BugCheckerTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/BugCheckerTest.java @@ -217,6 +217,26 @@ String s(Runnable r) { .doTest(); } + @Test + public void suppressibleTreePathScanner_respectsIgnoreSuppressionAnnotationsFlag() { + CompilationTestHelper.newInstance(SuppressibleTreePathScannerCheck.class, getClass()) + .setArgs("-XepIgnoreSuppressionAnnotations") + .addSourceLines( + "A.java", + """ + class A { + void m() { + // BUG: Diagnostic contains: + int unsuppressed; + @SuppressWarnings("foo") + // BUG: Diagnostic contains: + int suppressed; + } + } + """) + .doTest(); + } + @Test public void isSuppressed_disableWarningsInGeneratedCode() { CompilationTestHelper.newInstance(CustomSuppressibilityCheck.class, getClass())