Tool | Version | Checker | Description |
---|
Astrée | | return-reference-local dangling_pointer_use
| Partially checked |
Clang | | -Wdangling-initializer-list | Catches some lifetime issues related to incorrect use of std::initializer_list<> |
CodeSonar | | IO.UAC ALLOC.UAF | Use after close Use after free |
Helix QAC | | C++2812, C++2813, C++2814, C++2930, C++2931, C++2932, C++2933, C++2934, C++4003, C++4026 |
|
Klocwork | | CL.FFM.ASSIGN CL.FFM.COPY LOCRET.ARG LOCRET.GLOB LOCRET.RET UFM.DEREF.MIGHT UFM.DEREF.MUST UFM.FFM.MIGHT UFM.FFM.MUST UFM.RETURN.MIGHT UFM.RETURN.MUST UFM.USE.MIGHT UFM.USE.MUST UNINIT.HEAP.MIGHT UNINIT.HEAP.MUST UNINIT.STACK.ARRAY.MIGHT UNINIT.STACK.ARRAY.MUST UNINIT.STACK.ARRAY.PARTIAL.MUST UNINIT.STACK.MIGHT UNINIT.STACK.MUST |
|
LDRA tool suite | | 42 D, 53 D, 77 D, 1 J, 71 S, 565 S
| Partially implemented |
Parasoft C/C++test | | CERT_CPP-EXP54-a CERT_CPP-EXP54-b CERT_CPP-EXP54-c | Do not use resources that have been freed The address of an object with automatic storage shall not be returned from a function The address of an object with automatic storage shall not be assigned to another object that may persist after the first object has ceased to exist |
Parasoft Insure++ |
|
| Runtime detection |
Polyspace Bug Finder | Include Page |
---|
| Polyspace Bug Finder_V |
---|
| Polyspace Bug Finder_V |
---|
|
| CERT C++: EXP54-CPP | Checks for: - Non-initialized variable or pointer
- Use of previously freed pointer
- Pointer or reference to stack variable leaving scope
- Accessing object with temporary lifetime
Rule partially covered. |
PRQA QA-C++ | Include Page |
---|
| PRQA QA-C++_V |
---|
| PRQA QA-C++_V |
---|
|
| 2812, 2813, 2814, 2930, 2931, 2932, 2933, 2934, 4003, 4026 |
|
PVS-Studio | | V758, V1041
|
|
RuleChecker | Include Page |
---|
| RuleChecker_V |
---|
| RuleChecker_V |
---|
|
| return-reference-local | Partially checked |