diff --git a/p3c-pmd/pom.xml b/p3c-pmd/pom.xml
index cfccbf2..82e9a71 100644
--- a/p3c-pmd/pom.xml
+++ b/p3c-pmd/pom.xml
@@ -9,7 +9,7 @@
com.alibaba.p3c
p3c-pmd
- 2.0.1
+ 2.1.0
jar
p3c-pmd
@@ -17,7 +17,7 @@
6.15.0
1.8
1.3.2
- 1.3.50
+ 1.3.72
Alibaba Java Coding Guidelines PMD implementations
https://github.com/alibaba/p3c
diff --git a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/rule/oop/WrapperTypeEqualityRule.java b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/rule/oop/WrapperTypeEqualityRule.java
index b1a555f..5b6d80b 100644
--- a/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/rule/oop/WrapperTypeEqualityRule.java
+++ b/p3c-pmd/src/main/java/com/alibaba/p3c/pmd/lang/java/rule/oop/WrapperTypeEqualityRule.java
@@ -38,7 +38,7 @@ public class WrapperTypeEqualityRule extends AbstractAliRule {
final String unaryExpression = "UnaryExpression";
// null presents in either side of "==" or "!=" means no violation
if (node.hasDescendantMatchingXPath(literalPrefix)
- || node.hasDescendantMatchingXPath(unaryExpression)) {
+ || node.hasDescendantMatchingXPath(unaryExpression)) {
return super.visit(node, data);
}
@@ -48,7 +48,10 @@ public class WrapperTypeEqualityRule extends AbstractAliRule {
// PMD can not resolve array length type, but only the
ASTPrimaryExpression left = expressions.get(0);
ASTPrimaryExpression right = expressions.get(1);
-
+ // if left is complex expression, skip
+ if (left.jjtGetNumChildren() > 1) {
+ return super.visit(node, data);
+ }
boolean bothArrayLength = isArrayLength(left) && isArrayLength(right);
boolean bothWrapperType = NodeUtils.isWrapperType(left) && NodeUtils.isWrapperType(right);
@@ -61,7 +64,8 @@ public class WrapperTypeEqualityRule extends AbstractAliRule {
}
private boolean isArrayLength(ASTPrimaryExpression expression) {
- // assume expression like "x.length" is the length of array, field with name "length" may result in misrecognition
+ // assume expression like "x.length" is the length of array, field with name "length" may result in
+ // misrecognition
return "length".equals(expression.jjtGetLastToken().getImage())
&& ".".equals(expression.jjtGetFirstToken().getNext().getImage());
}
diff --git a/p3c-pmd/src/test/resources/com/alibaba/p3c/pmd/lang/java/rule/oop/xml/WrapperTypeEqualityRule.xml b/p3c-pmd/src/test/resources/com/alibaba/p3c/pmd/lang/java/rule/oop/xml/WrapperTypeEqualityRule.xml
index 08d65da..cee259d 100644
--- a/p3c-pmd/src/test/resources/com/alibaba/p3c/pmd/lang/java/rule/oop/xml/WrapperTypeEqualityRule.xml
+++ b/p3c-pmd/src/test/resources/com/alibaba/p3c/pmd/lang/java/rule/oop/xml/WrapperTypeEqualityRule.xml
@@ -53,7 +53,7 @@
compare wrapper type objects without equals
4
11,23,31,34
-
+
@@ -148,7 +148,7 @@
bugfix
0
-
+
@@ -171,7 +171,37 @@
0
+
+
+
+
+ expression is primitive type
+ 1
+ 17
+
+
\ No newline at end of file