Edit me

29-January-2022 - 6.42.0

The PMD team is pleased to announce PMD 6.42.0.

This is a minor release.

New and noteworthy

Javascript: Rhino updated to latest version 1.7.14

Rhino, the implementation of JavaScript we use for parsing JavaScript code, has been updated to the latest version 1.7.14. Now language features like template strings can be parsed. However Rhino does not support all features of the latest EcmaScript standard.

New rules

  • The new Java rule FinalParameterInAbstractMethod detects parameters that are declared as final in interfaces or abstract methods. Declaring the parameters as final is useless because the implementation may choose to not respect it.
    <rule ref="category/java/codestyle.xml/FinalParameterInAbstractMethod" />

The rule is part of the quickstart.xml ruleset.

Modified rules

  • The Apex rule ApexDoc has a new property reportProperty. If set to false (default is true if unspecified) doesn’t report missing ApexDoc comments on properties. It allows you to enforce ApexDoc comments for classes and methods without requiring them for properties.

Fixed Issues

  • core
    • #3328: [core] designer.bat errors when JAVAFX_HOME contains spaces
  • java
    • #3698: [java] Error resolving Symbol Table
  • java-bestpractices
    • #3209: [java] UnusedPrivateMethod false positive with static method and cast expression
    • #3468: [java] UnusedPrivateMethod false positive when outer class calls private static method on inner class
  • java-design
    • #3679: [java] Make FinalFieldCouldBeStatic detect constant variable
  • java-errorprone
    • #3644: [java] InvalidLogMessageFormat: false positives with logstash structured logging
    • #3686: [java] ReturnEmptyCollectionRatherThanNull - false negative with conditioned returns
    • #3701: [java] MissingStaticMethodInNonInstantiatableClass false positive with method inner classes
    • #3721: [java] ReturnEmptyCollectionRatherThanNull - false positive with stream and lambda
  • java-performance
    • #3492: [java] UselessStringValueOf: False positive when there is no initial String to append to
    • #3639: [java] UseStringBufferLength: false negative with empty string variable
    • #3712: [java] InsufficientStringBufferDeclaration false positive with StringBuilder.setLength(0)
  • javascript
    • #3703: [javascript] Error - no Node adapter class registered for XmlPropRef

API Changes

No changes.

External Contributions


  • 88 commits
  • 35 closed tickets & PRs
  • Days since last release: 62