4.9 KiB
title | permalink | keywords |
---|---|---|
PMD Release Notes | pmd_release_notes.html | changelog, release notes |
????? - 6.3.0-SNAPSHOT
The PMD team is pleased to announce PMD 6.3.0.
This is a minor release.
Table Of Contents
New and noteworthy
Tree transversal revision
As described in #904, when searching for child nodes of the AST methods
such as hasDescendantOfType
, getFirstDescendantOfType
and findDescendantsOfType
were found to behave inconsistently,
not all of them honoring find boundaries; that is, nodes that define a self-contained entity which should be considered separately
(think of lambdas, nested classes, anonymous classes, etc.). We have modified these methods to ensure all of them honor
find boundaries.
This change implies several false positives / unexpected results (ie: ASTBlockStatement
falsely returning true
to isAllocation()
)
have been fixed; and lots of searches are now restricted to smaller search areas, which improves performance (depending on the project,
we have measured up to 10% improvements during Type Resolution, Symbol Table analysis, and some rule's application).
Naming rules enhancements
ClassNamingConventions
has been enhanced to allow granular configuration of naming conventions for different kinds of type declarations (eg enum or abstract class). Each kind of declaration can use its own naming convention using a regex property. See the rule's documentation for more info about configuration and default conventions.
Modified Rules
- The Java rule
UnnecessaryConstructor
(java-codestyle
) has been rewritten as a Java rule (previously it was a XPath-based rule). It supports a new propertyignoredAnnotations
and ignores by default empty constructors, that are annotated withjavax.inject.Inject
. Additionally, it detects now also unnecessary private constructors in enums.
Fixed Issues
- all
- #988: [core] FileNotFoundException for missing classes directory with analysis cache enabled
- documentation
- #994: [doc] Delete duplicate page contributing.md on the website
- java
- java-bestpractices
- java-codestyle
- java-performance
- #586: [java] AvoidUsingShortType erroneously triggered on overrides of 3rd party methods
API Changes
Deprecated Rules
- The Java rule
AbstractNaming
(categorycodestyle
) is deprecated in favour ofClassNamingConventions
. See Naming rules enhancements.
External Contributions
- #1002: [doc] Delete duplicate page contributing.md on the website - Ishan Srivastava
- #1008: [core] DOC: fix closing tag for <pmdVersion> - stonio
- #1010: [java] UnnecessaryConstructor triggered on required empty constructor (Dagger @Inject) - BBG
- #1012: [java] JUnitAssertionsShouldIncludeMessage - False positive with assertEquals and JUnit5 - BBG
- #1024: [java]Issue 558: Properlogger for enums - Utku Cuhadaroglu