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");
    }
  }

New in 2017.2