??-June-2020 - 6.25.0-SNAPSHOT
The PMD team is pleased to announce PMD 6.25.0-SNAPSHOT.
This is a minor release.
New and noteworthy
Scala cross compilation
Up until now the PMD Scala module has been compiled against scala 2.13 only by default. However, this makes it impossible to use pmd as a library in scala projects, that use scala 2.12, e.g. in sbt plugins. Therefore PMD now provides cross compiled pmd-scala modules for both versions: scala 2.12 and scala 2.13.
The new modules have new maven artifactIds. The old artifactId net.sourceforge.pmd:pmd-scala:6.25.0-SNAPSHOT
is still available, but is deprecated from now on. It has been demoted to be just a delegation to the new
pmd-scala_2.13
module and will be removed eventually.
The coordinates for the new modules are:
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-scala_2.12</artifactId>
<version>6.25.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-scala_2.13</artifactId>
<version>6.25.0-SNAPSHOT</version>
</dependency>
The command line version of PMD continues to use scala 2.13.
New Rules
- The new Java Rule
UnnecessaryCast
(java-codestyle
) finds casts that are unnecessary while accessing collection elements.
Modified rules
-
The Java rule
UseDiamondOperator
(java-codestyle
) now by default finds unnecessary usages of type parameters, which are nested, involve wildcards and are used within a ternary operator. These usages are usually only unnecessary with Java8 and later, when the type inference in Java has been improved.In order to avoid false positives when checking Java7 only code, the rule has the new property
java7Compatibility
, which is disabled by default. Settings this to “true” retains the old rule behaviour.
Fixed Issues
- apex-bestpractices
- #2554: [apex] Exception applying rule UnusedLocalVariable on trigger
- c#
- #2551: [c#] CPD suppression with comments doesn’t work
- java
- #2549: [java] Auxclasspath in PMD CLI does not support relative file path
- java-codestyle
- java-design
- java-errorprone
- #2544: [java] UseProperClassLoader can not detect the case with method call on intermediate variable
- scala
- #2547: [scala] Add cross compilation for scala 2.12 and 2.13
API Changes
- The maven module
net.sourceforge.pmd:pmd-scala
is deprecated. Usenet.sourceforge.pmd:pmd-scala_2.13
ornet.sourceforge.pmd:pmd-scala_2.12
instead.
Deprecated APIs
External Contributions
- #2349: [java] Optimize UnusedPrivateMethodRule - shilko2013
- #2547: [scala] Add cross compilation for scala 2.12 and 2.13 - João Ferreira
- #2567: [c#] Fix CPD suppression with comments doesn’t work - Lixon Lookose
- #2573: [java] DefaultPackage: Allow package default JUnit 5 Test methods - Craig Andrews
- #2593: [java] NPathComplexity should mention the expected NPath complexity - Artem Krosheninnikov