Main Content

MISRA C:2023 Rule 16.1

R2026b

All switch statements shall be well-formed

Since R2024a

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 switch statement has a default label.

  • Every switch clause ends with an unconditional break statement.

  • The switch statement has at least two switch clauses.

  • The default label is either the first or the last switch label of the switch statement.

  • Switch labels appear at the outermost level of the switch body.

  • A break statement in a switch clause is the last statement of the clause.

  • No statement appears before the first switch label.

  • The child statement of the switch statement 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 switch statement 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_2023.R16_1

Version History

Introduced in R2024a


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.