Table of Contents
31-October-2025 - 7.18.0-SNAPSHOT
The PMD team is pleased to announce PMD 7.18.0-SNAPSHOT.
This is a minor release.
🚀 New and noteworthy
Build Requirement is Java 17
From now on, Java 17 or newer is required to build PMD. PMD itself still remains compatible with Java 8, so that it still can be used in a pure Java 8 environment. This allows us to use the latest checkstyle version during the build.
🐛 Fixed Issues
- core
- #4714: [core] Allow trailing commas in multivalued properties
- apex
- #5935: [apex] @SuppressWarnings - allow whitespace around comma when suppressing multiple rules
- apex-design
- #6022: [apex] ExcessiveClassLength/ExcessiveParameterList include the metric in the message
- java-codestyle
- java-design
- #5569: [java] ExcessivePublicCount should report number of public “things”
- java-documentation
- #6058: [java] DanglingJavadoc FP in module-info files
- java-errorprone
- java-multithreading
- #5880: [java] DoubleCheckedLocking is not detected if more than 1 assignment or more than 2 if statements
- misc
- #6012: [pmd-rulesets] Rulesets should be in alphabetical order
🚨 API Changes
Deprecations
- java
- The following methods have been deprecated. Due to refactoring of the internal base class, these methods are not used anymore and are not required to be implemented anymore:
✨ Merged pull requests
- #6021: [java] Fix #5569: ExcessiveImports/ExcessiveParameterList/ExcessivePublicCount include the metric in the message - UncleOwen (@UncleOwen)
- #6022: [apex] ExcessiveClassLength/ExcessiveParameterList include the metric in the message - UncleOwen (@UncleOwen)
- #6023: [test] Fix #6012: Alphabetically sort all default rules - Zbynek Konecny (@zbynek)
- #6024: [java] Fix #5878: DontUseFloatTypeForLoopIndices now checks the UpdateStatement as well - UncleOwen (@UncleOwen)
- #6029: [java] Fix UnnecessaryCast false-negative in method calls - Zbynek Konecny (@zbynek)
- #6031: [java] Fix #5880: False Negatives in DoubleCheckedLocking - Lukas Gräf (@lukasgraef)
- #6039: [core] Fix #4714: trim token before feeding it to the extractor - UncleOwen (@UncleOwen)
- #6040: [java,apex,plsql,velocity] Change description of “minimum” parameter - UncleOwen (@UncleOwen)
- #6043: [java] Reactivate deactivated test in LocalVariableCouldBeFinal - UncleOwen (@UncleOwen)
- #6059: [java] Fix #6058: DanglingJavadoc FP in module-info files - Lukas Gräf (@lukasgraef)
- #6061: [core] chore: Bump minimum Java version required for building to 17 - Andreas Dangel (@adangel)
- #6071: [java] Fix #5919: Add integration tests to ClassNamingConventions testClassRegex - Anton Bobov (@abobov)
- #6074: [apex] Fix @SuppressWarnings with whitespace around comma - Juan Martín Sotuyo Dodero (@jsotuyod)
- #6078: [java] Fix #6075: Fix FP in AssignmentInOperandRule - UncleOwen (@UncleOwen)