...
Tool | Version | Checker | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Astrée |
| evaluation-order | Partially checked | ||||||||||
Compass/ROSE | Could detect violations of this recommendation by searching for the following pattern:
| ||||||||||||
| EVALUATION_ORDER | Can detect the specific instance where a statement contains multiple side effects on the same value with an undefined evaluation order because the statement may behave differently with different compiler flags or different compilers or platforms | |||||||||||
LDRA tool suite |
| 35 D, 72 D, 1 Q, 134 S | Fully implemented | ||||||||||
Parasoft C/C++test |
| MISRA2004-12_2_{a,b,c,d} | Fully implemented | ||||||||||
PRQA QA-C |
| 3226,3326,0400, 0401, 0402,0403 | Partially implemented | ||||||||||
PVS-Studio | 6.22 | V521, V681 | |||||||||||
RuleChecker |
| evaluation-order | Partially checked | PVS-Studio | 6.22 | V521, V681 | General analysis rule set |
A programmer could also violate the recommendation using dynamic memory passed to both functions, but that would be extremely difficult to detect using static analysis.
...