Skip to content

Control flow statements should not be nested too deep (NestedStatements)

Type Scope Severity Activated
by default
Minutes
to fix
Tags
Code smell BSL
OS
Critical Yes 30 badpractice
brainoverload

Parameters

Name Type Description Default value
maxAllowedLevel Integer Max nested level 4

Description

Nested "If, "For", "For Each", "While" and "Try" operators are the key ingredients for creating so-called "spaghetti code".

Such code is hard for reading, refactoring and support.

Examples

Incorrect

If Something Then                  // Allowed - level = 1
  /* ... */
  If Some Then             // Allowed - level = 2
    /* ... */
    For Num = 0 To 10 Do          // Allowed - level = 3
      /* ... */
      If OneMoreCondition Then     // Acceptable - level = 4, limit is reached, not yet breached
        If SomethingElse Then        // Level = 5, Limit is breached
          /* ... */
        EndIf;
        Return;
      EndIf;
    EndDo;
  EndIf;
EndIf;

Sources

Snippets

Diagnostic ignorance in code

// BSLLS:NestedStatements-off
// BSLLS:NestedStatements-on

Parameter for config

"NestedStatements": {
    "maxAllowedLevel": 4
}