== Why is this an issue?

include::../description.adoc[]

=== Exceptions

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

== How to fix it

include::../howtofix.adoc[]

=== Code examples

==== Noncompliant code example

[source,apex,diff-id=1,diff-type=noncompliant]
----
class A {
    void doSomething(String msg) {
        System.debug('string literal'); // Noncompliant - 'string literal' is duplicated 3 times
        System.assertEquals(msg, 'string literal');
        msg = 'string literal';
    }

    void doSomethingElse(String msg) {
        System.debug('a'); // Compliant - literal 'a' has less than 5 characters and is excluded
        System.assertEquals(msg, 'a');
        msg = 'a';
    }
}
----

==== Compliant solution

[source,apex,diff-id=1,diff-type=compliant]
----
class A {
    static final String STRING_CONST = 'string literal';

    void doSomething(String msg) {
        System.debug(STRING_CONST); // Compliant
        System.assertEquals(msg, STRING_CONST);
        msg = STRING_CONST;
    }
}
----


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

include::../parameters.adoc[]

include::../highlighting.adoc[]

'''

endif::env-github,rspecator-view[]
