Why is this an issue?
Duplicated string literals make the process of refactoring error-prone, since you must be sure to update all occurrences.
On the other hand, constants can be referenced from many places, but only need to be updated in a single place.
Noncompliant code example
With the default threshold of 3:
public def run() {
prepare("action random1") // Noncompliant - "action random1" is duplicated 3 times
execute("action random1")
release("action random1")
}
Compliant solution
public def run() {
val action = "action random1"
prepare(action)
execute(action)
release(action)
}
Exceptions
To prevent generating some false-positives, literals having 5 or less characters are excluded as well as literals containing only letters, digits
and '_'.