#1303 OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces

This commit is contained in:
Shuyang Zhou
2015-02-21 11:16:13 +01:00
committed by Andreas Dangel
parent 9b8496ab16
commit cd8325dff3
3 changed files with 13 additions and 2 deletions

View File

@ -47,7 +47,7 @@ public class OverrideBothEqualsAndHashcodeRule extends AbstractJavaRule {
if (node.jjtGetChild(ix) instanceof ASTClassOrInterfaceType) {
ASTClassOrInterfaceType cit = (ASTClassOrInterfaceType) node.jjtGetChild(ix);
Class<?> clazz = cit.getType();
if (clazz != null || node.jjtGetChild(ix).hasImageEqualTo("Comparable")) {
if (clazz != null && node.jjtGetChild(ix).hasImageEqualTo("Comparable")) {
implementsComparable = true;
return data;
}

View File

@ -164,13 +164,23 @@ public class Foo {
</test-code>
<test-code>
<description><![CDATA[
implements interface other than Comparable
implements interface other than Comparable, not resolvable
]]></description>
<expected-problems>1</expected-problems>
<code><![CDATA[
public class Foo implements C {
public boolean equals(Object other) { return false; }
public int compareTo(Object other) { return 42; }
}
]]></code>
</test-code>
<test-code>
<description>implements interface other than Comparable, resolvable (#1303 OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces)</description>
<expected-problems>1</expected-problems>
<code><![CDATA[
public class Foo implements Runnable {
public boolean equals(Object other) { return false; }
public int compareTo(Object other) { return 42; }
}
]]></code>
</test-code>

View File

@ -37,6 +37,7 @@
* [#1296](https://sourceforge.net/p/pmd/bugs/1296/): PMD UnusedPrivateMethod invalid detection of 'private void method(int,boolean,Integer...)'
* [#1298](https://sourceforge.net/p/pmd/bugs/1298/): Member variable int type with value 0xff000000 causes processing error
* [#1299](https://sourceforge.net/p/pmd/bugs/1299/): MethodReturnsInternalArray false positive
* [#1303](https://sourceforge.net/p/pmd/bugs/1303/): OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces
* [#1305](https://sourceforge.net/p/pmd/bugs/1305/): variable declaration inside switch causes ClassCastException
* [#1306](https://sourceforge.net/p/pmd/bugs/1306/): False positive on duplicate when using static imports
* [#1308](https://sourceforge.net/p/pmd/bugs/1308/): PMD runs endlessly on some generated files