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 缺陷。