CXX.BITOP.NON_CONST_OPERAND
ビット演算子の適用は定数のみに限定する必要があります。
定数式がビット演算子のオペランドとして使用されていない場合、このチェッカーは欠陥を報告します。
脆弱性とリスク
非 const 式にビット演算を実行すると、予期しない結果を引き起こす可能性があります。
脆弱コード例
コピー
void func(int var1, int var2)
{
int var4 = var1 | var2;
int var5 = var1 & var2;
}
上記の例では、非 const 変数にビット演算子が適用されているため、3 行目と 4 行目は不適合です。Klocwork は、3 行目と 4 行目で CXX.BITOP.NON_CONST_OPERAND 欠陥を報告し、「ビット演算子の適用は定数のみに限定する必要があります。」と表示します。
修正コード例
コピー
void func(int var1, int var2)
{
int var4 = 5 | 10;
int var5 = 1 & 3;
}
この修正コード例では、Klocwork はもはや 3 行目と 4 行目で CXX.BITOP.NON_CONST_OPERAND 欠陥を報告しなくなります。