JD.BITMASK
JD.BITMASK は、int 変数または long 変数が & や | などのビット演算子とともに使用された後、評価の結果は事前に明らかであるにもかかわらず、定数と比較されている場合に発生します。たとえば、((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;
}
JD.BITMASK が 13 行目に対して報告されています。'a | FLAG' および '0' の整合しないビットマスクにより、式が常に 'false' になります。