In switch ‘default’ clauses should be last

Why you should care

Switch can contain a default clause for various reasons: to handle unexpected values, to show that all the cases were properly considered.

For code readability purpose, to help a developer to quickly find the default behavior of a switch statement, it is recommended to put the default clause at the end of the switch statement. This rule raises an issue if the default clause is not the last one of the switch’s cases.

How we detect

CAST Highlight counts one occurrence each time the default clause of a switch in not in last position.

Bad Code 

switch (param) {
default: // default clause should be the last one
error();
break;
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
}

Good Code 

switch (param) {
case 0:
doSomething();
break;
case 1:
doSomethingElse();
break;
default:
error();
break;
}

References

MISRA C++:2008, 6-4-6 – The final clause of a switch statement shall be the default-clause
MISRA C:2012, 16.5 – A default label shall appear as either the first or the last switch label of a switch statement
5362

About CAST and Highlight’s Code Insights

Over the last 25 years, CAST has leveraged unique knowledge on software quality measurement by analyzing thousands of applications and billions of lines of code. Based on this experience and community standards on programming best practices, Highlight implements hundreds of code insights across 15+ technologies to calculate health factors of a software.