Why is this an issue?
Nested if
, for
, while
, do while
and switch
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 3:
if (condition1) { // Compliant - depth = 1
/* ... */
if (condition2) { // Compliant - depth = 2
/* ... */
for(int i = 0; i < 10; i++) { // 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
/* ... */
}
return;
}
}
}
}