diff --git a/java-checks-test-sources/default/src/main/java/checks/NonStaticClassInitializerCheckSample.java b/java-checks-test-sources/default/src/main/java/checks/NonStaticClassInitializerCheckSample.java index 74ab428f9a..432bca1f8a 100644 --- a/java-checks-test-sources/default/src/main/java/checks/NonStaticClassInitializerCheckSample.java +++ b/java-checks-test-sources/default/src/main/java/checks/NonStaticClassInitializerCheckSample.java @@ -4,6 +4,11 @@ class NonStaticClassInitializerCheckSample { static { } + static class Inner { + { // Noncompliant + } + } + { // Noncompliant {{Move the contents of this initializer to a standard constructor or to field initializers.}} //^ System.out.println(); @@ -14,7 +19,7 @@ public NonStaticClassInitializerCheckSample() { new Runnable() { - { // Noncompliant + { System.out.println(); } diff --git a/java-checks/src/main/java/org/sonar/java/checks/NonStaticClassInitializerCheck.java b/java-checks/src/main/java/org/sonar/java/checks/NonStaticClassInitializerCheck.java index fb19e9762c..657d446c5f 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/NonStaticClassInitializerCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/NonStaticClassInitializerCheck.java @@ -34,6 +34,13 @@ public List nodesToVisit() { @Override public void visitNode(Tree tree) { - reportIssue(((BlockTree) tree).openBraceToken(), "Move the contents of this initializer to a standard constructor or to field initializers."); + if (!isMemberOfAnonymousClass(tree)) { + reportIssue(((BlockTree) tree).openBraceToken(), "Move the contents of this initializer to a standard constructor or to field initializers."); + } + } + + private static boolean isMemberOfAnonymousClass(Tree tree) { + Tree parent = tree.parent(); + return parent.is(Tree.Kind.CLASS) && parent.parent() != null && parent.parent().is(Tree.Kind.NEW_CLASS); } }