Table of Contents

29-November-2024 - 7.8.0-SNAPSHOT

The PMD team is pleased to announce PMD 7.8.0-SNAPSHOT.

This is a minor release.

๐Ÿš€ New and noteworthy

๐ŸŒŸ New and changed rules

New Rules

  • The new Apex rule QueueableWithoutFinalizer detects when the Queueable interface is used but a Finalizer is not attached. Without attaching a Finalizer, there is no way of designing error recovery actions should the Queueable action fail.

๐Ÿ› Fixed Issues

  • ant
    • #1860: [ant] Reflective access warnings on java > 9 and java < 17
  • apex
    • #5302: [apex] New Rule: Queueable Should Attach Finalizer
    • #5333: [apex] Token recognition errors for string containing unicode escape sequence
  • html
    • #5322: [html] CPD throws exception on when HTML file is missing closing tag
  • java
    • #5293: [java] Deadlock when executing PMD in multiple threads
    • #5324: [java] Issue with type inference of nested lambdas
    • #5329: [java] Type inference issue with unknown method ref in call chain
  • java-bestpractices
    • #5083: [java] UnusedPrivateMethod false positive when method reference has no target type
    • #5097: [java] UnusedPrivateMethod FP with raw type missing from the classpath
    • #5318: [java] PreserveStackTraceRule: false-positive on Pattern Matching with instanceof
  • java-performance
    • #5287: [java] TooFewBranchesForSwitch false-positive with switch using list of case constants
    • #5314: [java] InsufficientStringBufferDeclarationRule: Lack of handling for char type parameters

๐Ÿšจ API Changes

Deprecations

  • pmd-gherkin
    • GherkinBaseListener is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • GherkinBaseVisitor is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • GherkinListener is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • GherkinParser is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • GherkinVisitor is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
  • pmd-julia
    • JuliaBaseListener is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • JuliaBaseVisitor is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • JuliaListener is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • JuliaParser is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
    • JuliaVisitor is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
  • pmd-kotlin
    • UnicodeClasses is deprecated for removal. This class was never intended to be generated. It will be removed with no replacement.
  • pmd-xml

โœจ External Contributions

  • #5284: [apex] Use case-insensitive input stream to avoid choking on Unicode escape sequences - Willem A. Hajenius (@wahajenius)
  • #5303: [apex] New Rule: Queueable Should Attach Finalizer - Mitch Spano (@mitchspano)