Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-3796

Callbacks of array methods should have return statements

    XMLWordPrintable

    Details

    • Type: Bug Detection
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • Message:
      Add a "return" statement to this callback.
    • Default Severity:
      Blocker
    • Impact:
      High
    • Likelihood:
      High
    • Default Quality Profiles:
      Sonar way, Sonar way recommended
    • Covered Languages:
      JavaScript
    • Remediation Function:
      Constant/Issue
    • Constant Cost:
      5min
    • Analysis Scope:
      Main Sources, Test Sources
    • ESLint:
      array-callback-return

      Description

      Arrays in JavaScript have several methods for filtering, mapping, or folding that require a callback. Not having a return statement in such a callback function is most likely a mistake, because processing of the array uses the return value of the callback. If there is no return, callback will implicitly return undefined, which will likely fail.

      This rule applies for the following methods of an array:

      • Array.from
      • Array.prototype.every
      • Array.prototype.filter
      • Array.prototype.find
      • Array.prototype.findIndex
      • Array.prototype.map
      • Array.prototype.reduce
      • Array.prototype.reduceRight
      • Array.prototype.some
      • Array.prototype.sort

      Noncompliant Code Example

      let arr = ["a", "b", "c"];
      let merged = arr.reduce(function(a, b) {
        a.concat(b);
      }); // Noncompliant: No return statement, will result in TypeError 
      

      Compliant Solution

      let arr = ["a", "b", "c"];
      let merged = arr.reduce(function(a, b) {
        return a.concat(b);
      }); // merged === "abc"
      

        Attachments

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            jeanchristophe.collet Jean-Christophe Collet (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated: