github pmd/pmd pmd_releases/7.1.0
PMD 7.1.0 (26-April-2024)

11 days ago

26-April-2024 - 7.1.0

The PMD team is pleased to announce PMD 7.1.0.

This is a minor release.

Table Of Contents

  • 🚀 New and noteworthy
    • More robust CPD reports
    • ✨ New Rules
    • 🌟 Rule Changes
  • 🐛 Fixed Issues
  • 🚨 API Changes
    • Deprecated methods
  • ✨ External Contributions
  • 📈 Stats

🚀 New and noteworthy

More robust CPD reports

There were a number of circumstances, specially around (but not limited to) literal sequences, were CPD would
report duplicate overlapping or partially overlapping matches. These have now been fixed, and CPD will report
only the longest non-overlapping duplicate.

These improvements apply to all supported languages, irrespective of supported flags.

✨ New Rules

  • The new Java rule UnnecessaryVarargsArrayCreation reports explicit array creation
    when a varargs is expected. This is more heavy to read and could be simplified.
  • The new Java rule ConfusingArgumentToVarargsMethod reports some confusing situations
    where a varargs method is called with an inexact argument type. These may end up in a mismatch between the expected
    parameter type and the actual value.
  • The new Java rule LambdaCanBeMethodReference reports lambda expressions that can be replaced
    with a method reference. Please read the documentation of the rule for more info. This rule is now part of the Quickstart
    ruleset.

🌟 Rule Changes

🐛 Fixed Issues

  • core
    • #494: [core] Adopt JApiCmp to enforce control over API changes
    • #4942: [core] CPD: --skip-duplicate-files has no effect (7.0.0 regression)
    • #4959: [core] Upgrade saxon to 12.4
  • cli
    • #4791: [cli] Could not find or load main class
    • #4913: [cli] cpd-gui closes immediately
  • doc
    • #4901: [doc] Improve documentation on usage of violationSuppressXPath
  • apex
    • #4418: [apex] ASTAnnotation.getImage() does not return value as written in the class
  • apex-errorprone
    • #3953: [apex] EmptyCatchBlock false positive with formal (doc) comments
  • cpp
    • #2438: [cpp] Repeated Duplication blocks
  • java
    • #4899: [java] Parsing failed in ParseLock#doParse() java.io.IOException: Stream closed
    • #4902: [java] "Bad intersection, unrelated class types" for Constable[] and Enum[]
    • #4947: [java] Broken TextBlock parser
  • java-bestpractices
    • #1084: [java] Allow JUnitTestsShouldIncludeAssert to configure verification methods
    • #3216: [java] New rule: UnnecessaryVarargsArrayCreation
    • #4435: [java] [7.0-rc1] UnusedAssignment for used field
    • #4569: [java] ForLoopCanBeForeach reports on loop for (int i = 0; i < list.size(); i += 2)
    • #4618: [java] UnusedAssignment false positive with conditional assignments of fields
  • java-codestyle
    • #4602: [java] UnnecessaryImport: false positives with static imports
    • #4785: [java] False Positive: PMD Incorrectly report violation for UnnecessaryImport
    • #4779: [java] Examples in documentation of MethodArgumentCanBeFinal do not trigger the rule
    • #4881: [java] ClassNamingConventions: interfaces are identified as abstract classes (regression in 7.0.0)
  • java-design
    • #2440: [java] FinalFieldCouldBeStatic FN when the right side of the assignment is a constant expression
    • #3694: [java] SingularField ignores static variables
    • #4873: [java] AvoidCatchingGenericException: Can no longer suppress on the exception itself
  • java-errorprone
    • #2056: [java] CloseResource false-positive with URLClassLoader in cast expression
    • #4751: [java] PMD crashes when analyzing CloseResource Rule
    • #4928: [java] EmptyCatchBlock false negative when allowCommentedBlocks=true
    • #4948: [java] ImplicitSwitchFallThrough: False-positive with nested switch statements
  • java-performance
    • #3845: [java] InsufficientStringBufferDeclaration should consider literal expression
    • #4874: [java] StringInstantiation: False-positive when using new String(charArray)
    • #4886: [java] BigIntegerInstantiation: False Positive with Java 17 and BigDecimal.TWO
  • pom-errorprone
    • #4388: [pom] InvalidDependencyTypes doesn't consider dependencies at all
  • misc
    • #4967: Fix reproducible build issues with 7.0.0

🚨 API Changes

Deprecated methods

✨ External Contributions

📈 Stats

  • 205 commits
  • 71 closed tickets & PRs
  • Days since last release: 34

Don't miss a new pmd release

NewReleases is sending notifications on new releases.