From 7e5374ea8d17f14e6b8f796ab7edbda6c374b64e Mon Sep 17 00:00:00 2001 From: oowekyala Date: Thu, 27 Jul 2017 22:46:45 +0200 Subject: [PATCH] Corrections for PR #523 --- .../pmd/lang/java/metrics/api/JavaClassMetricKey.java | 6 +++++- .../metrics/impl/visitors/DefaultNpathVisitor.java | 10 ++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/api/JavaClassMetricKey.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/api/JavaClassMetricKey.java index 38e2c9ef8f..5752b54e2c 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/api/JavaClassMetricKey.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/api/JavaClassMetricKey.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.lang.java.metrics.api; +import java.util.Objects; + import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration; import net.sourceforge.pmd.lang.java.metrics.impl.AtfdMetric.AtfdClassMetric; import net.sourceforge.pmd.lang.java.metrics.impl.CycloMetric.CycloClassMetric; @@ -105,7 +107,9 @@ public enum JavaClassMetricKey implements MetricKey { @Override public boolean equals(Object obj) { - return obj == this; + return obj != null && getClass() == obj.getClass() + && Objects.equals(name(), getClass().cast(obj).name()) + && Objects.equals(getCalculator(), getClass().cast(obj).getCalculator()); } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/impl/visitors/DefaultNpathVisitor.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/impl/visitors/DefaultNpathVisitor.java index 962e6a89fa..bcbe3a3fec 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/impl/visitors/DefaultNpathVisitor.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/metrics/impl/visitors/DefaultNpathVisitor.java @@ -4,7 +4,6 @@ package net.sourceforge.pmd.lang.java.metrics.impl.visitors; -import java.util.ArrayList; import java.util.List; import net.sourceforge.pmd.lang.java.ast.ASTConditionalExpression; @@ -73,17 +72,12 @@ public class DefaultNpathVisitor extends JavaParserVisitorReducedAdapter { public Object visit(ASTIfStatement node, Object data) { // (npath of if + npath of else (or 1) + bool_comp of if) * npath of next - List statementChildren = new ArrayList<>(); - for (int i = 0; i < node.jjtGetNumChildren(); i++) { - if (node.jjtGetChild(i) instanceof ASTStatement) { - statementChildren.add((JavaNode) node.jjtGetChild(i)); - } - } + List statementChildren = node.findChildrenOfType(ASTStatement.class); // add path for not taking if int complexity = node.hasElse() ? 0 : 1; - for (JavaNode element : statementChildren) { + for (ASTStatement element : statementChildren) { complexity += (Integer) element.jjtAccept(this, data); }