MISRA C:2012 Rule 16.1
R2026bAll switch statements shall be well-formed
Description
All switch statements shall be well-formed1
Rationale
The syntax for switch statements in C is not particularly rigorous
and can allow complex, unstructured behavior. This rule and other
rules impose a simple consistent structure on the switch statement.
Polyspace Implementation
The rule checker shows a violation if a switch statement
violates one of the following:
The
switchstatement has adefaultlabel.Every switch clause ends with an unconditional
breakstatement.The
switchstatement has at least two switch clauses.The
defaultlabel is either the first or the last switch label of theswitchstatement.Switch labels appear at the outermost level of the
switchbody.A
breakstatement in a switch clause is the last statement of the clause.No statement appears before the first switch label.
The child statement of the
switchstatement is a compound statement.All switch clauses appear at the same level.
Switch clauses contain only switch labels and switch clauses, and no other code.
The
switchstatement contains only switch labels and switch clauses, and no other code.
Troubleshooting
If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Check Information
| Group: Switch Statements |
| Category: Required |
| AGC Category: Advisory |
PQL Name: std.misra_c_2012.R16_1 |
Version History
See Also
MISRA C:2012 Rule 15.3 | MISRA C:2012 Rule 16.2 | MISRA C:2012 Rule 16.3 | MISRA C:2012 Rule 16.4 | MISRA C:2012 Rule 16.5 | MISRA C:2012 Rule 16.6 | Check MISRA C:2012 (-misra3)
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C:2025
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.