Tool | Version | Checker | Description |
---|
Astrée | | unreachable-code statement-sideeffect | Partially checked |
CodeSonar | | DIAG.UNEX.* LANG.STRUCT.EBS LANG.STRUCT.RC MISC.NOEFFECT LANG.STRUCT.UC LANG.STRUCT.UA LANG.STRUCT.UULABEL LANG.STRUCT.UUMACRO LANG.STRUCT.UUPARAM LANG.STRUCT.UUTAG LANG.STRUCT.UUTYPE | Code not exercised by analysis Empty branch statement checks Redundant condition Function call has no effect Unreachable code checks Useless assignment Unused Label Unused Macro Unused Parameter Unused Tag Unused Type |
Coverity | | NO_EFFECT
DEADCODE UNREACHABLE | Finds statements or expressions that do not accomplish anything or statements that perform an unintended action. Can detect the specific instance where code can never be reached because of a logical contradiction or a dead "default" in switch statement Can detect the instances where code block is unreachable because of the syntactic structure of the code |
ECLAIR | | CC2.MSC12
| Partially implemented |
GCC | 3.0 | -Wunused-value
-Wunused-parameter
| Options detect unused local variables, nonconstant static variables and unused function parameters, or unreachable code respectively. |
Helix QAC | | C3110, C3112, C3307, C3404, C3426, C3427 |
|
Klocwork | | CWARN.NOEFFECT.SELF_ASSIGN CWARN.NOEFFECT.UCMP.GE CWARN.NOEFFECT.UCMP.GE.MACRO CWARN.NOEFFECT.UCMP.LT CWARN.NOEFFECT.UCMP.LT.MACRO CWARN.NULLCHECK.FUNCNAME EFFECT INVARIANT_CONDITION.UNREACH LA_UNUSED MISRA.STMT.NO_EFFECT UNREACH.GEN UNREACH.RETURN UNREACH.SIZEOF VA_UNUSED.GEN VA_UNUSED.INIT |
|
LDRA tool suite | |
8 D, 65 D, 105 D, I J, 139 S, 140 S, 57 S | Partially implemented |
Parasoft C/C++test | | CERT_C-MSC12-a CERT_C-MSC12-b CERT_C-MSC12-c CERT_C-MSC12-d CERT_C-MSC12-e CERT_C-MSC12-f CERT_C-MSC12-g CERT_C-MSC12-h | There shall be no unreachable code in "else" block There shall be no unreachable code after 'return', 'break', 'continue', and 'goto' statements There shall be no unreachable code in "if/else/while/for" block There shall be no unreachable code in switch statement There shall be no unreachable code in 'for' loop There shall be no unreachable code after 'if' or 'switch' statement There shall be no unreachable code after "if" or "switch" statement inside while/for/do...while loop Avoid switch with unreachable branches |
PC-lint Plus | Include Page |
---|
| PC-lint Plus_V |
---|
| PC-lint Plus_V |
---|
|
| 438, 474, 505, 522, 523, 527, 528, 529, 563, 612, 714, 715, 719, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 768, 769, 774, 827, 838, 1972 | Fully supported |
Polyspace Bug Finder | Include Page |
---|
| Polyspace Bug Finder_V |
---|
| Polyspace Bug Finder_V |
---|
|
| CERT C: Rec. MSC12-C
| Checks for: - Unreachable code
- Dead code
Rec. partially covered. |
PRQA QA-C | | 3110, 3112, 3307, 3404, 3426, 3427 | Partially implemented |
RuleChecker | Include Page |
---|
| RuleChecker_V |
---|
| RuleChecker_V |
---|
|
| statement-sideeffect | Partially checked |
SonarQube C/C++ Plugin | Include Page |
---|
| SonarQube C/C++ Plugin_V |
---|
| SonarQube C/C++ Plugin_V |
---|
|
| S1764, S2589, S2583, S1116, S1172, S1763, S1862, S1065, S1656, S2754, S1751 |
|
Splint | | -standard | The default mode checks for unreachable code. |
PVS-Studio | | V551, V606, V649, V779 |
|