CS.WRONGSIG.CMPTO

Wrong signature of 'CompareTo' method

The checker flags 'CompareTo' method declarations with a signature other than 'public int compareTo(Object)'.

Vulnerability and risk

The checker typically finds instances in which the intent was probably to implement the interface method of IComparable interface. If the method has a different signature, it won't be called when the comparator is used, and the design intent won't be accomplished.

Example code

1  class Foo {
2      String name;
3      int CompareTo(MyClass a) {          // defect
4          return name.compareTo(a.name);  
5      }
6  }

Klocwork flags line 3, in which the CompareTo method is declared without the correct signature. Line 4 isn't flagged, since it's a usage of CompareTo, which the checker isn't intended for, rather than a declaration.