Skip to content

Commit 347e962

Browse files
Anmol202005rdiachenko
authored andcommitted
Issue #98: Fixed FinalLocalVariable recipe bug
1 parent e6538c1 commit 347e962

File tree

5 files changed

+78
-1
lines changed

5 files changed

+78
-1
lines changed

src/main/java/org/checkstyle/autofix/recipe/FinalLocalVariable.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ public J.VariableDeclarations visitVariableDeclarations(
8585
.getVariables().get(0);
8686
if (isAtViolationLocation(variable)) {
8787
final List<J.Modifier> modifiers = new ArrayList<>();
88-
modifiers.add(new J.Modifier(Tree.randomId(), Space.EMPTY,
88+
89+
final Space finalPrefix = declarations.getTypeExpression().getPrefix();
90+
91+
modifiers.add(new J.Modifier(Tree.randomId(), finalPrefix,
8992
Markers.EMPTY, null, J.Modifier.Type.Final, new ArrayList<>()));
9093
modifiers.addAll(declarations.getModifiers());
9194
declarations = declarations.withModifiers(modifiers)

src/test/java/org/checkstyle/autofix/recipe/FinalLocalVariableTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,9 @@ void enhancedForLoop() throws Exception {
4646
verify("EnhancedForLoop");
4747
}
4848

49+
@Test
50+
void annotationDeclaration() throws Exception {
51+
verify("AnnotationDeclaration");
52+
}
53+
4954
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--- src/test/resources/org/checkstyle/autofix/recipe/finallocalvariable/annotationdeclaration/InputAnnotationDeclaration.java
2+
+++ src/test/resources/org/checkstyle/autofix/recipe/finallocalvariable/annotationdeclaration/OutputAnnotationDeclaration.java
3+
@@ -11,14 +11,14 @@
4+
5+
import javax.annotation.Nonnull;
6+
7+
-public class InputAnnotationDeclaration {
8+
+public class OutputAnnotationDeclaration {
9+
public void basicLocalVariables() {
10+
- @Nonnull String name = "John Doe"; // violation, "should be declared final"
11+
+ @Nonnull final String name = "John Doe";
12+
13+
@Nonnull
14+
- @Deprecated String gender = "Male"; // violation, "should be declared final"
15+
+ @Deprecated final String gender = "Male";
16+
17+
@Nonnull @Deprecated
18+
- String text = "Hello"; // violation, "should be declared final"
19+
+ final String text = "Hello";
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*xml
2+
<module name="Checker">
3+
<module name="TreeWalker">
4+
<module name="com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck"/>
5+
</module>
6+
</module>
7+
8+
*/
9+
10+
package org.checkstyle.autofix.recipe.finallocalvariable.annotationdeclaration;
11+
12+
import javax.annotation.Nonnull;
13+
14+
public class InputAnnotationDeclaration {
15+
public void basicLocalVariables() {
16+
@Nonnull String name = "John Doe"; // violation, "should be declared final"
17+
18+
@Nonnull
19+
@Deprecated String gender = "Male"; // violation, "should be declared final"
20+
21+
@Nonnull @Deprecated
22+
String text = "Hello"; // violation, "should be declared final"
23+
}
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*xml
2+
<module name="Checker">
3+
<module name="TreeWalker">
4+
<module name="com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck"/>
5+
</module>
6+
</module>
7+
8+
*/
9+
10+
package org.checkstyle.autofix.recipe.finallocalvariable.annotationdeclaration;
11+
12+
import javax.annotation.Nonnull;
13+
14+
public class OutputAnnotationDeclaration {
15+
public void basicLocalVariables() {
16+
@Nonnull final String name = "John Doe";
17+
18+
@Nonnull
19+
@Deprecated final String gender = "Male";
20+
21+
@Nonnull @Deprecated
22+
final String text = "Hello";
23+
}
24+
}

0 commit comments

Comments
 (0)