ID: cpp/integer-used-for-enum Kind: problem Security severity: Severity: warning Precision: medium Tags: - maintainability - readability - language-features - external/jsf Query suites: - cpp-security-and-quality.qls
Click to see the query in the CodeQL repository
This rule finds switch statements that use an integer instead of an enumeration. Enumerations are preferred when dealing with a limited number of choices as they makes it easier to see if a case has been left out.
Recommendation¶
Use an enumeration instead of an integer to represent a limited set of choices.
Example¶
typedef enum { CASE_VAL1, CASE_VAL2 } caseVals; void f() { int caseVal; //Wrong: switch statement uses an integer switch(caseVal) { case 1: //... case 0xFF: //... default: //... } //Correct: switch statement uses enum. It is easier to see if a case //has been left out, and that all cases are valid values caseVals caseVal2; switch (caseVal2) { case CASE_VAL1: //... case CASE_VAL2: //... default: } }
References¶
AV Rule 148, Joint Strike Fighter Air Vehicle C++ Coding Standards. Lockheed Martin Corporation, 2005.