Reports usages of the non-short-circuit forms of boolean 'and' and 'or' (&, |, &= and |=). Although the non-short-circuit versions are occasionally useful, in most cases the short-circuit forms (&& and ||) are intended and such unintentional usages may lead to subtle bugs.

A quick-fix is suggested to use the short-circuit versions.

Example:


  void foo(boolean x, boolean y, boolean z) {
    if (x | y) { x |= z; }
  }

After the quick-fix is applied:


  void foo(boolean x, boolean y) {
    if (x || y) { x = x || z; }
  }