These rules deal with different problems that can occur with String manipulation.
Code containing duplicate String literals can usually be improved by declaring the String as a constant field.
Here's an example of code that would trigger this rule:
public class Foo {
private void bar() {
buz("Howdy");
buz("Howdy");
buz("Howdy");
buz("Howdy");
}
private void buz(String x) {}
}
Avoid instantiating String objects; this is usually unnecessary.
This rule is defined by the following XPath expression:
//AllocationExpression[Name/@Image='String'][count(.//Expression) < 2][not(ArrayDimsAndInits)]
Here's an example of code that would trigger this rule:
public class Foo {
private String bar = new String("bar"); // just do a String bar = "bar";
}
Avoid calling toString() on String objects; this is unnecessary
Here's an example of code that would trigger this rule:
public class Foo {
private String baz() {
String bar = "howdy";
return bar.toString();
}
}