Inspectopedia Help

Suspicious usage of compare method

Reports comparisons of the result of Comparator.compare() or Comparable.compareTo() calls with non-zero constants. By contract, these methods can return any integer (not just -1, 0 or 1), so comparing against particular numbers is bad practice. Some widely used comparison methods (e.g. String.compareTo()) actually return values outside the [-1..1] range, and such a comparison may cause incorrect program behavior.

Example:

void validate(String s1, String s2) { // Comparing to 1 is incorrect if (s1.compareTo(s2) == 1) { throw new IllegalArgumentException("Incorrect order"); } }

After the quick-fix is applied:

void validate(String s1, String s2) { if (s1.compareTo(s2) > 0) { throw new IllegalArgumentException("Incorrect order"); } }

Locating this inspection

By ID

Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.

ComparatorResultComparison
Via Settings dialog

Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.

Settings or Preferences | Editor | Inspections | Java | Probable bugs

New in 2017.2

Availability

By default bundled with

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin

Java, 241.18072

Last modified: 18 June 2024