From dbecb80c9e61b44679f148746f10e15cd631eff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 16 Jan 2021 21:50:16 +0100 Subject: [PATCH 1/2] Only use ignored annotation, not lombok one, fix #2876 --- .../rule/bestpractices/UnusedPrivateFieldRule.java | 12 +++++++----- .../rule/bestpractices/xml/UnusedPrivateField.xml | 12 ++++++++++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UnusedPrivateFieldRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UnusedPrivateFieldRule.java index 6cc74ef41f..c60e6ca6a9 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UnusedPrivateFieldRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/bestpractices/UnusedPrivateFieldRule.java @@ -42,16 +42,18 @@ public class UnusedPrivateFieldRule extends AbstractLombokAwareRule { @Override public Object visit(ASTClassOrInterfaceDeclaration node, Object data) { - boolean classHasLombok = hasLombokAnnotation(node); + if (hasIgnoredAnnotation(node)) { + return super.visit(node, data); + } Map> vars = node.getScope() - .getDeclarations(VariableNameDeclaration.class); + .getDeclarations(VariableNameDeclaration.class); for (Map.Entry> entry : vars.entrySet()) { VariableNameDeclaration decl = entry.getKey(); AccessNode accessNodeParent = decl.getAccessNodeParent(); - if (!accessNodeParent.isPrivate() || isOK(decl.getImage()) || classHasLombok - || hasIgnoredAnnotation((Annotatable) accessNodeParent) - || hasIgnoredAnnotation(node)) { + if (!accessNodeParent.isPrivate() + || isOK(decl.getImage()) + || hasIgnoredAnnotation((Annotatable) accessNodeParent)) { continue; } if (!actuallyUsed(entry.getValue())) { diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateField.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateField.xml index efd39eb122..5d7bda8a23 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateField.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateField.xml @@ -636,6 +636,18 @@ public class Foo { + + + #2673 UnusedPrivateField false positive with lombok annotation EqualsAndHashCode + lombok.Getter|lombok.Data + 1 + Date: Thu, 21 Jan 2021 18:23:31 +0100 Subject: [PATCH 2/2] [doc] Update release notes, refs #2876 --- docs/pages/release_notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 9d2add0d98..f5ecc55adf 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -20,6 +20,7 @@ This is a {{ site.pmd.release_type }} release. * [#2994](https://github.com/pmd/pmd/pull/2994): \[core] Fix code climate severity strings * java-bestpractices * [#575](https://github.com/pmd/pmd/issues/575): \[java] LiteralsFirstInComparisons should consider constant fields + * [#2876](https://github.com/pmd/pmd/issues/2876): \[java] UnusedPrivateField cannot override ignored annotations property ### API Changes