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:

def foo()
  prepare('action random1')    #Noncompliant - "action random1" is duplicated 3 times
  execute('action random1')
  release('action random1')
end

Compliant solution

def foo()
  action1 = 'action random1'
  prepare(action1)
  execute(action1)
  release(action1)
end

Exceptions

To prevent generating some false-positives, literals having 5 or less characters are excluded as well as literals containing only letters, digits and '_'.