
* Modify rule s4144: Add exception for identical functions. * Update exception justification Co-authored-by: Tibor Blenessy <tibor.blenessy@sonarsource.com>
66 lines
1.3 KiB
Plaintext
66 lines
1.3 KiB
Plaintext
When two functions have the same implementation, either it was a mistake - something else was intended - or the duplication was intentional, but may be confusing to maintainers. In the latter case, the code should be refactored.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
[source,javascript]
|
|
----
|
|
function calculateCode() {
|
|
doTheThing();
|
|
doOtherThing();
|
|
return code;
|
|
}
|
|
|
|
function getName() { // Noncompliant
|
|
doTheThing();
|
|
doOtherThing();
|
|
return code;
|
|
}
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
[source,javascript]
|
|
----
|
|
function calculateCode() {
|
|
doTheThing();
|
|
doOtherThing();
|
|
return code;
|
|
}
|
|
|
|
function getName() {
|
|
return calculateCode();
|
|
}
|
|
----
|
|
|
|
== Exceptions
|
|
|
|
* Functions with fewer than 3 lines are ignored.
|
|
|
|
* This rule does not apply to function expressions and arrow functions because they don't have explicit names and are often used in a way where refactoring is not applicable.
|
|
|
|
[source,javascript]
|
|
----
|
|
list.map((item) => ({
|
|
name: item.name,
|
|
address: item.address,
|
|
country: item.country
|
|
}));
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::../message.adoc[]
|
|
|
|
include::../highlighting.adoc[]
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
include::../comments-and-links.adoc[]
|
|
endif::env-github,rspecator-view[]
|