Duplicated string literals make the process of refactoring complex and error-prone, as any change would need to be propagated on all occurrences.
To prevent generating some false-positives, literals having less than 10 characters are excluded as well as literals matching /^\w*$/.
The following patterns are also excluded based on AST context rather than string content:
import x from 'path')require() calls'use strict';)The ignoreStrings parameter is additive to these built-in exceptions, allowing you to specify additional strings to ignore via comma-separated values.
Use constants to replace the duplicated string literals. Constants can be referenced from many places, but only need to be updated in a single place.
With the default threshold of 3:
function run() {
prepare("action_to_launch"); // Noncompliant - "action_to_launch" is duplicated 3 times
execute("action_to_launch");
release("action_to_launch");
}
function printInQuotes(a, b) {
console.log("'" + a + "'" + b + "'"); // Compliant - literal "'" has less than 10 characters and is excluded
}
var ACTION_1 = "action_to_launch";
function run() {
prepare(ACTION_1); // Compliant
execute(ACTION_1);
release(ACTION_1);
}