From 6acbed013886945840ed25558141ff2936b4874e Mon Sep 17 00:00:00 2001 From: asya-vorobeva Date: Wed, 28 Jan 2026 16:34:12 +0100 Subject: [PATCH 1/2] SONARJAVA-5340 FP on S1171 in anonymous classes --- .../checks/NonStaticClassInitializerCheckSample.java | 2 +- .../java/checks/NonStaticClassInitializerCheck.java | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) 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 74ab428f9ab..0fb101a8057 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 @@ -14,7 +14,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 fb19e9762c6..657d446c5f1 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); } } From f24923810683fa3e01942171d6928817d066b31e Mon Sep 17 00:00:00 2001 From: asya-vorobeva Date: Thu, 29 Jan 2026 11:39:19 +0100 Subject: [PATCH 2/2] Test update --- .../java/checks/NonStaticClassInitializerCheckSample.java | 5 +++++ 1 file changed, 5 insertions(+) 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 0fb101a8057..432bca1f8a4 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();