The dangling else
problem appears when nested if
/else
statements are written without curly braces. In
this case, else
is associated with the nearest if
but that is not always obvious and sometimes the indentation can also
be misleading.
This rules reports else
statements that are difficult to understand, because they are inside nested if
statements without
curly braces.
Adding curly braces can generally make the code clearer (see rule S121 ), and in this situation of dangling else
, it really
clarifies the intention of the code.
Noncompliant code example
if (a)
if (b)
d++;
else // Noncompliant, is the "else" associated with "if(a)" or "if (b)"? (the answer is "if(b)")
e++;
Compliant solution
if (a) {
if (b) {
d++;
}
} else { // Compliant, there is no doubt the "else" is associated with "if(a)"
e++;
}