CXX.POSSIBLE_COPY_PASTE.LOGICAL_OP.CMP_SAME_OBJECT

潜在的复制粘贴错误:对象不应与自身进行逻辑上的对比。

如果使用逻辑运算符对比相同的对象,此检查器就会报告缺陷。

漏洞代码示例

复制
   int f1() {
   bool isAFruit = false;
   const int ORANGE = 8;
   
   if (ORANGE == ORANGE)
   isAFruit = true;
   
   return 0;
   }

在以上示例中,第 5 行不符合要求,因为 int 对象 ORANGE 是与自身进行对比。Klocwork 在第 5 行报告 CXX.POSSIBLE_COPY_PASTE.LOGICAL_OP.CMP_SAME_OBJECT 缺陷,同时显示消息指出“潜在的复制粘贴错误:对象不应与自身进行逻辑上的对比。”

修正代码示例

复制
   int f1() {
   bool isAFruit = false;
   const int ORANGE = 8;
   
   if (ORANGE == 8) 
   isAFruit = true;
   
   return 0;
   }

在修正代码示例中,Klocwork 不再于第 5 行报告 CXX.POSSIBLE_COPY_PASTE.LOGICAL_OP.CMP_SAME_OBJECT 缺陷。