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(检查器不适用于这种情况),而不是声明。