CXX.LOGICAL_OP.NON_BOOL_CONSTANT

論理演算子は定数に直接適用してはなりません。

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

脆弱性とリスク

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

脆弱コード例

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

上記の例では、const 変数に論理演算子が適用されているため、6 行目は不適合です。Klocwork は、6 行目で CXX.LOGICAL_OP.NON_BOOL_CONSTANT 欠陥を報告し、「論理演算子は定数に直接適用してはなりません。」と表示します。

修正コード例

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

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