Edit me

28-October-2018 - 6.9.0

The PMD team is pleased to announce PMD 6.9.0.

This is a minor release.

New and noteworthy

Improved Golang CPD Support

Thanks to the work of ITBA students Matías Fraga, Tomi De Lucca and Lucas Soncini, Golang is now backed by a proper Antlr Grammar. This means CPD is now better at detecting duplicates, as comments are recognized as such and ignored.

New Rules

  • The new PLSQL rule CodeFormat (plsql-codestyle) verifies that PLSQL code is properly formatted. It checks e.g. for correct indentation in select statements and verifies that each parameter is defined on a separate line.

Fixed Issues

  • all
    • #649: [core] Exclude specific files from command line
    • #1272: [core] Could not find or load main class when using symlinked run.sh
    • #1377: [core] LanguageRegistry uses default class loader when invoking ServiceLocator
    • #1394: [doc] How to configure “-cache "
    • #1412: [doc] Broken link to adding new cpd language documentation
  • apex
    • #1396: [apex] ClassCastException caused by Javadoc
  • java
    • #1330: [java] PMD crashes with java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/xml/ws/Service
  • java-bestpractices
    • #1202: [java] GuardLogStatement: “There is log block not surrounded by if” doesn’t sound right
    • #1209: [java] UnusedImports false positive for static import with package-private method usage
    • #1343: [java] Update CommentDefaultAccessModifierRule to extend AbstractIgnoredAnnotationRule
    • #1365: [java] JUnitTestsShouldIncludeAssert false positive
    • #1404: [java] UnusedImports false positive with static ondemand import with method call
  • java-codestyle
    • #1199: [java] UnnecessaryFullyQualifiedName doesn’t flag same package FQCNs
    • #1356: [java] UnnecessaryModifier wrong message public->static
  • java-design
    • #1369: [java] Processing error (ClassCastException) if a TYPE_USE annotation is used on a base class in the “extends” clause
  • jsp
    • #1402: [jsp] JspTokenManager has a problem about jsp scriptlet
  • documentation
    • #1349: [doc] Provide some explanation for WHY duplicate code is bad, like mutations

API Changes

  • PMD has a new CLI option -ignorelist. With that, you can provide a file containing a comma-delimit list of files, that should be excluded during analysis. The ignorelist is applied after the files have been selected via -dir or -filelist, which means, if the file is in both lists, then it will be ignored. Note: there is no corresponding option for the Ant task, since the feature is already available via Ant’s FileSet include/exclude filters.

External Contributions