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