 
                            ...
| Recommendation | Severity | Likelihood | Detectable | RepairableRemediation Cost | Priority | Level | 
|---|---|---|---|---|---|---|
| MSC01-C | Medium | Probable | No | MediumNo | P8P4 | L2L3 | 
Automated Detection
| Tool | Version | Checker | Description | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | missing-else switch-default | Partially checked | |||||||||||||
| Compass/ROSE | Can detect some violations of this recommendation. In particular, it flags switch statements that do not have a default clause. ROSE should detect "fake switches" as well (that is, a chain of    if (x > 0) {
	  /* ... */
  } else if (x < 0) {
    /* ... */
  } else if (x == 0) {
    /* ... */
  }
 | |||||||||||||||
| GCC | 
 | Can detect some violations of this recommendation when the  | ||||||||||||||
| Helix QAC | 
 | C2000, C2002, C2004 | ||||||||||||||
| Klocwork | 
 | LABELCWARN.EMPTY. | LABEL  | |||||||||||||
| LDRA tool suite | 
 | 48 S, 59 S | Fully implemented | |||||||||||||
| Parasoft C/C++test | 
 | CERT_C-MSC01-a | All 'if...else-if' constructs shall be terminated with an 'else' clause The final clause of a switch statement shall be the default clause | |||||||||||||
| PC-lint Plus | 
 | 474, 744, 787, 9013 | Partially supported | |||||||||||||
| Polyspace Bug Finder | 
 | Code does not execute Default case is missing and may be reached Code following control-flow statements | PRQA QA-C | |||||||||||||
| Include Page | PRQA QA-C_v | PRQA QA-C_v | Fully implemented2000, 2002, 2004 | Checks for missing case for switch condition (rule partially covered) | ||||||||||||
| PVS-Studio | 
 | V517, V533, V534, V535,V547, V556, V560, V577, V590, V600, V612, V695, V696, V719, V722, V747, V785, V786 | ||||||||||||||
| RuleChecker | 
 | missing-else switch-default | Partially checked | |||||||||||||
| Security Reviewer - Static Reviewer | 
 | CPP_44 | Fully implemented | |||||||||||||
| SonarQube C/C++ Plugin | 
 | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
...
| SEI CERT C++ Coding Standard | VOID MSC01-CPP. Strive for logical completeness | 
| CERT Oracle Secure Coding Standard for Java | MSC01MSC57-CJ. Strive for logical completeness | 
| ISO/IEC TS 17961 | Use of an implied default in a switch statement [swtchdflt] | 
| ISO/IEC TR 24772 | Switch Statements and Static Analysis [CLL] | 
...