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。

相关检查器