diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java index 18c8211beb..f8fd19a57b 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/symboltable/ClassScope.java @@ -226,17 +226,15 @@ public class ClassScope extends AbstractJavaScope { result.add(finder.getDecl()); } - // search inner classes + // search references to inner classes Map> classDeclarations = getClassDeclarations(); if (result.isEmpty() && !classDeclarations.isEmpty()) { + Applier.apply(finder, classDeclarations.keySet().iterator()); + if (finder.getDecl() != null) { + result.add(finder.getDecl()); + } for (ClassNameDeclaration innerClass : getClassDeclarations().keySet()) { - ASTMethodDeclarator md = innerClass.getNode().getFirstDescendantOfType(ASTMethodDeclarator.class); - if (md != null) { - images.add(md.getImage()); - finder = new ImageFinderFunction(images); - } Applier.apply(finder, innerClass.getScope().getDeclarations(VariableNameDeclaration.class).keySet().iterator()); - Applier.apply(finder, innerClass.getScope().getDeclarations(MethodNameDeclaration.class).keySet().iterator()); if (finder.getDecl() != null) { result.add(finder.getDecl()); } 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 5d7bda8a23..261715d56d 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 @@ -650,6 +650,24 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class Foo { private String bar; +} + ]]> + + + + False positive when referenced from within inner class + 0 + diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml index 8adfa7a3b1..acd4e3b74c 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/bestpractices/xml/UnusedPrivateMethod.xml @@ -1734,14 +1734,13 @@ public class Outer { diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/BeanMembersShouldSerialize.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/BeanMembersShouldSerialize.xml index d7faf962fe..4675dbe234 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/BeanMembersShouldSerialize.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/BeanMembersShouldSerialize.xml @@ -278,4 +278,85 @@ public class Foo { } ]]> + + + False negatives for inner class references + 4 + 3,5,7,21 + +