4.2 KiB
4.2 KiB
title | permalink | keywords |
---|---|---|
PMD Release Notes | pmd_release_notes.html | changelog, release notes |
{{ site.pmd.date }} - {{ site.pmd.version }}
The PMD team is pleased to announce PMD {{ site.pmd.version }}.
This is a {{ site.pmd.release_type }} release.
{% tocmaker is_release_notes_processor %}
New and noteworthy
CPD's AnyTokenizer has been improved
The AnyTokenizer is used for languages, that don't have an own lexer/grammar based tokenizer. AnyTokenizer now handles string literals and end-of-line comments. Fortran, Perl and Ruby have been updated to use AnyTokenizer instead of their old custom tokenizer based on AbstractTokenizer. See #2758 for details.
AbstractTokenizer and the custom tokenizers of Fortran, Perl and Ruby are deprecated now.
Fixed Issues
-
cpd
-
pmd-java
- #2708: [java] False positive FinalFieldCouldBeStatic when using lombok Builder.Default
- #2738: [java] Custom rule with @ExhaustiveEnumSwitch throws NPE
- #2756: [java] TypeTestUtil fails with NPE for anonymous class
- #2759: [java] False positive in UnusedAssignment
- #2767: [java] IndexOutOfBoundsException when parsing an initializer BlockStatement
- #2783: [java] Error while parsing with lambda of custom interface
API Changes
Deprecated API
For removal
- {% jdoc !!core::RuleViolationComparator %}. Use {% jdoc !!core::RuleViolation#DEFAULT_COMPARATOR %} instead.
- {% jdoc !!core::cpd.AbstractTokenizer %}. Use {% jdoc !!core::cpd.AnyTokenizer %} instead.
- {% jdoc !!fortran::cpd.FortranTokenizer %}. Was replaced by an {% jdoc core::cpd.AnyTokenizer %}. Use {% jdoc !!fortran::cpd.FortranLanguage#getTokenizer() %} anyway.
- {% jdoc !!perl::cpd.PerlTokenizer %}. Was replaced by an {% jdoc core::cpd.AnyTokenizer %}. Use {% jdoc !!perl::cpd.PerlLanguage#getTokenizer() %} anyway.
- {% jdoc !!ruby::cpd.RubyTokenizer %}. Was replaced by an {% jdoc core::cpd.AnyTokenizer %}. Use {% jdoc !!ruby::cpd.RubyLanguage#getTokenizer() %} anyway.
- {% jdoc !!core::lang.rule.RuleReference#getOverriddenLanguage() %} and {% jdoc !!core::lang.rule.RuleReference#setLanguage(net.sourceforge.pmd.lang.Language) %}
- Antlr4 generated lexers:
- {% jdoc !!cs::lang.cs.antlr4.CSharpLexer %} will be moved to package
net.sourceforge.pmd.lang.cs.ast
with PMD 7. - {% jdoc !!dart::lang.dart.antlr4.Dart2Lexer %} will be renamed to
DartLexer
and moved to packagenet.sourceforge.pmd.lang.dart.ast
with PMD 7. All other classes in the old package will be removed. - {% jdoc !!go::lang.go.antlr4.GolangLexer %} will be moved to package
net.sourceforge.pmd.lang.go.ast
with PMD 7. All other classes in the old package will be removed. - {% jdoc !!kotlin::lang.kotlin.antlr4.Kotlin %} will be renamed to
KotlinLexer
and moved to packagenet.sourceforge.pmd.lang.kotlin.ast
with PMD 7. - {% jdoc !!lua::lang.lua.antlr4.LuaLexer %} will be moved to package
net.sourceforge.pmd.lang.lua.ast
with PMD 7. All other classes in the old package will be removed.
- {% jdoc !!cs::lang.cs.antlr4.CSharpLexer %} will be moved to package
External Contributions
- #2735: [ci] Add github actions for a fast view of pr succeed/not - XenoAmess
- #2747: [java] Don't trigger FinalFieldCouldBeStatic when field is annotated with lombok @Builder.Default - Ollie Abbey
- #2773: [java] issue-2738: Adding null check to avoid npe when switch case is default - Nimit Patel
{% endtocmaker %}