Details

    • Type: Language-Specification
    • Status: Active
    • Resolution: Unresolved
    • Labels:
      None
    • List of parameters:
      Hide

      Key: max
      Description: Maximum allowed control flow statement nesting depth.
      Default Value: 4
      Type: Integer

      Show
      Key: max Description: Maximum allowed control flow statement nesting depth. Default Value: 4 Type: Integer
    • Impact:
      Unknown 'null' severity
    • Likelihood:
      Unknown 'null' severity

      Description

      Nested IF...ELSE, WHILE and TRY...CATCH statements is 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 4:

      IF @flag1 = 1 -- Compliant - depth = 1
        BEGIN
          IF @flag2 = 2 -- Compliant - depth = 2
            BEGIN
              WHILE @var1 > 0  -- Compliant - depth = 3
                BEGIN
                  IF @flag3 = 3 -- Compliant - depth = 4, not exceeding the limit
                    BEGIN
                      IF @flag4 = 4 -- Noncompliant - depth = 5
                        BEGIN
                          IF @flag5 = 5 -- Depth = 6, exceeding the limit, but issues are only reported on depth = 5
                            BREAK
                        END
                    END
                  SET @var1 = @var1 - 1
                END
            END
        END
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              christophe.zurn Christophe Zurn
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: