From 4a71fa859ecf326559834ee3c6aff1766d31fd50 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Tue, 10 Jan 2023 11:02:54 -0800 Subject: [PATCH] Suppress UnnecessarilyVisible findings on Error Prone bugchecker constructors See https://github.com/google/error-prone/issues/3706#issuecomment-1377660092 PiperOrigin-RevId: 501041647 --- .../bugpatterns/UnnecessarilyVisible.java | 9 +++++++++ .../bugpatterns/UnnecessarilyVisibleTest.java | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyVisible.java b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyVisible.java index 77a60f328d7..b50981b1caf 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyVisible.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessarilyVisible.java @@ -26,6 +26,7 @@ import static com.google.errorprone.util.ASTHelpers.findSuperMethod; import static com.google.errorprone.util.ASTHelpers.getSymbol; import static com.google.errorprone.util.ASTHelpers.hasDirectAnnotationWithSimpleName; +import static com.google.errorprone.util.ASTHelpers.isSubtype; import com.google.common.collect.ImmutableSet; import com.google.errorprone.BugPattern; @@ -93,6 +94,14 @@ public Description matchMethod(MethodTree tree, VisitorState state) { if (badModifiers.isEmpty()) { return NO_MATCH; } + // TODO(b/263227221): Remove this once migration to guice is complete + if (symbol.isConstructor() + && isSubtype( + symbol.enclClass().asType(), + state.getTypeFromString("com.google.errorprone.bugpatterns.BugChecker"), + state)) { + return NO_MATCH; + } return buildDescription(tree) .addFix( removeModifiers(tree.getModifiers(), state, badModifiers) diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyVisibleTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyVisibleTest.java index 27844204590..8d3d0c9293b 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyVisibleTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/UnnecessarilyVisibleTest.java @@ -175,4 +175,18 @@ public void overridesPublicMethod_noFinding() { .expectUnchanged() .doTest(); } + + @Test + public void negativeBugchecker() { + compilationHelper + .addSourceLines( + "Test.java", + "import com.google.errorprone.bugpatterns.BugChecker;", + "import javax.inject.Inject;", + "class MyBugChecker extends BugChecker {", + " @Inject", + " public MyBugChecker() {}", + "}") + .doTest(); + } }