...
Recommendation | Severity | Likelihood | Detectable | RepairableRemediation Cost | Priority | Level |
|---|---|---|---|---|---|---|
MSC01-C | Medium | Probable | No | NoMedium | 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 |
| CWARN.EMPTY. | LABEL LABEL | ||||||||||||||||
| LDRA tool suite |
| 48 S, 59 S | Fully implemented | ||||||||||||||||
| Parasoft C/C++test |
| MISRA2012CERT_C- | RULEMSC01- | 15_7, MISRA2004-15_3||||||||||||||||
| Polyspace Bug Finder | R2016a | Code does not execute Default case is missing and may be reached Code following control-flow statements | |||||||||||||||||
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 |
| Checks for missing case for switch condition (rule partially covered) | |||||||||||||||||
| PVS-Studio |
| PRQA QA-C | |||||||||||||||||
| Include Page | PRQA QA-C_v | PRQA QA-C_v | 0597 2000 | Fully implemented | PVS-Studio | 6.22 | 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 | MSC57-J. 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] |
...