From 2f0e12da6cffb876c35c3f7f1b242c0c84242799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Mart=C3=ADn=20Sotuyo=20Dodero?= Date: Mon, 19 Jun 2017 11:07:12 -0300 Subject: [PATCH] [java] Fix false positive in UnusedImport - When referencing static inner members of imports, false positives would be reported. - Fixes #348 --- .../lang/java/rule/imports/UnusedImportsRule.java | 9 ++++++++- .../rule/typeresolution/xml/UnusedImports.xml | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/imports/UnusedImportsRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/imports/UnusedImportsRule.java index ceb81ef077..419f8962c8 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/imports/UnusedImportsRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/imports/UnusedImportsRule.java @@ -86,7 +86,14 @@ public class UnusedImportsRule extends AbstractJavaRule { if (s != null) { String[] params = s.split("\\s*,\\s*"); for (String param : params) { - imports.remove(new ImportWrapper(param, param, new DummyJavaNode(-1))); + final int firstDot = param.indexOf('.'); + final String expectedImportName; + if (firstDot == -1) { + expectedImportName = param; + } else { + expectedImportName = param.substring(0, firstDot); + } + imports.remove(new ImportWrapper(param, expectedImportName, new DummyJavaNode(-1))); } } } diff --git a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/typeresolution/xml/UnusedImports.xml b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/typeresolution/xml/UnusedImports.xml index 2deb2d9a11..2561d9acb4 100644 --- a/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/typeresolution/xml/UnusedImports.xml +++ b/pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/typeresolution/xml/UnusedImports.xml @@ -261,6 +261,21 @@ public interface Interface { */ void doSomething(); +} + ]]> + + + #348 False Positive UnusedImports with javadoc for public static inner classes of imports + 0 +