JD.BITMASK
当将 int 或长变量与位运算符 & 或 | 一起使用,然后将其与常量进行比较,并且已提前知道求值结果时,发生 JD.BITMASK。例如,((a & 0x0f) == 0xf0) 始终为 false,因为位掩码不兼容。
漏洞与风险
不可能是代码蓄意为之,因此该错误会导致意外的行为。
缓解与预防
修复位运算符(如果这是原因所在),或者修复位掩码。
示例 1
复制
final static int FLAG = 0x01;
static boolean checkMask(int a) {
// mistyped, should be &
if ((a | FLAG) == 0) return true;
return false;
}
针对第 13 行报告 JD.BITMASK:不兼容的位掩码“a | FLAG”和“0”会导致表达式始终是 false。