Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: REM cost reform

...

Using the equivalence operators to compare values of boxed primitives can lead to erroneous comparisons.

Rule

Severity

Likelihood

Detectable

RepairableRemediation Cost

Priority

Level

EXP03-J

Low

Likely

Yes

YesMedium

P6P9

L2

Automated Detection

Detection of all uses of the reference equality operators on boxed primitive objects is straightforward. Determining the correctness of such uses is infeasible in the general case.

Empty String (Java) Instead Array (Java)
Tool
Version
Checker
Description
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

JAVA.COMPARE.EMPTYSTR
JAVA.COMPARE.EQ
JAVA.COMPARE.EQARRAY

Comparison to

empty string 
Should Use equals()

instead of == (Java)
equals on

Array 

Coverity7.5

BAD_EQ
FB.EQ_ABSTRACT_SELF
FB.EQ_ALWAYS_FALSE
FB.EQ_ALWAYS_TRUE
FB.EQ_CHECK_FOR_OPERAND_NOT_ COMPATIBLE_WITH_THIS
FB.EQ_COMPARETO_USE_OBJECT_ EQUALS
FB.EQ_COMPARING_CLASS_NAMES
FB.EQ_DOESNT_OVERRIDE_EQUALS
FB.EQ_DONT_DEFINE_EQUALS_ FOR_ENUM
FB.EQ_GETCLASS_AND_CLASS_ CONSTANT
FB.EQ_OTHER_NO_OBJECT
FB.EQ_OTHER_USE_OBJECT
FB.EQ_OVERRIDING_EQUALS_ NOT_SYMMETRIC
FB.EQ_SELF_NO_OBJECT
FB.EQ_SELF_USE_OBJECT
FB.EQ_UNUSUAL
FB.ES_COMPARING_PARAMETER_ STRING_WITH_EQ
FB.ES_COMPARING_STRINGS_ WITH_EQ
FB.ES_COMPARING_PARAMETER_ STRING_WITH_EQ

Implemented
Klocwork

Include Page
Klocwork_V
Klocwork_V

CMP.OBJ
Parasoft Jtest
Include Page
Parasoft_V
Parasoft_V
CERT.EXP03.UEICDo not use '==' or '!=' to compare objects
PVS-Studio

Include Page
PVS-Studio_V
PVS-Studio_V

V6013
SonarQube
Include Page
SonarQube_V
SonarQube_V
S1698"==" and "!=" should not be used when "equals" is overridden

Related Guidelines

MITRE CWE

CWE-595, Comparison of Object References Instead of Object Contents
CWE-597, Use of Wrong Operator in String Comparison

...