JD.BITCMP
JD.BITCMP happens when an if check contains binary such as & or | instead of short-circuit, such as && or ||. It is better to use short-circuit operation for performance. Also, if you use binary, both sides of the expression are evaluated, and this can cause other unexpected problems, such as a null pointer exception being thrown. as in the example below.
Vulnerability and risk
A JD.BITCMP defect can cause a performance impact or unexpected behavior, such as a RuntimeException being thrown.
Mitigation and prevention
Replace bit operation with short-circuit operation.
Example 1
10 static void check(int arr[]) { 11 if (arr!=null & arr.length!=0) { 12 foo(); 13 } 14 return; 15 }
JD.BITCMP is reported for line 11: Questionable use of bit operation '&' in expression. Did you mean '&&'?