CXX.POSSIBLE_COPY_PASTE.TERNARY_OP
在三元运算符的 'then' 和 'else' 分支中可能存在复制粘贴操作。
如果三元运算符的 then 和 else 分支中使用了相同的表达式,此检查器就会报告缺陷。
漏洞代码示例
复制
void g() { cout << “g() is called”; }
void f() { cout << “f() is called”; }
void f1(bool b)
{
float value2 = b ? g() : g();
}
在以上示例中,第 5 行不符合要求,因为三元运算符的 then 和 else 分支完全相同。Klocwork 在第 5 行报告 CXX.POSSIBLE_COPY_PASTE.TERNARY_OP 缺陷,指出“在三元运算符的 'then' 和 'else' 分支中可能存在复制粘贴操作。”
修正代码示例
复制
void g() { cout << “g() is called”; }
void f() { cout << “f() is called”; }
void f1(bool b)
{
float value2 = b ? f() : g();
}
在修正代码示例中,Klocwork 不再于第 5 行报告 CXX.POSSIBLE_COPY_PASTE.TERNARY_OP 缺陷。