30 July 2022
The PMD team is pleased to announce PMD 6.48.0.
This is a minor release.
This release of PMD brings support for Java 19. There are no new standard language features.
PMD supports JEP 427: Pattern Matching for switch (Third Preview) and JEP 405: Record Patterns (Preview) as preview language features.
In order to analyze a project with PMD that uses these language features,
you’ll need to enable it via the environment variable PMD_JAVA_OPTS
and select the new language
version 19-preview
:
export PMD_JAVA_OPTS=--enable-preview
./run.sh pmd -language java -version 19-preview ...
Note: Support for Java 17 preview language features have been removed. The version “17-preview” is no longer available.
Thanks to the contribution from Anne Brouwers PMD now has CPD support for the Gherkin language. It is used to defined test cases for the Cucumber testing tool for behavior-driven development.
Being based on a proper Antlr grammar, CPD can:
--debug
flag--debug
. This option has the same behavior as in PMD. It enables more verbose
logging output.isRegressionTest
of test-code
is deprecated. The new
attribute disabled
should be used instead for defining whether a rule test should be skipped or not.reinitializeRule
and useAuxClasspath
of test-code
are deprecated and assumed true.
They will not be replaced.focused
of test-code
allows disabling all tests except the focused one temporarily.ASTGuardedPattern
has been deprecated and
will be removed. It was introduced for Java 17 and Java 18 Preview as part of pattern matching for switch,
but it is no longer supported with Java 19 Preview.CPDRenderer
is deprecated. For custom CPD renderers
the new interface CPDReportRenderer
should be used.TestDescriptor
is deprecated, replaced with RuleTestDescriptor
.RuleTst
have been deprecated as internal API.Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi
annotation. You’ll also get a deprecation warning.
CPDConfiguration#setRenderer
CPDConfiguration#setCPDRenderer
CPDConfiguration#getRenderer
CPDConfiguration#getCPDRenderer
CPDConfiguration#getRendererFromString
CPDConfiguration#getCPDRendererFromString
CPDRendererAdapter
Many thanks to our sponsors: