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-3102

VB.NET: Control flow statements "If", "For", "For Each", "Do", "While", "Select" and "Try" should not be nested too deeply

    Details

    • Type: Language-Specification
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • List of parameters:
      • key = maximumNestingLevel
      • description = Maximum allowed control flow statement nesting depth.
      • default = 3
      • type = INTEGER
    • Impact:
      Unknown 'null' severity
    • Likelihood:
      Unknown 'null' severity

      Description

      Nested If, Select, For, For Each, While, Do, and Try statements are key ingredients 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 i = 0 to 10 ' Compliant - depth = 3, not exceeding the limit
            ' ...
            If condition4 ' Noncompliant - depth = 4 
              If condition5 ' Depth = 5, exceeding the limit, but issues are only reported on depth = 4
                ' ...
              End If
              Return
            End If
          Next
        End If
      End If
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              massimo.paladin Massimo PALADIN
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: