rspec/rules/S1294/rule.adoc

37 lines
964 B
Plaintext

== Why is this an issue?
Since arrays do not override ``++Object.equals()++``, calling equals on two arrays is the same as comparing their addresses. This means that ``++array1.equals(array2)++`` is equivalent to ``++array1==array2++``.
However, some developers might expect ``++Array.equals(Object obj)++`` to do more than a simple memory address comparison, comparing for instance the size and content of the two arrays. To prevent such a misunderstanding, the '==' operator or ``++Arrays.equals(array1, array2)++`` must always be used in place of the ``++Array.equals(Object obj)++`` method.
=== Noncompliant code example
[source,text]
----
if(array1.equals(array2)){...}
----
=== Compliant solution
[source,text]
----
if(Arrays.equals(array1, array2)){...}
----
or
[source,text]
----
if(array1 == array2){...}
----
== Resources
* https://www.securecoding.cert.org/confluence/x/9gEqAQ[CERT, EXP00-J.] - Do not ignore values returned by methods