26-November-2022 - 6.52.0-SNAPSHOT
The PMD team is pleased to announce PMD 6.52.0-SNAPSHOT.
This is a minor release.
New and noteworthy
Modified rules
- The rule
ClassNamingConventions
has a new propertytestClassPattern
, which is applied to test classes. By default, test classes should end with the suffix “Test”. Test classes are top-level classes, that either inherit from JUnit 3 TestCase or have at least one method annotated with the Test annotations from JUnit4/5 or TestNG.
Fixed Issues
- cli
- #4215: NullPointerException when trying to open designer
- doc
- #4207: [doc] List all languages in rule doc
- java
- java-codestyle
- java-design
- #4200: [java] ClassWithOnlyPrivateConstructorsShouldBeFinal should consider lombok’s @Value
- java-errorprone
- #4185: [java] InvalidLogMessageFormat rule produces a NPE
API Changes
PMD CLI
-
PMD now supports a new
--use-version
flag, which receives a language-version pair (such asjava-8
orapex-54
). This supersedes the usage of-language
/-l
and-version
/-v
, allowing for multiple versions to be set in a single run. PMD 7 will completely remove support for-language
and-version
in favor of this new flag. -
Support for
-V
is being deprecated in favor of--verbose
in preparation for PMD 7. In PMD 7,-v
will enable verbose mode and-V
will show the PMD version for consistency with most Unix/Linux tools. -
Support for
-min
is being deprecated in favor of--minimum-priority
for consistency with most Unix/Linux tools, where-min
would be equivalent to-m -i -n
.
CPD CLI
- CPD now supports using
-d
or--dir
as an alias to--files
, in favor of consistency with PMD. PMD 7 will remove support for--files
in favor of these new flags.
Linux run.sh parameters
-
Using
run.sh cpdgui
will now warn about it being deprecated. Userun.sh cpd-gui
instead. -
The old designer (
run.sh designerold
) is completely deprecated and will be removed in PMD 7. Switch to the new JavaFX designer:run.sh designer
. -
The old visual AST viewer (
run.sh bgastviewer
) is completely deprecated and will be removed in PMD 7. Switch to the new JavaFX designer:run.sh designer
for a visual tool, or userun.sh ast-dump
for a text-based aleternative.
Deprecated API
The following APIs have been marked as deprecated for removal in PMD 7:
PMD
andPMD.StatusCode
- PMD 7 will ship with a revamped CLI split from pmd-core. To programatically launch analysis you can usePmdAnalysis
.PMDConfiguration#getAllInputPaths
- It is now superceded byPMDConfiguration#getInputPathList
PMDConfiguration#setInputPaths
- It is now superceded byPMDConfiguration#setInputPathList
PMDConfiguration#addInputPath
- It is now superceded byPMDConfiguration#addInputPath
PMDConfiguration#getInputFilePath
- It is now superceded byPMDConfiguration#getInputFile
PMDConfiguration#getIgnoreFilePath
- It is now superceded byPMDConfiguration#getIgnoreFile
PMDConfiguration#setInputFilePath
- It is now superceded byPMDConfiguration#setInputFilePath
PMDConfiguration#setIgnoreFilePath
- It is now superceded byPMDConfiguration#setIgnoreFilePath
PMDConfiguration#getInputUri
- It is now superceded byPMDConfiguration#getUri
PMDConfiguration#setInputUri
- It is now superceded byPMDConfiguration#setInputUri
PMDConfiguration#getReportFile
- It is now superceded byPMDConfiguration#getReportFilePath
PMDConfiguration#setReportFile
- It is now superceded byPMDConfiguration#setReportFile
PMDConfiguration#isStressTest
andPMDConfiguration#setStressTest
- Will be removed with no replacement.PMDConfiguration#isBenchmark
andPMDConfiguration#setBenchmark
- Will be removed with no replacement, the CLI will still support it.CPD
andCPD.StatusCode
- PMD 7 will ship with a revamped CLI split from pmd-core. An alterative to programatically launch CPD analysis will be added in due time.
External Contributions
- #4184: [java][doc] TestClassWithoutTestCases - fix small typo in description - Valery Yatsynovich (@valfirst)
- #4198: [doc] Add supported CPD languages - Jeroen van Wilgenburg (@jvwilge)
- #4202: [java] Fix #4200 and #4201: ClassWithOnlyPrivateConstructorsShouldBeFinal, CommentDefaultAccessModifier: Exclude lombok @Value annotation - Lynn (@LynnBroe)
- #4205: [doc] Clarify Scala support (no built-in rules) - Eldrick Wega (@Eldrick19)