# V2525. MISRA. Every 'switch' statement should contain non-empty switch-clauses.

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:

MISRA-C-2012-16.6 MISRA-C-2023-16.6 MISRA-CPP-2008-6.4.8