class A { static class Inner { public String s1; } void method() { String s = ""; Inner inner = new Inner(); int i = 0; for (; i++; i < 10) { s = i + " : " + s; // Noncompliant {{Use a StringBuilder instead.}} s += i;// Noncompliant {{Use a StringBuilder instead.}} inner.s1 = i + " : " + inner.s1; // Noncompliant {{Use a StringBuilder instead.}} } for (Object i : list) { s = i + " : " + s; // Noncompliant {{Use a StringBuilder instead.}} } do { s = i + " : " + s; // Noncompliant {{Use a StringBuilder instead.}} } while (i < 20); while (i < 20) { s = i + " : " + s; // Noncompliant {{Use a StringBuilder instead.}} inner.s1 = i + inner.s1 + " : "; // Noncompliant {{Use a StringBuilder instead.}} s = ((s + " : ")); // Noncompliant {{Use a StringBuilder instead.}} inner = new Inner(); i = i + 1; s = i + ":"; //Compliant inner.s1 = i + ":"; } s += "a" + "b"; s = s + "a" + "b"; for (int i = 0; i < 10; i++) { MyObject myObject = new MyObject(); myObject.stringProperty = "a" + "b"; //Compliant, var is local in the loop myObject.stringProperty += "a";//Compliant, var is local in the loop MyObject.newInstance().stringProperty = "a" + "b"; //Compliant MyObject.newInstance().stringProperty += "b"; // Noncompliant {{Use a StringBuilder instead.}} MyObject.newInstance().stringProperty = "b" + MyObject.newInstance().stringProperty; // Noncompliant {{Use a StringBuilder instead.}} } for (int i=0; i < array.length; i++) { array[i] = "a" + array[i]; // Compliant, it is an array access } } class MyObject { String stringProperty; static MyObject newInstance() { return new MyObject(); } } }