Thread: [pmd-devel] [ANNOUNCE] PMD 7.0.0 released
A source code analyzer
Brought to you by:
adangel,
juansotuyo
|
From: Andreas D. <and...@pm...> - 2024-03-22 09:37:12
Attachments:
OpenPGP_signature.asc
|
* Downloads: https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.0.0 * Documentation: https://docs.pmd-code.org/pmd-doc-7.0.0/ 22-March-2024 - 7.0.0 🎉 After a long time, we're excited to bring you now the next major version of PMD! 🎉 Since this is a big release, we provide here only a concise version of the release notes. We prepared a separate page with the full Detailed Release Notes for PMD 7.0.0 <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_release_notes_pmd7.html>. 🤝🙏 Many thanks to all users and contributors who were testing the release candidates and provided feedback and/or PRs! ✨ PMD 7... * ...has a new logo * ...analyzes Java 21 and Java 22 projects with even better type resolution and symbol table support * ...analyzes Kotlin and Swift * ...analyzes Apex with a new parser * ...finds duplicated code in Coco, Julia, TypeScript * ...ships 11 new rules and tons of improvements for existing rules * ...provides a new CLI interface with progress bar * ...supports Antlr based languages * ...and many more enhancements 💥 Note: Since PMD 7 is a major release, it is not a drop-in replacement for PMD 6.55.0. A detailed documentation of required changes are available in the Migration Guide for PMD 7 <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_userdocs_migrating_to_pmd7.html>. Expand to see Release Notes Table Of Contents * Changes since 7.0.0-rc4 <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changes-since-700-rc4> o New and Noteworthy <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-and-noteworthy> + Maven PMD Plugin compatibility with PMD 7 <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#maven-pmd-plugin-compatibility-with-pmd-7> + Java 22 Support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#java-22-support> + Swift Support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#swift-support> + Groovy Support (CPD) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#groovy-support-cpd> + Updated PMD Designer <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#updated-pmd-designer> + Apex Support: Replaced Jorje with fully open source front-end <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#apex-support-replaced-jorje-with-fully-open-source-front-end> + Changed: Visualforce <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-visualforce> + Changed: HTML support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-html-support> + Changed: Kotlin support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-kotlin-support> + Changed: Velocity Template Language (VTL) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-velocity-template-language-vtl> o Rule Changes <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#rule-changes> o Fixed issues <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#fixed-issues> o API Changes <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#api-changes> o External Contributions <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#external-contributions> * 🚀 Major Features and Enhancements <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#major-features-and-enhancements> o New official logo <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-official-logo> o Revamped Java module <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#revamped-java-module> o Revamped Command Line Interface <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#revamped-command-line-interface> o Full Antlr support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#full-antlr-support> o Updated PMD Designer <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#updated-pmd-designer> o New CPD report format cpdhtml-v2.xslt <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-cpd-report-format-cpdhtml-v2xslt> * 🎉 Language Related Changes <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#language-related-changes> o New: CPD support for Apache Velocity Template Language (VTL) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-cpd-support-for-apache-velocity-template-language-vtl> o New: CPD support for Coco <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-cpd-support-for-coco> o New: CPD support for Julia <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-cpd-support-for-julia> o New: CPD support for TypeScript <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-cpd-support-for-typescript> o New: Java 21 and 22 Support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-java-21-and-22-support> o New: Kotlin support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-kotlin-support> o New: Swift support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-swift-support> o Changed: Apex Support: Replaced Jorje with fully open source front-end <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-apex-support-replaced-jorje-with-fully-open-source-front-end> o Changed: CPP can now ignore identifiers in sequences (CPD) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-cpp-can-now-ignore-identifiers-in-sequences-cpd> o Changed: Groovy Support (CPD) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-groovy-support-cpd> o Changed: HTML support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-html-support> o Changed: JavaScript support <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-javascript-support> o Changed: Language versions <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-language-versions> o Changed: Rule properties <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-rule-properties> o Changed: Velocity Template Language (VTL) <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-velocity-template-language-vtl> o Changed: Visualforce <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#changed-visualforce> * 🌟 New and changed rules <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-and-changed-rules> o New Rules <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#new-rules> o Other changes <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#other-changes> * 🚨 API <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#api> * 💥 Compatibility and migration notes <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#compatibility-and-migration-notes> * 🐛 Fixed Issues <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#fixed-issues> * ✨ External Contributions <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#external-contributions> * 📈 Stats <https://sourceforge.net/p/pmd/news/2024/03/pmd-700-22-march-2024-released/#stats> Changes since 7.0.0-rc4 This section lists the most important changes from the last release candidate. The remaining section describes the complete release notes for 7.0.0. New and Noteworthy Maven PMD Plugin compatibility with PMD 7 In order to use PMD 7 with maven-pmd-plugin <https://maven.apache.org/plugins/maven-pmd-plugin/> a new compatibility module has been created. This allows to use PMD 7 by simply adding one additional dependency: 1. Follow the guide Upgrading PMD at Runtime <https://maven.apache.org/plugins/maven-pmd-plugin/examples/upgrading-PMD-at-runtime.html> 2. Add additionally the following dependency: |<dependency> <groupId>net.sourceforge.pmd</groupId> <artifactId>pmd-compat6</artifactId> <version>${pmdVersion}</version> </dependency> | It is important to add this dependency as the *first* in the list, so that maven-pmd-plugin sees the (old) compatible versions of some classes. This module is available beginning with version 7.0.0-rc4 and will be there at least for the first final version PMD 7 (7.0.0). It's not decided yet, whether we will keep updating it, after PMD 7 is finally released. Note: This compatibility module only works for the built-in rules, that are still available in PMD 7. E.g. you need to review your rulesets and look out for deprecated rules and such. See the use case I'm using only built-in rules <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_userdocs_migrating_to_pmd7.html#im-using-only-built-in-rules> in the Migration Guide for PMD 7 <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_userdocs_migrating_to_pmd7.html>. As PMD 7 revamped the Java module, if you have custom rules, you need to migrate these rules. See the use case I'm using custom rules <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_userdocs_migrating_to_pmd7.html#im-using-custom-rules> in the Migration Guide. Note: Once the default version of PMD is upgraded to PMD7 in maven-pmd-plugin (see MPMD-379 <https://issues.apache.org/jira/projects/MPMD/issues/MPMD-379>), this compatibility module is no longer needed. The module pmd-compat6 might not be maintained then any further, hence it is already declared as deprecated. No guarantee is given, that the (deprecated) module pmd-compat6 is being maintained over the whole lifetime of PMD 7. Java 22 Support This release of PMD brings support for Java 22. There are the following new standard language features, that are supported now: * JEP 456: Unnamed Variables & Patterns <https://openjdk.org/jeps/456> PMD also supports the following preview language features: * JEP 447: Statements before super(...) (Preview) <https://openjdk.org/jeps/447> * JEP 459: String Templates (Second Preview) <https://openjdk.org/jeps/459> * JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview) <https://openjdk.org/jeps/463> 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 |22-preview|: |exportPMD_JAVA_OPTS=--enable-preview pmdcheck--use-versionjava-22-preview... | Note: Support for Java 20 preview language features have been removed. The version "20-preview" is no longer available. Swift Support * limited support for Swift 5.9 (Macro Expansions) Groovy Support (CPD) * We now support parsing all Groovy features from Groovy 3 and 4. * We now support suppression <https://sourceforge.net/p/pmd/news/2024/03/pmd_userdocs_cpd.html#suppression> through |CPD-ON|/|CPD-OFF| comment pairs. * See PR #4726 <https://github.com/pmd/pmd/pull/4726> for details. Updated PMD Designer This PMD release ships a new version of the pmd-designer. The designer artifact has been renamed from "pmd-ui" to "pmd-designer". While the designer still works with Java 8, the recommended Java Runtime is Java 11 (or later) with OpenJFX 17 (or later). For the detailed changes, see PMD Designer Changelog (7.0.0) <https://github.com/pmd/pmd-designer/releases/tag/7.0.0>. Apex Support: Replaced Jorje with fully open source front-end When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source and generate an AST. This library is however a binary-blob provided as part of the Salesforce Extensions for VS Code <https://github.com/forcedotcom/salesforcedx-vscode>, and it is closed-source. This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje library prevented that PMD Apex could be used at all. Also having access to the source code, enhancements and modifications are easier to do. Under the hood, we use two open source libraries instead: * apex-parser <https://github.com/apex-dev-tools/apex-parser> originally by Kevin Jones <https://github.com/nawforce> (@nawforce). This project provides the grammar for a ANTLR based parser. * Summit-AST <https://github.com/google/summit-ast> by Google <https://github.com/google> (@google <https://sourceforge.net/u/google/profile/>) This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided. Note: This is not an official Google product. Although the parser is completely switched, there are only little known changes to the AST. These are documented in the Migration Guide for PMD 7: Apex AST <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_userdocs_migrating_to_pmd7.html#apex-ast>. With the new Apex parser, the new language constructs like User Mode Database Operations <https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_enforce_usermode.htm> and the new Null Coalescing Operator |??| <https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_NullCoalescingOperator.htm> can be parsed now. PMD should be able to parse Apex code up to version 60.0 (Spring '24). See #3766 <https://github.com/pmd/pmd/issues/3766> for details. Contributors: Aaron Hurst <https://github.com/aaronhurst-google> (@aaronhurst-google), Edward Klimoshenko <https://github.com/eklimo> (@eklimo) Changed: Visualforce There was an inconsistency between the naming of the maven module and the language id. The language id used the abbreviation "vf", while the maven module used the longer name "visualforce". This has been solved by renaming the language module to its full name "visualforce". The java packages have been renamed as well. If you import rules, you also need to adjust the paths, e.g. * |category/vf/security.xml| ➡️ |category/visualforce/security.xml| Changed: HTML support Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this is now considered stable. Changed: Kotlin support Support for Kotlin was introduced with PMD 7.0.0-rc1 as an experimental feature. With PMD 7.0.0 this is now considered stable. Changed: Velocity Template Language (VTL) The module was named just "vm" which was not a good name. Its module name, language id and package names have been renamed to "velocity". If you import rules, you also need to adjust the paths, e.g. * |category/vm/...| ➡️ |category/velocity/...| Rule Changes *New Rules* * |OperationWithHighCostInLoop| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_apex_performance.html#operationwithhighcostinloop> finds Schema class methods called in a loop, which is a potential performance issue. * |UseExplicitTypes| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#useexplicittypes> reports usages of |var| keyword, which was introduced with Java 10. * |MissingEncoding| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_xml_bestpractices.html#missingencoding> finds XML files without explicit encoding. *Changed Rules* * |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement>: The rule has a new property to allow empty blocks when they contain a comment (|allowCommentedBlocks|). * |MethodNamingConventions| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_apex_codestyle.html#methodnamingconventions>: The deprecated rule property |skipTestMethodUnderscores| has been removed. It was actually deprecated since PMD 6.15.0, but was not mentioned in the release notes back then. Use the property |testPattern| instead to configure valid names for test methods. * |CommentRequired| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_documentation.html#commentrequired>: The deprecated property |headerCommentRequirement| has been removed. Use the property |classCommentRequirement| instead. * |NonSerializableClass| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_errorprone.html#nonserializableclass>: The deprecated property |prefix| has been removed without replacement. In a serializable class all fields have to be serializable regardless of the name. *Renamed Rulesets* * |category/vf/security.xml| ➡️ |category/visualforce/security.xml| * |category/vm/bestpractices.xml| ➡️ |category/velocity/bestpractices.xml| * |category/vm/design.xml| ➡️ |category/velocity/design.xml| * |category/vm/errorprone.xml| ➡️ |category/velocity/errorprone.xml| *Removed Rules* The following previously deprecated rules have been finally removed: * Apex * performance.xml/AvoidSoqlInLoops (deleted) ➡️ use |OperationWithLimitsInLoop| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_apex_performance.html#operationwithlimitsinloop> * performance.xml/AvoidSoslInLoops (deleted) ➡️ use |OperationWithLimitsInLoop| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_apex_performance.html#operationwithlimitsinloop> * performance.xml/AvoidDmlStatementsInLoops (deleted) ➡️ use |OperationWithLimitsInLoop| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_apex_performance.html#operationwithlimitsinloop> * Java * design.xml/ExcessiveClassLength (deleted) ➡️ use |NcssCount| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_design.html#ncsscount> * design.xml/ExcessiveMethodLength (deleted) ➡️ use |NcssCount| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_design.html#ncsscount> * errorprone.xml/BeanMembersShouldSerialize (deleted) ➡️ use |NonSerializableClass| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_errorprone.html#nonserializableclass> * errorprone.xml/EmptyFinallyBlock (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyIfStmt (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyInitializer (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyStatementBlock (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyStatementNotInLoop (deleted) ➡️ use |UnnecessarySemicolon| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#unnecessarysemicolon> * errorprone.xml/EmptySwitchStatements (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptySynchronizedBlock (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyTryBlock (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> * errorprone.xml/EmptyWhileStmt (deleted) ➡️ use |EmptyControlStatement| <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_rules_java_codestyle.html#emptycontrolstatement> *Removed deprecated rulesets* The following previously deprecated rulesets have been removed. These were the left-over rulesets from PMD 5. The rules have been moved into categories with PMD 6. List of deprecated rulesets Fixed issues * cli * #4594 <https://github.com/pmd/pmd/pull/4594>: [cli] Change completion generation to runtime * #4685 <https://github.com/pmd/pmd/pull/4685>: [cli] Clarify CPD documentation, fix positional parameter handling * #4723 <https://github.com/pmd/pmd/issues/4723>: [cli] Launch fails for "bash pmd" * core * #1027 <https://github.com/pmd/pmd/issues/1027>: [core] Apply the new PropertyDescriptor<Pattern> type where applicable * #3903 <https://github.com/pmd/pmd/issues/3903>: [core] Consolidate |n.s.pmd.reporting| package * #3905 <https://github.com/pmd/pmd/issues/3905>: [core] Stabilize tree export API * #3917 <https://github.com/pmd/pmd/issues/3917>: [core] Consolidate |n.s.pmd.lang.rule| package * #4065 <https://github.com/pmd/pmd/issues/4065>: [core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer * #4309 <https://github.com/pmd/pmd/issues/4309>: [core] Cleanups in XPath area * #4312 <https://github.com/pmd/pmd/issues/4312>: [core] Remove unnecessary property |color| and system property |pmd.color| in |TextColorRenderer| * #4313 <https://github.com/pmd/pmd/issues/4313>: [core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references * #4314 <https://github.com/pmd/pmd/issues/4314>: [core] Remove ruleset compatibility filter (RuleSetFactoryCompatibility) and CLI option |--no-ruleset-compatibility| * #4348 <https://github.com/pmd/pmd/issues/4348>: [core] Consolidate @InternalApi classes * #4349 <https://github.com/pmd/pmd/issues/4349>: [core] Cleanup remaining experimental and deprecated API * #4378 <https://github.com/pmd/pmd/issues/4378>: [core] Ruleset loading processes commented rules * #4674 <https://github.com/pmd/pmd/issues/4674>: [core] WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass * #4694 <https://github.com/pmd/pmd/pull/4694>: [core] Fix line/col numbers in TokenMgrError * #4717 <https://github.com/pmd/pmd/issues/4717>: [core] XSLTRenderer doesn't close report file * #4750 <https://github.com/pmd/pmd/pull/4750>: [core] Fix flaky SummaryHTMLRenderer * #4782 <https://github.com/pmd/pmd/pull/4782>: [core] Avoid using getImage/@Image * doc * #995 <https://github.com/pmd/pmd/issues/995>: [doc] Document API evolution principles as ADR * #2511 <https://github.com/pmd/pmd/issues/2511>: [doc] Review guides for writing java/xpath rules for correctness with PMD 7 * #3175 <https://github.com/pmd/pmd/issues/3175>: [doc] Document language module features * #4308 <https://github.com/pmd/pmd/issues/4308>: [doc] Document XPath API @DeprecatedAttribute * #4319 <https://github.com/pmd/pmd/issues/4319>: [doc] Document TypeRes API and Symbols API * #4659 <https://github.com/pmd/pmd/pull/4659>: [doc] Improve ant documentation * #4669 <https://github.com/pmd/pmd/pull/4669>: [doc] Add bld PMD Extension to Tools / Integrations * #4676 <https://github.com/pmd/pmd/issues/4676>: [doc] Clarify how CPD |--ignore-literals| and |--ignore-identifiers| work * #4704 <https://github.com/pmd/pmd/issues/4704>: [doc] Multivalued properties do not accept | as a separator * miscellaneous * #4699 <https://github.com/pmd/pmd/pull/4699>: Make PMD buildable with java 21 * #4586 <https://github.com/pmd/pmd/pull/4586>: Use explicit encoding in ruleset xml files * #4642 <https://github.com/pmd/pmd/issues/4642>: Update regression tests with Java 21 language features * #4736 <https://github.com/pmd/pmd/issues/4736>: [ci] Improve build procedure * #4741 <https://github.com/pmd/pmd/pull/4741>: Add pmd-compat6 module for maven-pmd-plugin * #4749 <https://github.com/pmd/pmd/pull/4749>: Fixes NoSuchMethodError on processing errors in pmd-compat6 * #4776 <https://github.com/pmd/pmd/issues/4776>: [ci] Upgrade to ruby 3 * #4796 <https://github.com/pmd/pmd/pull/4796>: Remove deprecated and release rulesets * #4823 <https://github.com/pmd/pmd/pull/4823>: Update to use renamed pmd-designer * #4827 <https://github.com/pmd/pmd/pull/4827>: [compat6] Support config errors and cpd for csharp * #4830 <https://github.com/pmd/pmd/issues/4830>: Consolidate packages in each maven module * #4867 <https://github.com/pmd/pmd/issues/4867>: [dist] ./mvnw command not found in dist-src * apex * #3766 <https://github.com/pmd/pmd/issues/3766>: [apex] Replace Jorje with fully open source front-end * #4828 <https://github.com/pmd/pmd/issues/4828>: [apex] Support null coalescing operator ?? (apex 60) * #4845 <https://github.com/pmd/pmd/issues/4845>: [apex] Use same ANLTR version for apex-parser * apex-bestpractices * #4556 <https://github.com/pmd/pmd/issues/4556>: [apex] UnusedLocalVariable flags for variables which are using in SOQL/SOSL binds * apex-documentation * #4774 <https://github.com/pmd/pmd/issues/4774>: [apex] ApexDoc false-positive for the first method of an annotated Apex class * apex-performance * #4675 <https://github.com/pmd/pmd/issues/4675>: [apex] New Rule: OperationWithHighCostInLoop * groovy * #4726 <https://github.com/pmd/pmd/pull/4726>: [groovy] Support Groovy to 3 and 4 and CPD suppressions * java * #1307 <https://github.com/pmd/pmd/issues/1307>: [java] AccessNode API changes * #3751 <https://github.com/pmd/pmd/issues/3751>: [java] Rename some node types * #4628 <https://github.com/pmd/pmd/pull/4628>: [java] Support loading classes from java runtime images * #4753 <https://github.com/pmd/pmd/issues/4753>: [java] PMD crashes while using generics and wildcards * #4757 <https://github.com/pmd/pmd/issues/4757>: [java] Intermittent NPEs while analyzing Java code * #4794 <https://github.com/pmd/pmd/issues/4794>: [java] Support JDK 22 * java-bestpractices * #4603 <https://github.com/pmd/pmd/issues/4603>: [java] UnusedAssignment false positive in record compact constructor * #4625 <https://github.com/pmd/pmd/issues/4625>: [java] UnusedPrivateMethod false positive: Autoboxing into Number * #4817 <https://github.com/pmd/pmd/issues/4817>: [java] UnusedPrivateMethod false-positive used in lambda * java-codestyle * #2847 <https://github.com/pmd/pmd/issues/2847>: [java] New Rule: Use Explicit Types * #4239 <https://github.com/pmd/pmd/issues/4239>: [java] UnnecessaryLocalBeforeReturn - false positive with catch clause * #4578 <https://github.com/pmd/pmd/issues/4578>: [java] CommentDefaultAccessModifier comment needs to be before annotation if present * #4631 <https://github.com/pmd/pmd/issues/4631>: [java] UnnecessaryFullyQualifiedName fails to recognize illegal self reference in enums * #4645 <https://github.com/pmd/pmd/issues/4645>: [java] CommentDefaultAccessModifier - False Positive with JUnit5's ParameterizedTest * #4754 <https://github.com/pmd/pmd/pull/4754>: [java] EmptyControlStatementRule: Add allowCommentedBlocks property * #4816 <https://github.com/pmd/pmd/issues/4816>: [java] UnnecessaryImport false-positive on generic method call with on lambda * java-design * #174 <https://github.com/pmd/pmd/issues/174>: [java] SingularField false positive with switch in method that both assigns and reads field * java-errorprone * #718 <https://github.com/pmd/pmd/issues/718>: [java] BrokenNullCheck false positive with parameter/field confusion * #932 <https://github.com/pmd/pmd/issues/932>: [java] SingletonClassReturningNewInstance false positive with double assignment * #1831 <https://github.com/pmd/pmd/issues/1831>: [java] DetachedTestCase reports abstract methods * #4719 <https://github.com/pmd/pmd/pull/4719>: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string * javascript * #2305 <https://github.com/pmd/pmd/issues/2305>: [javascript] UnnecessaryBlock - false positives with destructuring assignments * #4673 <https://github.com/pmd/pmd/pull/4673>: [javascript] CPD: Added support for decorator notation * plsql * #4820 <https://github.com/pmd/pmd/issues/4820>: [plsql] WITH clause is ignored for SELECT INTO statements * swift * #4697 <https://github.com/pmd/pmd/issues/4697>: [swift] Support Swift 5.9 features (mainly macros expansion expressions) * xml-bestpractices * #4592 <https://github.com/pmd/pmd/pull/4592>: [xml] Add MissingEncoding rule API Changes See Detailed Release Notes for PMD 7 <https://docs.pmd-code.org/pmd-doc-7.0.0/pmd_release_notes_pmd7.html#700>. External Contributions * #4093 <https://github.com/pmd/pmd/pull/4093>: [apex] Summit-AST Apex module - P... [truncated message content] |