diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UseCollectionIsEmptyRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UseCollectionIsEmptyRule.java index 5ddf60c787..d0abde1db2 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UseCollectionIsEmptyRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UseCollectionIsEmptyRule.java @@ -115,7 +115,13 @@ public class UseCollectionIsEmptyRule extends AbstractInefficientZeroCheck { classOrEnumBody = expr.getFirstParentOfType(ASTEnumBody.class); } if (classOrEnumBody == null) { - classOrEnumBody = expr.getFirstParentOfType(ASTRecordBody.class); + classOrEnumBody = expr.getFirstParentOfType(ASTRecordDeclaration.class); + List descendantsOfType = classOrEnumBody.findDescendantsOfType(ASTVariableDeclaratorId.class); + for (ASTVariableDeclaratorId variableDeclaratorId : descendantsOfType) { + if (variableDeclaratorId.getName().equals(varName)) { + return variableDeclaratorId.getTypeNode().getTypeDefinition(); + } + } } List varDeclarators = classOrEnumBody.findDescendantsOfType(ASTVariableDeclarator.class); for (ASTVariableDeclarator varDeclarator : varDeclarators) { diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UseCollectionIsEmpty.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UseCollectionIsEmpty.xml index 5e5439f3ff..d296c995dc 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UseCollectionIsEmpty.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UseCollectionIsEmpty.xml @@ -500,6 +500,20 @@ public record Record(Set stringSet) { public boolean hasMoreThanOneItem() { return this.stringSet.size() > 1; } +} ]]> + + + With records and size check + 1 + 6 + stringSet) { + + public boolean hasMoreThanOneItem() { + return this.stringSet.size() == 0; + } } ]]>