27-November-2021 - 6.41.0
The PMD team is pleased to announce PMD 6.41.0.
This is a minor release.
Table Of Contents
New and noteworthy
GitHub Action for PMD
PMD now has its own official GitHub Action: GitHub Action for PMD.
It can execute PMD with your own ruleset against your project. It creates a SARIF
report which is uploaded as a build artifact. Furthermore the build can be failed based on the number of violations.
Feedback and pull requests are welcome at https://github.com/pmd/pmd-github-action.
Last release in 2021
This minor release will be the last one in 2021. The next release is scheduled to be end of January 2022.
Fixed Issues
- core
- java-bestpractices
- #3595: [java] PrimitiveWrapperInstantiation: no violation on 'new Boolean(val)'
- #3613: [java] ArrayIsStoredDirectly doesn't consider nested classes
- #3614: [java] JUnitTestsShouldIncludeAssert doesn't consider nested classes
- #3618: [java] UnusedFormalParameter doesn't consider anonymous classes
- #3630: [java] MethodReturnsInternalArray doesn't consider anonymous classes
- java-design
- #3620: [java] SingularField doesn't consider anonymous classes defined in non-private fields
- java-errorprone
- #3624: [java] TestClassWithoutTestCases reports wrong classes in a file
- java-performance
- #3491: [java] UselessStringValueOf: False positive when
valueOf(char [], int, int)
is used
- #3491: [java] UselessStringValueOf: False positive when
API Changes
Command Line Interface
The command line options for PMD and CPD now use GNU-syle long options format. E.g. instead of -rulesets
the
preferred usage is now --rulesets
. Alternatively one can still use the short option -R
.
Some options also have been renamed to a more consistent casing pattern at the same time
(--fail-on-violation
instead of -failOnViolation
).
The old single-dash options are still supported but are deprecated and will be removed with PMD 7.
This change makes the command line interface more consistent within PMD and also less surprising
compared to other cli tools.
The changes in detail for PMD:
old option | new option |
---|---|
-rulesets
| --rulesets (or -R )
|
-uri
| --uri
|
-dir
| --dir (or -d )
|
-filelist
| --file-list
|
-ignorelist
| --ignore-list
|
-format
| --format (or -f )
|
-debug
| --debug
|
-verbose
| --verbose
|
-help
| --help
|
-encoding
| --encoding
|
-threads
| --threads
|
-benchmark
| --benchmark
|
-stress
| --stress
|
-shortnames
| --short-names
|
-showsuppressed
| --show-suppressed
|
-suppressmarker
| --suppress-marker
|
-minimumpriority
| --minimum-priority
|
-property
| --property
|
-reportfile
| --report-file
|
-force-language
| --force-language
|
-auxclasspath
| --aux-classpath
|
-failOnViolation
| --fail-on-violation
|
--failOnViolation
| --fail-on-violation
|
-norulesetcompatibility
| --no-ruleset-compatibility
|
-cache
| --cache
|
-no-cache
| --no-cache
|
The changes in detail for CPD:
old option | new option |
---|---|
--failOnViolation
| --fail-on-violation
|
-failOnViolation
| --fail-on-violation
|
--filelist
| --file-list
|
External Contributions
- #3600: [core] Implement GNU-style long options and '--version' - Yang
- #3612: [java] Created fix for UselessStringValueOf false positive - John Armgardt
- #3648: [doc] Rename Code Inspector to Codiga - Julien Delange
Stats
- 80 commits
- 23 closed tickets & PRs
- Days since last release: 28