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.
With the default threshold of 3:
def foo()
prepare('action random1') #Noncompliant - "action random1" is duplicated 3 times
execute('action random1')
release('action random1')
end
def foo() action1 = 'action random1' prepare(action1) execute(action1) release(action1) end
To prevent generating some false-positives, literals having 5 or less characters are excluded as well as literals containing only letters, digits and '_'.