|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: PMD 6.24.0 released |
| 4 | +--- |
| 5 | + |
| 6 | +## 24-May-2020 - 6.24.0 |
| 7 | + |
| 8 | +The PMD team is pleased to announce PMD 6.24.0. |
| 9 | + |
| 10 | +This is a minor release. |
| 11 | + |
| 12 | +### Table Of Contents |
| 13 | + |
| 14 | +* [New and noteworthy](#new-and-noteworthy) |
| 15 | + * [CPD now supports XML as well](#cpd-now-supports-xml-as-well) |
| 16 | + * [Updated PMD Designer](#updated-pmd-designer) |
| 17 | + * [New Rules](#new-rules) |
| 18 | + * [Deprecated Rules](#deprecated-rules) |
| 19 | +* [Fixed Issues](#fixed-issues) |
| 20 | +* [API Changes](#api-changes) |
| 21 | + * [Deprecated APIs](#deprecated-apis) |
| 22 | + * [Experimental APIs](#experimental-apis) |
| 23 | +* [External Contributions](#external-contributions) |
| 24 | +* [Stats](#stats) |
| 25 | + |
| 26 | +### New and noteworthy |
| 27 | + |
| 28 | +#### CPD now supports XML as well |
| 29 | + |
| 30 | +Thanks to [Fernando Cosso](https://github.com/xnYi9wRezm) CPD can now find duplicates in XML files as well. |
| 31 | +This is useful to find duplicated sections in XML files. |
| 32 | + |
| 33 | +#### Updated PMD Designer |
| 34 | + |
| 35 | +This PMD release ships a new version of the pmd-designer. |
| 36 | +For the changes, see [PMD Designer Changelog](https://github.com/pmd/pmd-designer/releases/tag/6.24.0). |
| 37 | + |
| 38 | +#### New Rules |
| 39 | + |
| 40 | +* The new Java Rule [`LiteralsFirstInComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#literalsfirstincomparisons) (`java-bestpractices`) |
| 41 | + find String literals, that are used in comparisons and are not positioned first. Using the String literal |
| 42 | + as the receiver of e.g. `equals` helps to avoid NullPointerExceptions. |
| 43 | + |
| 44 | + This rule is replacing the two old rules [`PositionLiteralsFirstInComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#positionliteralsfirstincomparisons) |
| 45 | + and [`PositionLiteralsFirstInCaseInsensitiveComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#positionliteralsfirstincaseinsensitivecomparisons) and extends the check |
| 46 | + for the methods `compareTo`, `compareToIgnoreCase` and `contentEquals` in addition to `equals` and |
| 47 | + `equalsIgnoreCase`. |
| 48 | + |
| 49 | + Note: This rule also replaces the two mentioned rules in Java's quickstart ruleset. |
| 50 | + |
| 51 | +#### Deprecated Rules |
| 52 | + |
| 53 | +* The two Java rules [`PositionLiteralsFirstInComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#positionliteralsfirstincomparisons) |
| 54 | + and [`PositionLiteralsFirstInCaseInsensitiveComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#positionliteralsfirstincaseinsensitivecomparisons) have been deprecated |
| 55 | + in favor of the new rule [`LiteralsFirstInComparisons`](https://pmd.github.io/pmd-6.24.0/pmd_rules_java_bestpractices.html#literalsfirstincomparisons). |
| 56 | + |
| 57 | +### Fixed Issues |
| 58 | + |
| 59 | +* apex-bestpractices |
| 60 | + * [#2468](https://github.com/pmd/pmd/issues/2468): \[apex] Unused Local Variable fails on blocks |
| 61 | +* core |
| 62 | + * [#2444](https://github.com/pmd/pmd/pull/2444): \[core] Support reproducible builds |
| 63 | + * [#2484](https://github.com/pmd/pmd/issues/2484): \[core] Update maven-enforcer-plugin to require Java 118 |
| 64 | +* c# |
| 65 | + * [#2495](https://github.com/pmd/pmd/pull/2495): \[c#] Support for interpolated verbatim strings |
| 66 | +* java |
| 67 | + * [#2472](https://github.com/pmd/pmd/issues/2472): \[java] JavaCharStream throws an Error on invalid escape |
| 68 | +* java-bestpractices |
| 69 | + * [#2145](https://github.com/pmd/pmd/issues/2145): \[java] Deprecate rules PositionLiteralsFirstIn(CaseInsensitive)Comparisons in favor of LiteralsFirstInComparisons |
| 70 | + * [#2288](https://github.com/pmd/pmd/issues/2288): \[java] JUnitTestsShouldIncludeAssert: Add support for Hamcrest MatcherAssert.assertThat |
| 71 | + * [#2437](https://github.com/pmd/pmd/issues/2437): \[java] AvoidPrintStackTrace can't detect the case e.getCause().printStackTrace() |
| 72 | +* java-codestyle |
| 73 | + * [#2476](https://github.com/pmd/pmd/pull/2476): \[java] MethodNamingConventions - Add support for JUnit 5 method naming |
| 74 | +* java-errorprone |
| 75 | + * [#2477](https://github.com/pmd/pmd/issues/2477): \[java] JUnitSpelling false-positive for JUnit5/4 tests |
| 76 | +* swift |
| 77 | + * [#2473](https://github.com/pmd/pmd/issues/2473): \[swift] Swift 5 (up to 5.2) support for CPD |
| 78 | + |
| 79 | +### API Changes |
| 80 | + |
| 81 | +#### Deprecated APIs |
| 82 | + |
| 83 | +* <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.24.0/net/sourceforge/pmd/lang/BaseLanguageModule.html#addVersion(String,LanguageVersionHandler,boolean)"><code>BaseLanguageModule#addVersion(String, LanguageVersionHandler, boolean)</code></a> |
| 84 | +* Some members of <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.24.0/net/sourceforge/pmd/lang/ast/TokenMgrError.html#"><code>TokenMgrError</code></a>, in particular, a new constructor is available |
| 85 | + that should be preferred to the old ones |
| 86 | +* <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.24.0/net/sourceforge/pmd/lang/antlr/AntlrTokenManager.ANTLRSyntaxError.html#"><code>AntlrTokenManager.ANTLRSyntaxError</code></a> |
| 87 | + |
| 88 | +#### Experimental APIs |
| 89 | + |
| 90 | +**Note:** Experimental APIs are identified with the annotation <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.24.0/net/sourceforge/pmd/annotation/Experimental.html#"><code>Experimental</code></a>, |
| 91 | +see its javadoc for details |
| 92 | + |
| 93 | +* The experimental methods in <a href="https://docs.pmd-code.org/apidocs/pmd-core/6.24.0/net/sourceforge/pmd/lang/BaseLanguageModule.html#"><code>BaseLanguageModule</code></a> have been replaced by a |
| 94 | +definitive API. |
| 95 | + |
| 96 | +### External Contributions |
| 97 | + |
| 98 | +* [#2446](https://github.com/pmd/pmd/pull/2446): \[core] Update maven-compiler-plugin to 3.8.1 - [Artem Krosheninnikov](https://github.com/KroArtem) |
| 99 | +* [#2448](https://github.com/pmd/pmd/pull/2448): \[java] Operator Wrap check - [Harsh Kukreja](https://github.com/harsh-kukreja) |
| 100 | +* [#2449](https://github.com/pmd/pmd/pull/2449): \[plsql] Additional info in SqlStatement, FormalParameter and FetchStatement - [Grzegorz Sudolski](https://github.com/zgrzyt93) |
| 101 | +* [#2452](https://github.com/pmd/pmd/pull/2452): \[doc] Fix "Making Rulesets" doc sample code indentation - [Artur Dryomov](https://github.com/arturdryomov) |
| 102 | +* [#2457](https://github.com/pmd/pmd/pull/2457): \[xml] Adding XML to CPD supported languages - [Fernando Cosso](https://github.com/xnYi9wRezm) |
| 103 | +* [#2465](https://github.com/pmd/pmd/pull/2465): \[dependencies] Upgrade hamcrest, mockito and JUnit - [Artem Krosheninnikov](https://github.com/KroArtem) |
| 104 | +* [#2469](https://github.com/pmd/pmd/pull/2469): \[apex] fix false positive unused variable if only a method is called - [Gwilym Kuiper](https://github.com/gwilymatgearset) |
| 105 | +* [#2475](https://github.com/pmd/pmd/pull/2475): \[swift] Swift 4.2-5.2 support - [kenji21](https://github.com/kenji21) |
| 106 | +* [#2476](https://github.com/pmd/pmd/pull/2476): \[java] MethodNamingConventions - Add support for JUnit 5 method naming - [Bruno Ritz](https://github.com/birdflier) |
| 107 | +* [#2478](https://github.com/pmd/pmd/pull/2478): \[java] New rule: LiteralsFirstInComparisons - [John-Teng](https://github.com/John-Teng) |
| 108 | +* [#2479](https://github.com/pmd/pmd/pull/2479): \[java] False positive with Hamcrest's assertThat - [andreoss](https://github.com/andreoss) |
| 109 | +* [#2481](https://github.com/pmd/pmd/pull/2481): \[java] Fix JUnitSpellingRule false positive - [Artem Krosheninnikov](https://github.com/KroArtem) |
| 110 | +* [#2493](https://github.com/pmd/pmd/pull/2493): \[java] Deprecate redundant String Comparison rules - [John-Teng](https://github.com/John-Teng) |
| 111 | +* [#2495](https://github.com/pmd/pmd/pull/2495): \[c#] Support for interpolated verbatim strings - [Maikel Steneker](https://github.com/maikelsteneker) |
| 112 | + |
| 113 | +### Stats |
| 114 | +* 114 commits |
| 115 | +* 29 closed tickets & PRs |
| 116 | +* Days since last release: 30 |
0 commit comments