...
Code Block | ||
---|---|---|
| ||
class GameEntry implements Comparable { public enum Roshambo {ROCK, PAPER, SCISSORS} private Roshambo value; public GameEntry(Roshambo value) { this.value = value; } public int compareTo(Object that) { if (!(that instanceof RoshamboGameEntry)) { throw new ClassCastException(); } GameEntry t = (GameEntry) that; return (value == t.value) ? 0 : (value == Roshambo.ROCK && t.value == Roshambo.PAPER) ? -1 : (value == Roshambo.PAPER && t.value == Roshambo.SCISSORS) ? -1 : (value == Roshambo.SCISSORS && t.value == Roshambo.ROCK) ? -1 : 1; } } |
...
Code Block | ||
---|---|---|
| ||
class GameEntry { public enum Roshambo {ROCK, PAPER, SCISSORS} private Roshambo value; public GameEntry(Roshambo value) { this.value = value; } public int beats(Object that) { if (!(that instanceof RoshamboGameEntry)) { throw new ClassCastException(); } GameEntry t = (GameEntry) that; return (value == t.value) ? 0 : (value == Roshambo.ROCK && t.value == Roshambo.PAPER) ? -1 : (value == Roshambo.PAPER && t.value == Roshambo.SCISSORS) ? -1 : (value == Roshambo.SCISSORS && t.value == Roshambo.ROCK) ? -1 : 1; } } |
...
Violating the general contract when implementing the compareTo()
method can cause unexpected results, possibly leading to invalid comparisons and information disclosure.
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
MET10-J | Medium | Unlikely | Medium | P4 | L3 |
Automated Detection
Automated detections of violations of this rule is infeasible in the general case.
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| JAVA.CLASS.MCS | Missing Call to super (Java) | ||||||
Coverity | 7.5 | FB.RU_INVOKE_RUN | Implemented |
Related Guidelines
CWE-573, Improper Following of Specification by Caller |
Bibliography
...
...