Uploaded image for project: 'Rules Repository'
  1. Rules Repository
  2. RSPEC-134 Control flow statements "if", "for", "while", "switch" and "try" should not be nested too deeply
  3. RSPEC-2489

Swift: Control flow statements "if", "for", "for in", "while", "do while" and "switch" should not be nested too deeply

    Details

    • Type: Language-Specification
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • Message:
      Refactor this code to not nest more than {} "if", "for", "for in", "while", "do while" and "switch" statements.
    • Impact:
      Unknown 'null' severity
    • Likelihood:
      Unknown 'null' severity

      Description

      Nested if, for, for in, while, do while and switch statements are a key ingredient for making what's known as "Spaghetti code".
      Such code is hard to read, refactor and therefore maintain.

      Noncompliant Code Example

      With the default threshold of 3:

        if condition1 {                  // Compliant - depth = 1
          /* ... */
          if condition2 {                // Compliant - depth = 2
            /* ... */
            for var i = 0; i < 10; i++ {  // Compliant - depth = 3, not exceeding the limit
              /* ... */
              if condition4 {            // Non-Compliant - depth = 4
                if condition5 {          // Depth = 5, exceeding the limit, but issues are only reported on depth = 4
                  /* ... */
                }
              }
            }
          }
        }
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                ann.campbell.2 Ann Campbell
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: