No trivial switch statements¶
ID: cpp/trivial-switch
Kind: problem
Severity: recommendation
Precision: high
Tags:
   - maintainability
   - readability
   - external/jsf
Query suites:
   - cpp-security-and-quality.qls
Click to see the query in the CodeQL repository
The following forms of switch statement are considered trivial:
- No cases at all.
 - Just a default case.
 - Just one non-default case.
 - A default case and one non-default case.
 
Recommendation¶
Either the switch statement should be replaced with a simpler control flow structure, or it should be extended to handle more cases. Each trivial form has a different replacement:
- If there are no cases, the 
switchstatement can be removed. - If there is just one default case, the 
switchkeyword, thedefaultkeyword, and the subsequent colon can all be removed. - If there is just one non-default case, the 
switchstatement can be turned into anifstatement. - If there is one default case and one non-default case, the 
switchstatement can be turned into anif/elsestatement. 
Example¶
int f() {
	int val = 0;
	switch(val) { //wrong, use an if instead
	case 0:
		//...
	default:
		//...
	}
	switch(val) { //correct, has 2 cases and a default
	case 0:
		//...
	case 1:
		//...
	default:
		//...
	}
}
References¶
- AV Rule 196, Joint Strike Fighter Air Vehicle C++ Coding Standards. Lockheed Martin Corporation, 2005.
 

