From cd8325dff378c4fe1f3cae096b6e9fe263d8e465 Mon Sep 17 00:00:00 2001 From: Shuyang Zhou Date: Sat, 21 Feb 2015 11:16:13 +0100 Subject: [PATCH] #1303 OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces --- .../basic/OverrideBothEqualsAndHashcodeRule.java | 2 +- .../rule/basic/xml/OverrideBothEqualsAndHashcode.xml | 12 +++++++++++- src/site/markdown/overview/changelog.md | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/basic/OverrideBothEqualsAndHashcodeRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/basic/OverrideBothEqualsAndHashcodeRule.java index 8fe26c0126..ba4aa3a255 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/basic/OverrideBothEqualsAndHashcodeRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/basic/OverrideBothEqualsAndHashcodeRule.java @@ -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; } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/basic/xml/OverrideBothEqualsAndHashcode.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/basic/xml/OverrideBothEqualsAndHashcode.xml index fd25d17ed0..df70e2935f 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/basic/xml/OverrideBothEqualsAndHashcode.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/basic/xml/OverrideBothEqualsAndHashcode.xml @@ -164,13 +164,23 @@ public class Foo { 1 + + + implements interface other than Comparable, resolvable (#1303 OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces) + 1 + diff --git a/src/site/markdown/overview/changelog.md b/src/site/markdown/overview/changelog.md index 851feefb56..e2b8226832 100644 --- a/src/site/markdown/overview/changelog.md +++ b/src/site/markdown/overview/changelog.md @@ -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