From 779848aa3fd734c658e68c00e7684f765ca4f571 Mon Sep 17 00:00:00 2001 From: "Venkatachalam, Srinivasan" Date: Sun, 28 Apr 2019 15:02:18 +0530 Subject: [PATCH] MethodReturnsInternalArray does not work in inner classes #1738 - Fixed --- .../lang/java/rule/bestpractices/AbstractSunSecureRule.java | 4 ++-- .../rule/bestpractices/MethodReturnsInternalArrayRule.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AbstractSunSecureRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AbstractSunSecureRule.java index 1e44a3959f..7f5b727cd9 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AbstractSunSecureRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/AbstractSunSecureRule.java @@ -6,6 +6,7 @@ package net.sourceforge.pmd.lang.java.rule.bestpractices; import java.util.List; +import net.sourceforge.pmd.lang.ast.AbstractNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTConditionalExpression; import net.sourceforge.pmd.lang.java.ast.ASTEqualityExpression; @@ -15,7 +16,6 @@ import net.sourceforge.pmd.lang.java.ast.ASTName; import net.sourceforge.pmd.lang.java.ast.ASTNullLiteral; import net.sourceforge.pmd.lang.java.ast.ASTPrimarySuffix; import net.sourceforge.pmd.lang.java.ast.ASTReturnStatement; -import net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.rule.AbstractJavaRule; @@ -38,7 +38,7 @@ public abstract class AbstractSunSecureRule extends AbstractJavaRule { * @return true if there is a field in the type declaration * named varName, false in other case */ - protected final boolean isField(String varName, ASTTypeDeclaration typeDeclaration) { + protected final boolean isField(String varName, AbstractNode typeDeclaration) { final List fds = typeDeclaration.findDescendantsOfType(ASTFieldDeclaration.class); if (fds != null) { for (ASTFieldDeclaration fd : fds) { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MethodReturnsInternalArrayRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MethodReturnsInternalArrayRule.java index 71170722eb..7578c8cda7 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MethodReturnsInternalArrayRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/MethodReturnsInternalArrayRule.java @@ -8,6 +8,7 @@ import java.util.List; import org.jaxen.JaxenException; +import net.sourceforge.pmd.lang.ast.AbstractNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.ast.ASTAllocationExpression; import net.sourceforge.pmd.lang.java.ast.ASTArrayInitializer; @@ -20,7 +21,6 @@ import net.sourceforge.pmd.lang.java.ast.ASTPrimaryExpression; import net.sourceforge.pmd.lang.java.ast.ASTPrimaryPrefix; import net.sourceforge.pmd.lang.java.ast.ASTPrimarySuffix; import net.sourceforge.pmd.lang.java.ast.ASTReturnStatement; -import net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration; import net.sourceforge.pmd.lang.java.ast.ASTVariableDeclaratorId; import net.sourceforge.pmd.lang.java.ast.ASTVariableInitializer; @@ -46,7 +46,7 @@ public class MethodReturnsInternalArrayRule extends AbstractSunSecureRule { return data; } List returns = method.findDescendantsOfType(ASTReturnStatement.class); - ASTTypeDeclaration td = method.getFirstParentOfType(ASTTypeDeclaration.class); + ASTClassOrInterfaceDeclaration td = method.getFirstParentOfType(ASTClassOrInterfaceDeclaration.class); for (ASTReturnStatement ret : returns) { final String vn = getReturnedVariableName(ret); if (!isField(vn, td)) { @@ -111,7 +111,7 @@ public class MethodReturnsInternalArrayRule extends AbstractSunSecureRule { return false; } - private boolean isEmptyArray(String varName, ASTTypeDeclaration typeDeclaration) { + private boolean isEmptyArray(String varName, AbstractNode typeDeclaration) { final List fds = typeDeclaration.findDescendantsOfType(ASTFieldDeclaration.class); if (fds != null) { for (ASTFieldDeclaration fd : fds) {