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 欠陥を報告しなくなります。