Why is this an issue?
Duplicated string literals make the process of refactoring complex and error-prone, as any change would need to be propagated on all
occurrences.
Exceptions
To prevent generating some false-positives, literals having less than 5 characters are excluded.
How to fix it
Instead, use constants to replace the duplicated string literals. Constants can be referenced from many places, but only need to be updated in a
single place.
Code examples
Noncompliant code example
With the default threshold of 3:
public void run() {
prepare("action1"); // Noncompliant - "action1" is duplicated 3 times
execute("action1");
release("action1");
}
@SuppressWarning("all") // Compliant - annotations are excluded
private void method1() { /* ... */ }
@SuppressWarning("all")
private void method2() { /* ... */ }
public String printInQuotes(String a, String b) {
return "'" + a + "'" + b + "'"; // Compliant - literal "'" has less than 5 characters and is excluded
}
Compliant solution
private static final String ACTION_1 = "action1"; // Compliant
public void run() {
prepare(ACTION_1); // Compliant
execute(ACTION_1);
release(ACTION_1);
}