CXX.LOGICAL_OP.INT_OPERAND

潜在的な論理エラー: 整数式を論理演算子のオペランドとして直接使用してはなりません。代わりにブール式を使用してください。

このチェッカーは、整数式に論理演算子が直接適用されている場合、欠陥を報告します。

脆弱性とリスク

整数式に適用された論理演算子を実行すると、予期しない結果を引き起こす可能性があります。

脆弱コード例

コピー
   bool func(int var1, int var2)
   {
   const bool var = false;
   const int Constant1 = true;
   const int Constant2 = true;
   return var == Constant1 || Constant2;  
   }

上記の例では、整数式に論理演算子が適用されているため、6 行目は不適合です。Klocwork は、6 行目で CXX.LOGICAL_OP.INT_OPERAND 欠陥を報告し、「潜在的な論理エラー: 整数式を論理演算子のオペランドとして直接使用してはなりません。代わりにブール式を使用してください。」と表示します。

修正コード例

コピー
   bool func(int var1, int var2)
   {
   const bool var = false;
   const int Constant1 = true;
   const int Constant2 = true;
   return var == Constant1 || var == Constant2;  
   }

この修正例では、Klocwork はもはや 6 行目で CXX.LOGICAL_OP.INT_OPERAND 欠陥を報告しなくなります。