Missing enum case in switch¶
ID: cpp/missing-case-in-switch
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- reliability
- correctness
- external/cwe/cwe-478
Query suites:
- cpp-security-and-quality.qls
Click to see the query in the CodeQL repository
This rule finds switch
statements that switch on values of an enumeration type but do not provide cases for all the enumeration constants or a default case. This is an indication that there may be cases unhandled by the switch
statement.
Recommendation¶
Provide a case for every enumeration constant, or introduce a default
case if several constants should be treated the same way.
Example¶
typedef enum {
RED,
ORANGE,
YELLOW,
GREEN,
BLUE,
INDIGO,
VIOLET
} colors;
int f(colors c) {
switch (c) {
case RED:
//...
case GREEN:
//...
case BLUE:
//...
//wrong: does not use all enum values, and has no default
}
switch(c) {
case RED:
//...
case GREEN:
//...
default:
//correct: does not use all enum values, but has a default
}
}
References¶
Tutorialspoint - The C++ Programming Language: C++ switch statement
MSDN Library: switch statement (C++)
M. Henricson and E. Nyquist, Industrial Strength C++, Chapter 4: Control Flow, Rec 4.5. Prentice Hall PTR, 1997 (available online).
Common Weakness Enumeration: CWE-478.