CS.WRONGSIG.CMPTO

“CompareTo”方法的错误签名

检查器使用除“public int compareTo(Object)”以外的签名标记“CompareTo”方法声明。

漏洞与风险

检查器通常会查找这样的实例:可能意图实施 IComparable 接口的接口方法。如果该方法具有不同的签名,则使用比较运算符时不会调用该方法,并将无法达到设计意图。

代码示例

复制
  class Foo {
      String name;
      int CompareTo(MyClass a) {          // defect
          return name.compareTo(a.name);  
      }
  }

Klocwork 标记了第 3 行,其中的 CompareTo 方法未使用正确的签名进行声明。未标记第 4 行,因为其使用的是 CompareTo(检查器不适用于这种情况),而不是声明。