Reports comparisons where left and right operand represent the identical expression. While sometimes comparison of an expression with itself could be intended, in most cases they are the result of an oversight.

Example:


  // Probably left.getLength() == right.getLength() was intended
  boolean result = left.getLength() == left.getLength();

To ignore comparisons that may produce side effects, use the Ignore conditions with side effects option. Disabling this option may lead to false-positives, for example, when the same method returns different values on subsequent invocations.

Example:


  native int unknownMethod();
  
  ...
  
  if (unknownMethod() > unknownMethod()) {
    System.out.println("Got it");
  }

Due to possible side effects of unknownMethod() (on the example), the warning will only be triggered if the Ignore conditions with side effects option is disabled.

New in 2024.2