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' になります。

関連チェッカー