diff --git a/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/StrictUnusedVariable.java b/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/StrictUnusedVariable.java index 18dcecb50..e2b1013d9 100644 --- a/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/StrictUnusedVariable.java +++ b/baseline-error-prone/src/main/java/com/palantir/baseline/errorprone/StrictUnusedVariable.java @@ -115,7 +115,7 @@ severity = WARNING, documentSuppression = false) public final class StrictUnusedVariable extends BugChecker implements BugChecker.CompilationUnitTreeMatcher { - private static final ImmutableSet EXEMPT_PREFIXES = ImmutableSet.of("unused", "_"); + private static final ImmutableSet EXEMPT_PREFIXES = ImmutableSet.of("_"); /** * The set of annotation full names which exempt annotated element from being reported as unused. @@ -578,7 +578,13 @@ private void renameByIndex(List trees) { // TODO(b/118437729): handle bogus source positions in enum declarations return; } - fix.replace(startPos, endPos, "_" + tree.getName()); + if (tree.getName().toString().startsWith("unused")) { + fix.replace(startPos, endPos, "_" + + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, + tree.getName().toString().substring("unused".length()))); + } else { + fix.replace(startPos, endPos, "_" + tree.getName()); + } } }.scan(state.getPath().getCompilationUnit(), null); } diff --git a/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/StrictUnusedVariableTest.java b/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/StrictUnusedVariableTest.java index 7031dbaa5..1ad8d856d 100644 --- a/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/StrictUnusedVariableTest.java +++ b/baseline-error-prone/src/test/java/com/palantir/baseline/errorprone/StrictUnusedVariableTest.java @@ -89,6 +89,24 @@ public void handles_enums() { "}").doTest(); } + @Test + public void renames_previous_suppression() { + refactoringTestHelper + .addInputLines( + "Test.java", + "class Test {", + " public void publicMethod(String unusedValue, String unusedValue2) { }", + " public void varArgs(String unusedValue, String... unusedValue2) { }", + "}") + .addOutputLines( + "Test.java", + "class Test {", + " public void publicMethod(String _value, String _value2) { }", + " public void varArgs(String _value, String... _value2) { }", + "}") + .doTest(TestMode.TEXT_MATCH); + } + @Test public void renames_unused_param() { refactoringTestHelper @@ -134,11 +152,11 @@ public void fixes_suppressed_but_used_variables() { "Test.java", "class Test {", " private static int _field = 1;", - " public static void privateMethod(int _value, int unusedValue2) {", + " public static void privateMethod(int _value, int _value2) {", " int _value3 = 1;", " _value3 = 2;", " System.out.println(_value);", - " System.out.println(unusedValue2 + _value3 + _field);", + " System.out.println(_value2 + _value3 + _field);", " }", "}") .addOutputLines( diff --git a/changelog/@unreleased/pr-854.v2.yml b/changelog/@unreleased/pr-854.v2.yml new file mode 100644 index 000000000..a419c7e0c --- /dev/null +++ b/changelog/@unreleased/pr-854.v2.yml @@ -0,0 +1,5 @@ +type: improvement +improvement: + description: StrictUnusedVariable can only be suppressed with `_` prefix + links: + - https://github.com/palantir/gradle-baseline/pull/854