Menu

#1296 PMD UnusedPrivateMethod invalid detection of 'private void method(int,boolean,Integer...)'

PMD-5.3.0
closed
None
PMD
3-Major
Bug
2015-04-01
2014-12-15
No

PMD UnusedPrivateMethod

After some refactoring, a used private method is being highlighted by PMD as unused but it definetly is being used.

Avoid unused private methods such as 'deleteAllAssetsWithExceptions(int,boolean,Integer...)'.

Snippet below;

@Override
public void deleteAllAssetsWithExceptionsNoPurge(int galleryId, Integer... exceptionList) throws MediaServiceException
{
    deleteAllAssetsWithExceptions(galleryId, false, exceptionList);
}

private void deleteAllAssetsWithExceptions(int galleryId, boolean purge, Integer... exceptionList) throws MediaServiceException
{

...

Discussion

  • Andreas Dangel

    Andreas Dangel - 2014-12-18
    • status: open --> more-info-needed
    • assigned_to: Andreas Dangel
    • Milestone: New Tickets --> PMD-Next
     
  • Andreas Dangel

    Andreas Dangel - 2014-12-18

    I cannot reproduce the problem.
    I checked 5.1.1 through 5.2.2 and neither show a problem.

    Which version of PMD were you using?

     
  • Andreas Dangel

    Andreas Dangel - 2014-12-21
    • Milestone: PMD-5.2.3 --> PMD-Next
     
  • John Patrick

    John Patrick - 2014-12-22

    I've just retested am still getting the issue, the version I'm using below, as well as which version of maven.

    pmd 5.2.3
    pmd plugin 3.4

    $ mvn -version
    Apache Maven 2.2.1 (rdebian-14)
    Java version: 1.7.0_65
    Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
    Default locale: en_GB, platform encoding: UTF-8
    OS name: "linux" version: "3.13.0-39-generic" arch: "amd64" Family: "unix"

    $ find /home/johnp/.m2/repository/ -name "pmd"
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.pom.sha1
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.pom
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-SNAPSHOT.pom
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.jar.sha1
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.jar
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-SNAPSHOT.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd/5.2.3/pmd-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd/5.2.3/pmd-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.jar
    $

     
  • John Patrick

    John Patrick - 2014-12-22

    MediaServiceException

     
  • John Patrick

    John Patrick - 2014-12-22

    MediaMgmtService

     
  • John Patrick

    John Patrick - 2014-12-22

    MediaMgmtServiceImpl

     
  • John Patrick

    John Patrick - 2014-12-22

    I've extracted the files into a example project and can still reproduce the issue.

    I'm using pmd 5.2.3 and pmd plugin 3.4.

    $ mvn -version
    Apache Maven 2.2.1 (rdebian-14)
    Java version: 1.7.0_65
    Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
    Default locale: en_GB, platform encoding: UTF-8
    OS name: "linux" version: "3.13.0-39-generic" arch: "amd64" Family: "unix"
    $

    $ find /home/johnp/.m2/repository/ -name "pmd"
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.pom.sha1
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.pom
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-SNAPSHOT.pom
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.jar.sha1
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-20141221.192442-156.jar
    /home/johnp/.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/3.4-SNAPSHOT/maven-pmd-plugin-3.4-SNAPSHOT.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-core/5.2.3/pmd-core-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd/5.2.3/pmd-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd/5.2.3/pmd-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-java/5.2.3/pmd-java-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-javascript/5.2.3/pmd-javascript-5.2.3.jar
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.pom.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.pom
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.jar.sha1
    /home/johnp/.m2/repository/net/sourceforge/pmd/pmd-jsp/5.2.3/pmd-jsp-5.2.3.jar
    $

     
  • Andreas Dangel

    Andreas Dangel - 2014-12-24

    Many thanks for the example. I could reproduce it now. It seems, that PMD gets confused with the two method usages... it actually gets confused about the overloaded method - one method is public, this other is private, but both have the same name.

    So, as a workaround, you could rename your private method to a different name (e.g. internalDeleteAllAssetsWithExceptions) and the false positive should go away.

    I'll try to fix it with the next version.

     
  • Andreas Dangel

    Andreas Dangel - 2014-12-24
    • status: more-info-needed --> accepted
     
  • Andreas Dangel

    Andreas Dangel - 2015-01-18
    • status: accepted --> closed
     
  • Andreas Dangel

    Andreas Dangel - 2015-01-18

    Will be fixed with the next version.

     

Log in to post a comment.