Message ID | alpine.DEB.2.22.394.2403141449510.853156@ubuntu-linux-20-04-desktop (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] docs/misra: add Rule 16.4 | expand |
Hi Stefano, > On 14 Mar 2024, at 22:50, Stefano Stabellini <sstabellini@kernel.org> wrote: > > > Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> Acked-by: Bertrand Marquis <bertrand.marquis@arm.com> Cheers Bertrand > --- > Changes in v2: > - mention -Werror > - change the position of the in-code comment in the example > - use "notifier pattern" in the example > - clarify it is only an example > --- > docs/misra/rules.rst | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst > index 1e134ccebc..5c84091e45 100644 > --- a/docs/misra/rules.rst > +++ b/docs/misra/rules.rst > @@ -478,6 +478,31 @@ maintainers if you want to suggest a change. > - In addition to break, also other unconditional flow control statements > such as continue, return, goto are allowed. > > + * - `Rule 16.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_04.c>`_ > + - Required > + - Every switch statement shall have a default label > + - Switch statements with enums as controlling expression don't need > + a default label as gcc -Wall enables -Wswitch which warns (and > + breaks the build as we use -Werror) if one of the enum labels is > + missing from the switch. > + > + Switch statements with integer types as controlling expression > + should have a default label: > + > + - if the switch is expected to handle all possible cases > + explicitly, then a default label shall be added to handle > + unexpected error conditions, using BUG(), ASSERT(), WARN(), > + domain_crash(), or other appropriate methods; > + > + - if the switch is expected to handle a subset of all possible > + cases, then an empty default label shall be added with an > + in-code comment on top of the default label with a reason and > + when possible a more detailed explanation. Example:: > + > + default: > + /* Notifier pattern */ > + break; > + > * - `Rule 16.2 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_02.c>`_ > - Required > - A switch label shall only be used when the most closely-enclosing > -- > 2.25.1 >
diff --git a/docs/misra/rules.rst b/docs/misra/rules.rst index 1e134ccebc..5c84091e45 100644 --- a/docs/misra/rules.rst +++ b/docs/misra/rules.rst @@ -478,6 +478,31 @@ maintainers if you want to suggest a change. - In addition to break, also other unconditional flow control statements such as continue, return, goto are allowed. + * - `Rule 16.4 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_04.c>`_ + - Required + - Every switch statement shall have a default label + - Switch statements with enums as controlling expression don't need + a default label as gcc -Wall enables -Wswitch which warns (and + breaks the build as we use -Werror) if one of the enum labels is + missing from the switch. + + Switch statements with integer types as controlling expression + should have a default label: + + - if the switch is expected to handle all possible cases + explicitly, then a default label shall be added to handle + unexpected error conditions, using BUG(), ASSERT(), WARN(), + domain_crash(), or other appropriate methods; + + - if the switch is expected to handle a subset of all possible + cases, then an empty default label shall be added with an + in-code comment on top of the default label with a reason and + when possible a more detailed explanation. Example:: + + default: + /* Notifier pattern */ + break; + * - `Rule 16.2 <https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012/Example-Suite/-/blob/master/R_16_02.c>`_ - Required - A switch label shall only be used when the most closely-enclosing
Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com> --- Changes in v2: - mention -Werror - change the position of the in-code comment in the example - use "notifier pattern" in the example - clarify it is only an example --- docs/misra/rules.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)