From 9ed2b48c07267dd016755b17b75f4a650ec16c26 Mon Sep 17 00:00:00 2001 From: Tomasz Tylenda Date: Fri, 20 Jun 2025 15:26:26 +0200 Subject: [PATCH] Modify S3024: the rule applies only inside loops --- rules/S3024/java/rule.adoc | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/rules/S3024/java/rule.adoc b/rules/S3024/java/rule.adoc index 4a5761976de..858867d2880 100644 --- a/rules/S3024/java/rule.adoc +++ b/rules/S3024/java/rule.adoc @@ -5,18 +5,14 @@ Using ``++String++`` concatenation within ``++StringBuilder.append++`` defeats t If you concatenate only a few strings, use direct ``++String++`` concatenation. Otherwise, replace ``++String++`` concatenation with calls to ``++append++``. +This rule applies to ++String++ concatenations performed repeatedly, inside loops. In such scenarios, the performance penalty associated with inefficient ++StringBuilder.append++ usage can multiply significantly. + === Noncompliant code example [source,java,diff-id=1,diff-type=noncompliant] ---- StringBuilder sb = new StringBuilder(); -String s = sb.append("foo is: " + getFoo()).toString(); // Noncompliant ----- - -[source,java,diff-id=2,diff-type=noncompliant] ----- -StringBuilder sb = new StringBuilder(); for (String name : names) { sb.append("Hello : " + name); // Noncompliant } @@ -27,11 +23,6 @@ for (String name : names) { [source,java,diff-id=1,diff-type=compliant] ---- -String s = "foo is: " + getFoo(); ----- - -[source,java,diff-id=2,diff-type=compliant] ----- StringBuilder sb = new StringBuilder(); for (String name : names) { sb.append("Hello : ").append(name);