This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
This diagnostic varies for C and C++. In the C language, every 'switch' statement should have at least two non-empty labels, such as 'case' or 'default'. In the C++ language, every 'switch' statement should have at least one non-empty label 'case'.
'switch' constructs that do not meet these requirements are redundant and may indicate a programming mistake.
Example 1:
void example_1(int param) { switch(param) { case 0: default: Func(); break; } }
This 'switch' is redundant and meaningless. No matter the value of 'param', only the body of the 'default' label will be executed.
The following example does not trigger the warning:
void example_2(int param) { switch(param) { case 0: DoSmth1(); break; case 1: DoSmth2(); break; .... default: Func(); break; } }
Here is an example where the analyzer issues the warning only when using a C compiler:
void example_3(int param) { switch(param) { case 10: case 42: DoMath(); break; } }
This diagnostic is classified as:
|