CXX.LOGICAL_OP.NON_BOOL_CONSTANT
逻辑运算符不应直接应用于常数。
如果将逻辑运算符直接应用于常数,此检查器就会报告缺陷。
漏洞与风险
在常数上执行逻辑运算符可能会导致意料之外的结果。
漏洞代码示例
复制
bool func()
{
const bool var = false;
const bool Constant1 = true;
const bool Constant2 = false;
return Constant1 || Constant2;
}
在以上示例中,第 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 缺陷。