JD.BITCMP
当 if check 包含二元运算符(如 & 或 |)而不是短路运算符(如 && 或 ||)时,发生 JD.BITCMP。为了获得最佳效果,最好使用短路运算。另外,如果使用二元运算,则需要对表达式的两侧求值,而这会导致其他意外问题,例如,引发空指针异常,示例如下。
漏洞与风险
JD.BITCMP 缺陷会对性能产生影响或导致意外的行为,例如,引发 RuntimeException。
缓解与预防
将位运算替换为短路运算。
示例 1
复制
static void check(int arr[]) {
if (arr!=null & arr.length!=0) {
foo();
}
return;
}
针对第 11 行报告 JD.BITCMP:在表达式中运用位运算符“&”遇到问题。您是要用“&&”吗?