Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tool

Version

Checker

Description

Astrée
Include Page
Astrée_V
Astrée_V

int-division-by-zero

int-modulo-by-zero

Fully checked
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V
LANG.ARITH.DIVZERO
LANG.ARITH.FDIVZERO
Division by zero
Float Division By Zero
Compass/ROSE

Can detect some violations of this rule (In particular, it ensures that all operations involving division or modulo are preceded by a check ensuring that the second operand is nonzero.)

Coverity
Include Page
Coverity_V
Coverity_V

DIVIDE_BY_ZERO

Fully implemented
Cppcheck
Include Page
Cppcheck_V
Cppcheck_V
zerodiv
zerodivcond

Context sensitive analysis of division by zero
Not detected for division by struct member / array element / pointer data that is 0
Detected when there is unsafe division by variable before/after test if variable is zero

Klocwork
Include Page
Klocwork_V
Klocwork_V
DBZ.CONST
DBZ.CONST.CALL
DBZ.GENERAL
DBZ.ITERATOR

LDRA tool suite
Include Page
LDRA_V
LDRA_V

43 D, 127 D, 248 S, 629 S, 80 X

Partially implemented
Parasoft C/C++test
Include Page
Parasoft_V
Parasoft_V

CERT_C-INT33-a

Avoid division by zero
Parasoft Insure++

Runtime analysis
Polyspace Bug Finder

Include Page
Polyspace Bug Finder_V
Polyspace Bug Finder_V

CERT C: Rule INT33-C


Checks for:

  • Integer division by zero
  • Tainted division operand
  • Tainted modulo operand

Dividing integer number by zero

Division / operands from an unsecure source

Remainder % operands are from an unsecure source

Rule fully covered.

PRQA QA-C
Include Page
PRQA QA-C_v
PRQA QA-C_v

2830 [C], 2831 [D], 2832 [A]

2833 [S], 2834 [P]

Fully implemented
PRQA QA-C++
Include Page
cplusplus:PRQA QA-C++_V
cplusplus:PRQA QA-C++_V
2831, 2832, 2833, 2834
SonarQube C/C++ Plugin
Include Page
SonarQube C/C++ Plugin_V
SonarQube C/C++ Plugin_V
S3518
PVS-Studio

Include Page
PVS-Studio_V
PVS-Studio_V

V609
TrustInSoft Analyzer

Include Page
TrustInSoft Analyzer_V
TrustInSoft Analyzer_V

division_by_zero

Exhaustively verified (see one compliant and one non-compliant example).

...