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:

function run() {
  prepare('this is a duplicate'); // Non-Compliant - 'this is a duplicate' is duplicated 3 times
  execute('this is a duplicate');
  release('this is a duplicate');
}

Compliant Solution

MESSAGE = 'this is a duplicate';

function run() {
  prepare(MESSAGE);
  execute(MESSAGE);
  release(MESSAGE);
}

Exceptions

No issue will be raised on:

$severity = $request->getParam('severity-score');{code}