From d5b0c88c1346df1a8f83c805502af35d5ce9deaa Mon Sep 17 00:00:00 2001 From: "romain.birling" Date: Wed, 4 Feb 2026 11:40:23 +0100 Subject: [PATCH 1/2] Skip new block instantation for implicit classes --- .../main/java/checks/IndentationCheck_compactSource.java | 6 +++--- .../main/java/org/sonar/java/checks/IndentationCheck.java | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java b/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java index 086bb6f951..4c67666844 100644 --- a/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java +++ b/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java @@ -1,11 +1,11 @@ // SONARJAVA-6028: FPs ahead. Only the line with "Too much." should be noncompliant. -void main() { // Noncompliant - System.out.println("Just right."); // Noncompliant +void main() { + System.out.println("Just right."); if (true) { System.out.println("Too much."); // Noncompliant } } -class MyClass { // Noncompliant +class MyClass { } diff --git a/java-checks/src/main/java/org/sonar/java/checks/IndentationCheck.java b/java-checks/src/main/java/org/sonar/java/checks/IndentationCheck.java index 991725c5fb..a5330a8b08 100644 --- a/java-checks/src/main/java/org/sonar/java/checks/IndentationCheck.java +++ b/java-checks/src/main/java/org/sonar/java/checks/IndentationCheck.java @@ -82,7 +82,9 @@ public void visitClass(ClassTree tree) { excludeIssueAtLine = LineUtils.startLine(tree.openBraceToken()); expectedLevel = Position.startOf(tree.closeBraceToken()).columnOffset(); } - newBlock(); + if (!tree.is(Kind.IMPLICIT_CLASS)) { + newBlock(); + } checkIndentation(tree.members()); super.visitClass(tree); leaveNode(tree); From 21a61d4c62efc91f3c45127a53fc465287ed4432 Mon Sep 17 00:00:00 2001 From: "romain.birling" Date: Wed, 4 Feb 2026 14:15:41 +0100 Subject: [PATCH 2/2] Address Tomasz' comments, improve tests --- .../IndentationCheck_compactSource.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java b/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java index 4c67666844..8e7975a891 100644 --- a/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java +++ b/java-checks-test-sources/default/src/main/java/checks/IndentationCheck_compactSource.java @@ -1,5 +1,3 @@ -// SONARJAVA-6028: FPs ahead. Only the line with "Too much." should be noncompliant. - void main() { System.out.println("Just right."); if (true) { @@ -8,4 +6,24 @@ void main() { } class MyClass { + void myMethod() { + System.err.println("Error message"); + } + + static private class MyNestedClass { + private final static int VALUE = 42; + public float pi = 3.14f; + public String badlyIndentedField = "Oops"; // Noncompliant + public String secondBadlyIndentedField = "Oops x 2"; // Compliant, raised on previous line + + + void anotherMethod() { + System.out.println("Nested class output"); + } + } } + +int i = 0; + public String badlyIndentedField = "Oops"; // Noncompliant + public String secondBadlyIndentedField = "Oops x 2"; // Compliant, raised on previous line +int j = 0;