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:

func run() {
	prepare("This should be a constant")  // Noncompliant; 'foo' is duplicated 3 times
	execute("This should be a constant")
	release("This should be a constant")
}

Compliant Solution

const ACTION = "This should be a constant"

func run() {
	prepare(ACTION)
	execute(ACTION)
	release(ACTION)
}

Exceptions

To prevent generating some false-positives, literals having less than 5 characters are excluded.