diff --git a/docs/_config.yml b/docs/_config.yml index 1bfd57e8fd..fedb99d5ff 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -2,7 +2,7 @@ repository: pmd/pmd pmd: version: 7.0.0-SNAPSHOT - previous_version: 6.24.0 + previous_version: 6.25.0 date: ??-2020 release_type: major diff --git a/docs/pages/next_major_development.md b/docs/pages/next_major_development.md index 0eadb4ca8c..a36a5b7aa6 100644 --- a/docs/pages/next_major_development.md +++ b/docs/pages/next_major_development.md @@ -125,6 +125,57 @@ the breaking API changes will be performed in 7.0.0. an API is tagged as `@Deprecated` or not in the latest minor release. During the development of 7.0.0, we may decide to remove some APIs that were not tagged as deprecated, though we'll try to avoid it." %} +#### 6.25.0 + +* The maven module `net.sourceforge.pmd:pmd-scala` is deprecated. Use `net.sourceforge.pmd:pmd-scala_2.13` + or `net.sourceforge.pmd:pmd-scala_2.12` instead. + +* Rule implementation classes are internal API and should not be used by clients directly. + The rules should only be referenced via their entry in the corresponding category ruleset + (e.g. ``). + + While we definitely won't move or rename the rule classes in PMD 6.x, we might consider changes + in PMD 7.0.0 and onwards. + +##### Deprecated APIs + +###### Internal API + +Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0. +You can identify them with the `@InternalApi` annotation. You'll also get a deprecation warning. + +* {% jdoc java::lang.java.rule.AbstractIgnoredAnnotationRule %} (Java) +* {% jdoc java::lang.java.rule.AbstractInefficientZeroCheck %} (Java) +* {% jdoc java::lang.java.rule.AbstractJUnitRule %} (Java) +* {% jdoc java::lang.java.rule.AbstractJavaMetricsRule %} (Java) +* {% jdoc java::lang.java.rule.AbstractLombokAwareRule %} (Java) +* {% jdoc java::lang.java.rule.AbstractPoorMethodCall %} (Java) +* {% jdoc java::lang.java.rule.bestpractices.AbstractSunSecureRule %} (Java) +* {% jdoc java::lang.java.rule.design.AbstractNcssCountRule %} (Java) +* {% jdoc java::lang.java.rule.documentation.AbstractCommentRule %} (Java) +* {% jdoc java::lang.java.rule.performance.AbstractOptimizationRule %} (Java) +* {% jdoc java::lang.java.rule.regex.RegexHelper %} (Java) +* {% jdoc apex::lang.apex.rule.AbstractApexUnitTestRule %} (Apex) +* {% jdoc apex::lang.apex.rule.design.AbstractNcssCountRule %} (Apex) +* {% jdoc plsql::lang.plsql.rule.design.AbstractNcssCountRule %} (PLSQL) +* {% jdoc apex::lang.apex.ApexParser %} +* {% jdoc apex::lang.apex.ApexHandler %} +* {% jdoc core::RuleChain %} +* {% jdoc core::RuleSets %} +* {% jdoc !!core::RulesetsFactoryUtils#getRuleSets(java.lang.String, net.sourceforge.pmd.RuleSetFactory) %} + +###### For removal + +* {% jdoc !!core::cpd.TokenEntry#TokenEntry(java.lang.String, java.lang.String, int) %} +* {% jdoc test::testframework.AbstractTokenizerTest %}. Use CpdTextComparisonTest in module pmd-lang-test instead. + For details see + [Testing your implementation](pmd_devdocs_major_adding_new_cpd_language.html#testing-your-implementation) + in the developer documentation. +* {% jdoc !!apex::lang.apex.ast.ASTAnnotation#suppresses(core::Rule) %} (Apex) +* {% jdoc apex::lang.apex.rule.ApexXPathRule %} (Apex) +* {% jdoc java::lang.java.rule.SymbolTableTestRule %} (Java) +* {% jdoc !!java::lang.java.rule.performance.InefficientStringBufferingRule#isInStringBufferOperation(net.sourceforge.pmd.lang.ast.Node, int, java.lang.String) %} + #### 6.24.0 ##### Deprecated APIs diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md index 1c145c3cdd..8abb75f161 100644 --- a/docs/pages/release_notes.md +++ b/docs/pages/release_notes.md @@ -19,154 +19,11 @@ This is a {{ site.pmd.release_type }} 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:{{ site.pmd.version }}` -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: - -``` - - net.sourceforge.pmd - pmd-scala_2.12 - {{ site.pmd.version }} - - - - net.sourceforge.pmd - pmd-scala_2.13 - {{ site.pmd.version }} - -``` - -The command line version of PMD continues to use **scala 2.13**. - -#### New Rules - -* The new Java Rule {% rule "java/codestyle/UnnecessaryCast" %} (`java-codestyle`) - finds casts that are unnecessary while accessing collection elements. - -* The new Java Rule {% rule "java/performance/AvoidCalendarDateCreation" %} (`java-performance`) - finds usages of `java.util.Calendar` whose purpose is just to get the current date. This - can be done in a more lightweight way. - -* The new Java Rule {% rule "java/performance/UseIOStreamsWithApacheCommonsFileItem" %} (`java-performance`) - finds usage of `FileItem.get()` and `FileItem.getString()`. These two methods are problematic since - they load the whole uploaded file into memory. - -#### Modified rules - -* The Java rule {% rule "java/codestyle/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](https://github.com/pmd/pmd/issues/2554): \[apex] Exception applying rule UnusedLocalVariable on trigger -* core - * [#971](https://github.com/pmd/pmd/issues/971): \[apex]\[plsql]\[java] Deprecate overly specific base rule classes - * [#2451](https://github.com/pmd/pmd/issues/2451): \[core] Deprecate support for List attributes with XPath 2.0 - * [#2599](https://github.com/pmd/pmd/pull/2599): \[core] Fix XPath 2.0 Rule Chain Analyzer with Unions - * [#2483](https://github.com/pmd/pmd/issues/2483): \[lang-test] Support cpd tests based on text comparison. - For details see - [Testing your implementation](pmd_devdocs_major_adding_new_cpd_language.html#testing-your-implementation) - in the developer documentation. -* c# - * [#2551](https://github.com/pmd/pmd/issues/2551): \[c#] CPD suppression with comments doesn't work -* cpp - * [#1757](https://github.com/pmd/pmd/issues/1757): \[cpp] Support unicode characters -* java - * [#2549](https://github.com/pmd/pmd/issues/2549): \[java] Auxclasspath in PMD CLI does not support relative file path -* java-codestyle - * [#2545](https://github.com/pmd/pmd/issues/2545): \[java] UseDiamondOperator false negatives - * [#2573](https://github.com/pmd/pmd/pull/2573): \[java] DefaultPackage: Allow package default JUnit 5 Test methods -* java-design - * [#2563](https://github.com/pmd/pmd/pull/2563): \[java] UselessOverridingMethod false negative with already public methods - * [#2570](https://github.com/pmd/pmd/issues/2570): \[java] NPathComplexity should mention the expected NPath complexity -* java-errorprone - * [#2544](https://github.com/pmd/pmd/issues/2544): \[java] UseProperClassLoader can not detect the case with method call on intermediate variable -* java-performance - * [#2591](https://github.com/pmd/pmd/pull/2591): \[java] InefficientStringBuffering/AppendCharacterWithChar: Fix false negatives with concats in appends - * [#2600](https://github.com/pmd/pmd/pull/2600): \[java] UseStringBufferForStringAppends: fix false negative with fields -* scala - * [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13 - - ### API Changes -* The maven module `net.sourceforge.pmd:pmd-scala` is deprecated. Use `net.sourceforge.pmd:pmd-scala_2.13` - or `net.sourceforge.pmd:pmd-scala_2.12` instead. - -* Rule implementation classes are internal API and should not be used by clients directly. - The rules should only be referenced via their entry in the corresponding category ruleset - (e.g. ``). - - While we definitely won't move or rename the rule classes in PMD 6.x, we might consider changes - in PMD 7.0.0 and onwards. - -#### Deprecated APIs - -##### Internal API - -Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0. -You can identify them with the `@InternalApi` annotation. You'll also get a deprecation warning. - -* {% jdoc java::lang.java.rule.AbstractIgnoredAnnotationRule %} (Java) -* {% jdoc java::lang.java.rule.AbstractInefficientZeroCheck %} (Java) -* {% jdoc java::lang.java.rule.AbstractJUnitRule %} (Java) -* {% jdoc java::lang.java.rule.AbstractJavaMetricsRule %} (Java) -* {% jdoc java::lang.java.rule.AbstractLombokAwareRule %} (Java) -* {% jdoc java::lang.java.rule.AbstractPoorMethodCall %} (Java) -* {% jdoc java::lang.java.rule.bestpractices.AbstractSunSecureRule %} (Java) -* {% jdoc java::lang.java.rule.design.AbstractNcssCountRule %} (Java) -* {% jdoc java::lang.java.rule.documentation.AbstractCommentRule %} (Java) -* {% jdoc java::lang.java.rule.performance.AbstractOptimizationRule %} (Java) -* {% jdoc java::lang.java.rule.regex.RegexHelper %} (Java) -* {% jdoc apex::lang.apex.rule.AbstractApexUnitTestRule %} (Apex) -* {% jdoc apex::lang.apex.rule.design.AbstractNcssCountRule %} (Apex) -* {% jdoc plsql::lang.plsql.rule.design.AbstractNcssCountRule %} (PLSQL) - -##### For removal - -* {% jdoc !!core::cpd.TokenEntry#TokenEntry(java.lang.String, java.lang.String, int) %} -* {% jdoc test::testframework.AbstractTokenizerTest %}. Use CpdTextComparisonTest in module pmd-lang-test instead. - For details see - [Testing your implementation](pmd_devdocs_major_adding_new_cpd_language.html#testing-your-implementation) - in the developer documentation. -* {% jdoc !!apex::lang.apex.ast.ASTAnnotation#suppresses(core::Rule) %} (Apex) -* {% jdoc apex::lang.apex.rule.ApexXPathRule %} (Apex) -* {% jdoc java::lang.java.rule.SymbolTableTestRule %} (Java) -* {% jdoc !!java::lang.java.rule.performance.InefficientStringBufferingRule#isInStringBufferOperation(net.sourceforge.pmd.lang.ast.Node, int, java.lang.String) %} - -#### Internal API - -* {% jdoc apex::lang.apex.ApexParser %} -* {% jdoc apex::lang.apex.ApexHandler %} -* {% jdoc core::RuleChain %} -* {% jdoc core::RuleSets %} -* {% jdoc !!core::RulesetsFactoryUtils#getRuleSets(java.lang.String, net.sourceforge.pmd.RuleSetFactory) %} - ### External Contributions -* [#1932](https://github.com/pmd/pmd/pull/1932): \[java] Added 4 performance rules originating from PMD-jPinpoint-rules - [Jeroen Borgers](https://github.com/jborgers) -* [#2349](https://github.com/pmd/pmd/pull/2349): \[java] Optimize UnusedPrivateMethodRule - [shilko2013](https://github.com/shilko2013) -* [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13 - [João Ferreira](https://github.com/jtjeferreira) -* [#2567](https://github.com/pmd/pmd/pull/2567): \[c#] Fix CPD suppression with comments doesn't work - [Lixon Lookose](https://github.com/LixonLookose) -* [#2573](https://github.com/pmd/pmd/pull/2573): \[java] DefaultPackage: Allow package default JUnit 5 Test methods - [Craig Andrews](https://github.com/candrews) -* [#2593](https://github.com/pmd/pmd/pull/2593): \[java] NPathComplexity should mention the expected NPath complexity - [Artem Krosheninnikov](https://github.com/KroArtem) - {% endtocmaker %} diff --git a/docs/pages/release_notes_old.md b/docs/pages/release_notes_old.md index c9b4d88b7f..1e5ae28146 100644 --- a/docs/pages/release_notes_old.md +++ b/docs/pages/release_notes_old.md @@ -5,6 +5,179 @@ permalink: pmd_release_notes_old.html Previous versions of PMD can be downloaded here: https://github.com/pmd/pmd/releases +## 27-June-2020 - 6.25.0 + +The PMD team is pleased to announce PMD 6.25.0. + +This is a minor release. + +### Table Of Contents + +* [New and noteworthy](#new-and-noteworthy) + * [Scala cross compilation](#scala-cross-compilation) + * [New Rules](#new-rules) + * [Modified rules](#modified-rules) +* [Fixed Issues](#fixed-issues) +* [API Changes](#api-changes) + * [Deprecated APIs](#deprecated-apis) + * [Internal API](#internal-api) + * [For removal](#for-removal) +* [External Contributions](#external-contributions) +* [Stats](#stats) + +### 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` +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: + +``` + + net.sourceforge.pmd + pmd-scala_2.12 + 6.25.0 + + + + net.sourceforge.pmd + pmd-scala_2.13 + 6.25.0 + +``` + +The command line version of PMD continues to use **scala 2.13**. + +#### New Rules + +* The new Java Rule [`UnnecessaryCast`](https://pmd.github.io/pmd-6.25.0/pmd_rules_java_codestyle.html#unnecessarycast) (`java-codestyle`) + finds casts that are unnecessary while accessing collection elements. + +* The new Java Rule [`AvoidCalendarDateCreation`](https://pmd.github.io/pmd-6.25.0/pmd_rules_java_performance.html#avoidcalendardatecreation) (`java-performance`) + finds usages of `java.util.Calendar` whose purpose is just to get the current date. This + can be done in a more lightweight way. + +* The new Java Rule [`UseIOStreamsWithApacheCommonsFileItem`](https://pmd.github.io/pmd-6.25.0/pmd_rules_java_performance.html#useiostreamswithapachecommonsfileitem) (`java-performance`) + finds usage of `FileItem.get()` and `FileItem.getString()`. These two methods are problematic since + they load the whole uploaded file into memory. + +#### Modified rules + +* The Java rule [`UseDiamondOperator`](https://pmd.github.io/pmd-6.25.0/pmd_rules_java_codestyle.html#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](https://github.com/pmd/pmd/issues/2554): \[apex] Exception applying rule UnusedLocalVariable on trigger +* core + * [#971](https://github.com/pmd/pmd/issues/971): \[apex]\[plsql]\[java] Deprecate overly specific base rule classes + * [#2451](https://github.com/pmd/pmd/issues/2451): \[core] Deprecate support for List attributes with XPath 2.0 + * [#2599](https://github.com/pmd/pmd/pull/2599): \[core] Fix XPath 2.0 Rule Chain Analyzer with Unions + * [#2483](https://github.com/pmd/pmd/issues/2483): \[lang-test] Support cpd tests based on text comparison. + For details see + [Testing your implementation](pmd_devdocs_major_adding_new_cpd_language.html#testing-your-implementation) + in the developer documentation. +* c# + * [#2551](https://github.com/pmd/pmd/issues/2551): \[c#] CPD suppression with comments doesn't work +* cpp + * [#1757](https://github.com/pmd/pmd/issues/1757): \[cpp] Support unicode characters +* java + * [#2549](https://github.com/pmd/pmd/issues/2549): \[java] Auxclasspath in PMD CLI does not support relative file path +* java-codestyle + * [#2545](https://github.com/pmd/pmd/issues/2545): \[java] UseDiamondOperator false negatives + * [#2573](https://github.com/pmd/pmd/pull/2573): \[java] DefaultPackage: Allow package default JUnit 5 Test methods +* java-design + * [#2563](https://github.com/pmd/pmd/pull/2563): \[java] UselessOverridingMethod false negative with already public methods + * [#2570](https://github.com/pmd/pmd/issues/2570): \[java] NPathComplexity should mention the expected NPath complexity +* java-errorprone + * [#2544](https://github.com/pmd/pmd/issues/2544): \[java] UseProperClassLoader can not detect the case with method call on intermediate variable +* java-performance + * [#2591](https://github.com/pmd/pmd/pull/2591): \[java] InefficientStringBuffering/AppendCharacterWithChar: Fix false negatives with concats in appends + * [#2600](https://github.com/pmd/pmd/pull/2600): \[java] UseStringBufferForStringAppends: fix false negative with fields +* scala + * [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13 + + +### API Changes + +* The maven module `net.sourceforge.pmd:pmd-scala` is deprecated. Use `net.sourceforge.pmd:pmd-scala_2.13` + or `net.sourceforge.pmd:pmd-scala_2.12` instead. + +* Rule implementation classes are internal API and should not be used by clients directly. + The rules should only be referenced via their entry in the corresponding category ruleset + (e.g. ``). + + While we definitely won't move or rename the rule classes in PMD 6.x, we might consider changes + in PMD 7.0.0 and onwards. + +#### Deprecated APIs + +##### Internal API + +Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0. +You can identify them with the `@InternalApi` annotation. You'll also get a deprecation warning. + +* AbstractIgnoredAnnotationRule (Java) +* AbstractInefficientZeroCheck (Java) +* AbstractJUnitRule (Java) +* AbstractJavaMetricsRule (Java) +* AbstractLombokAwareRule (Java) +* AbstractPoorMethodCall (Java) +* AbstractSunSecureRule (Java) +* AbstractNcssCountRule (Java) +* AbstractCommentRule (Java) +* AbstractOptimizationRule (Java) +* RegexHelper (Java) +* AbstractApexUnitTestRule (Apex) +* AbstractNcssCountRule (Apex) +* AbstractNcssCountRule (PLSQL) +* ApexParser +* ApexHandler +* RuleChain +* RuleSets +* RulesetsFactoryUtils#getRuleSets + +##### For removal + +* TokenEntry#TokenEntry +* AbstractTokenizerTest. Use CpdTextComparisonTest in module pmd-lang-test instead. + For details see + [Testing your implementation](pmd_devdocs_major_adding_new_cpd_language.html#testing-your-implementation) + in the developer documentation. +* ASTAnnotation#suppresses (Apex) +* ApexXPathRule (Apex) +* SymbolTableTestRule (Java) +* InefficientStringBufferingRule#isInStringBufferOperation + +### External Contributions + +* [#1932](https://github.com/pmd/pmd/pull/1932): \[java] Added 4 performance rules originating from PMD-jPinpoint-rules - [Jeroen Borgers](https://github.com/jborgers) +* [#2349](https://github.com/pmd/pmd/pull/2349): \[java] Optimize UnusedPrivateMethodRule - [shilko2013](https://github.com/shilko2013) +* [#2547](https://github.com/pmd/pmd/pull/2547): \[scala] Add cross compilation for scala 2.12 and 2.13 - [João Ferreira](https://github.com/jtjeferreira) +* [#2567](https://github.com/pmd/pmd/pull/2567): \[c#] Fix CPD suppression with comments doesn't work - [Lixon Lookose](https://github.com/LixonLookose) +* [#2573](https://github.com/pmd/pmd/pull/2573): \[java] DefaultPackage: Allow package default JUnit 5 Test methods - [Craig Andrews](https://github.com/candrews) +* [#2593](https://github.com/pmd/pmd/pull/2593): \[java] NPathComplexity should mention the expected NPath complexity - [Artem Krosheninnikov](https://github.com/KroArtem) + +### Stats +* 135 commits +* 31 closed tickets & PRs +* Days since last release: 33 + ## 24-May-2020 - 6.24.0 The PMD team is pleased to announce PMD 6.24.0. diff --git a/pmd-scala-modules/pmd-scala-common/pom.xml b/pmd-scala-modules/pmd-scala-common/pom.xml index ae00e4fa5c..ca14bc186b 100644 --- a/pmd-scala-modules/pmd-scala-common/pom.xml +++ b/pmd-scala-modules/pmd-scala-common/pom.xml @@ -1,6 +1,5 @@ - + 4.0.0 PMD Scala Common Source and Settings pmd-scala-common diff --git a/pmd-scala-modules/pmd-scala_2.12/pom.xml b/pmd-scala-modules/pmd-scala_2.12/pom.xml index 7860dc0c4a..0be70b90aa 100644 --- a/pmd-scala-modules/pmd-scala_2.12/pom.xml +++ b/pmd-scala-modules/pmd-scala_2.12/pom.xml @@ -1,6 +1,5 @@ - + 4.0.0 PMD Scala for Scala 2.12 pmd-scala_2.12 diff --git a/pmd-scala-modules/pmd-scala_2.13/pom.xml b/pmd-scala-modules/pmd-scala_2.13/pom.xml index e6865ca5ac..4876ecf371 100644 --- a/pmd-scala-modules/pmd-scala_2.13/pom.xml +++ b/pmd-scala-modules/pmd-scala_2.13/pom.xml @@ -1,6 +1,5 @@ - + 4.0.0 PMD Scala for Scala 2.13 pmd-scala_2.13 diff --git a/pmd-scala/pom.xml b/pmd-scala/pom.xml index d9e1770e7f..27919731cd 100644 --- a/pmd-scala/pom.xml +++ b/pmd-scala/pom.xml @@ -1,7 +1,5 @@ - + 4.0.0 pmd-scala PMD Scala - Transitional package (deprecated) diff --git a/pom.xml b/pom.xml index ec1fa757c0..36843db21a 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ - 2020-05-24T15:34:33Z + 2020-06-27T09:31:26Z 8 @@ -104,7 +104,7 @@ -Xmx512m -Dfile.encoding=${project.build.sourceEncoding} - 6 + 7 6.24.0 ${settings.localRepository}/net/java/dev/javacc/javacc/${javacc.version}/javacc-${javacc.version}.jar @@ -380,12 +380,12 @@ net.sourceforge.pmd pmd-core - 6.23.0 + 6.25.0 net.sourceforge.pmd pmd-java - 6.23.0 + 6.25.0