From 68924e3600e346bb5e5e72680e3d876757a48421 Mon Sep 17 00:00:00 2001 From: "caikang.ck" Date: Sat, 22 Aug 2020 12:35:05 +0800 Subject: [PATCH] p3c-pmd 2.1.0 --- p3c-pmd/pom.xml | 4 +-- .../rule/oop/WrapperTypeEqualityRule.java | 10 ++++-- .../rule/oop/xml/WrapperTypeEqualityRule.xml | 34 +++++++++++++++++-- 3 files changed, 41 insertions(+), 7 deletions(-) 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 -- GitLab