Skip to content

Commit ab3b22e

Browse files
SONARJAVA-3648 S2384: Skip assignment checks in enum constructors (#3450)
1 parent 5e70f93 commit ab3b22e

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

java-checks-test-sources/src/main/java/checks/MutableMembersUsageCheck.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,21 @@ private static ImmutableCollection<String> getImmutableCollection() {
298298
return null;
299299
}
300300
}
301+
302+
enum MyEnumWithAMutableMember {
303+
ELEMENT(new int[]{0, 1, 2});
304+
305+
private final int[] arg;
306+
307+
MyEnumWithAMutableMember(int[] arg) {
308+
this.arg = arg; // Compliant
309+
}
310+
}
311+
312+
class MyClassWithAMutableMember {
313+
private final int[] arg;
314+
315+
MyClassWithAMutableMember(int[] arg) {
316+
this.arg = arg; // Noncompliant
317+
}
318+
}

java-checks/src/main/java/org/sonar/java/checks/MutableMembersUsageCheck.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ public void scanFile(final JavaFileScannerContext context) {
7272

7373
@Override
7474
public void visitMethod(MethodTree tree) {
75+
if (tree.is(Tree.Kind.CONSTRUCTOR)) {
76+
Symbol.TypeSymbol enclosingClass = tree.symbol().enclosingClass();
77+
if (enclosingClass.isEnum()) {
78+
return;
79+
}
80+
}
7581
ArrayList<Symbol> parameters = new ArrayList<>();
7682
for (VariableTree variableTree : tree.parameters()) {
7783
parameters.add(variableTree.symbol());

java-checks/src/main/resources/org/sonar/l10n/java/rules/java/S2384_java.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ <h2>Compliant Solution</h2>
5656
a.getStrings()[0] = "yellow"; // a.strings = {"first", "second"};
5757
}
5858
}
59-
6059
</pre>
6160
<h2>See</h2>
6261
<ul>

0 commit comments

Comments
 (0)