>
>
>
V2525. MISRA. Every 'switch' statement …


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-16.6
  • MISRA-CPP-6.4.8