Table of Contents
2026-??-?? - 7.27.0-SNAPSHOT
The PMD team is pleased to announce PMD 7.27.0-SNAPSHOT.
This is a minor release.
🚀️ New and noteworthy
Updated Apex Support
The Apex language support has been bumped to version 67.0 (Summer ‘26). It supports the new Multiline String literals.
Kotlin type-aware analysis
Kotlin now supports type-aware analysis via the auxClasspath language property (see #6677).
Resolved type names, return types, and annotation FQNs are available through
KotlinNodeTypeData for use in Java-based rules.
Note: Type data is not yet accessible in XPath rules or the PMD Rule Designer. This will be added in the next version.
🌟️ New and Changed Rules
Renamed Rules
- The rule
InstantiableUtilityClass(Java Design) was renamed fromUseUtilityClassto better reflect the problem. The old name still works but is deprecated.
🐛️ Fixed Issues
- apex
- chore
- #6837: chore: Input ‘app-id’ has been deprecated with message: Use ‘client-id’ instead
- core
- #1995: [core] PMD should display number of rules violated or errors found
- #4952: [doc] Improve doc around PMDConfiguration#prependAuxclasspath #setClassloader
- #4953: [core] Deprecate PMDConfiguration#setClassloader and #getClassloader
- #6865: [core] Include the running PMD version in the “Unable to find referenced rule” error
- java
- java-bestpractices
- java-codestyle
- #6709: [java] LambdaCanBeMethodReference: False positive with array creation containing constructor call in receiver
- java-design
- java-errorprone
- #6826: [java] AssertEqualsArgumentOrder: False positive for double assertEquals
- kotlin
🚨️ API Changes
Deprecations
- core
PMDConfiguration#getClassLoaderandPMDConfiguration#setClassLoaderare deprecated. UseprependAuxClasspathorsetAuxClasspathto configure the auxClasspath for analyzing Java code.
Note: In order to read back the currently configured auxClasspath, usegetAuxClasspathand not the deprecatedgetClassLoader()anymore.
Using ClassLoaders directly is discouraged, as it is unclear, if and when the ClassLoaders should be closed to release their resources. By just configuring the auxClasspath, PMD internally can deal with that.
Experimental API
- kotlin
KotlinNodeTypeData: Provides the initial API to access type information on Kotlin AST nodes. It’s part of the new Kotlin type-aware analysis.