Details
-
Type:
Code Smell Detection
-
Status: Active
-
Resolution: Unresolved
-
Labels:
-
Message:Refactor this function to always return the same type.
-
Highlighting:
-
Default Severity:Major
-
Impact:Low
-
Likelihood:High
-
Default Quality Profiles:Sonar way, Sonar way recommended
-
Covered Languages:JavaScript
-
Remediation Function:Constant/Issue
-
Constant Cost:20min
-
Analysis Scope:Main Sources, Test Sources
Description
Unlike strongly typed languages, JavaScript does not enforce a return type on a function. This means that different paths through a function can return different types of values, which can be very confusing to the user and significantly harder to maintain.
Noncompliant Code Example
function foo(a) { // Noncompliant if (a === 1) { return true; } return 3; }
Compliant Solution
function foo(a) { if (a === 1) { return true; } return false; }
Exceptions
Functions returning this are ignored.
function foo() { // ... return this; }
Functions returning expressions having type any are ignored.