左右のオペランドがまったく同じ式になっている比較を報告します。 自身と比較する式は意図的に使用されている場合もありますが、ほとんどの場合は見落としです。

例:


  // left.getLength() == right.getLength() が意図されていたと思われます
  boolean result = left.getLength() == left.getLength();

副作用を引き起こす可能性がある比較を無視するには、「副作用のある条件を無視する」オプションを使用します。 このオプションを無効化すると、同じメソッドが後続の呼び出しで異なる値を返す場合などに誤検知が発生する可能性があります。

例:


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

unknownMethod() (上の例) は副作用を引き起こす可能性があるため、警告は「副作用のある条件を無視する」オプションが無効な場合にのみトリガーされます。

2024.2 の新機能です