2017-08-15 14:08:48 +02:00
---
title: PMD Release Notes
permalink: pmd_release_notes.html
keywords: changelog, release notes
---
2014-01-03 11:55:46 +01:00
2018-09-02 14:30:21 +02:00
## {{ site.pmd.date }} - {{ site.pmd.version }}
2016-04-23 18:30:13 +02:00
2018-08-14 17:07:53 +02:00
The PMD team is pleased to announce PMD {{ site.pmd.version }}.
2016-07-27 22:03:51 +02:00
2018-08-14 17:07:53 +02:00
This is a {{ site.pmd.release_type }} release.
2016-07-07 20:48:01 +02:00
2018-09-30 10:47:07 +02:00
{% tocmaker is_release_notes_processor %}
2017-04-29 20:22:28 +02:00
2018-01-21 16:45:02 +01:00
### New and noteworthy
2018-01-01 16:33:35 +01:00
2018-12-22 23:08:23 +01:00
#### New Rules
* The new Java rule {% rule "java/bestpractices/ForLoopVariableCount" %} (`java-bestpractices` ) checks for
the number of control variables in a for-loop. Having a lot of control variables makes it harder to understand
what the loop does. The maximum allowed number of variables is by default 1 and can be configured by a
property.
2018-12-22 23:26:07 +01:00
* The new Java rule {% rule "java/bestpractices/AvoidReassigningLoopVariables" %} (`java-bestpractices` ) searches
for loop variables that are reassigned. Changing the loop variables additionally to the loop itself can lead to
hard-to-find bugs.
2018-12-27 10:29:28 +01:00
* The new Java rule {% rule "java/codestyle/UseDiamondOperator" %} (`java-codestyle` ) looks for constructor
calls with explicit type parameters. Since Java 1.7, these type parameters are not necessary anymore, as they
can be inferred now.
2018-11-14 20:10:34 +01:00
#### Modified Rules
2018-12-13 08:54:41 +01:00
* The Java rule {% rule "java/codestyle/LocalVariableCouldBeFinal" %} (`java-codestyle` ) has a new
property `ignoreForEachDecl` , which is by default disabled. The new property allows for ignoring
non-final loop variables in a for-each statement.
2016-12-13 13:38:59 -03:00
### Fixed Issues
2018-09-05 01:16:04 -03:00
2018-12-22 23:37:32 +01:00
* apex
* [#1542 ](https://github.com/pmd/pmd/pull/1542 ): \[apex] Include the documentation category
2019-01-05 23:18:04 +01:00
* java
* [#1556 ](https://github.com/pmd/pmd/issues/1556 ): \[java] Default methods should not be considered abstract
2018-12-11 08:18:39 +01:00
* java-bestpractices
* [#658 ](https://github.com/pmd/pmd/issues/658 ): \[java] OneDeclarationPerLine: False positive for loops
2018-12-22 23:26:07 +01:00
* [#1518 ](https://github.com/pmd/pmd/issues/1518 ): \[java] New rule: AvoidReassigningLoopVariable
2018-12-22 23:08:23 +01:00
* [#1519 ](https://github.com/pmd/pmd/issues/1519 ): \[java] New rule: ForLoopVariableCount
2018-11-05 00:00:20 -03:00
* java-codestyle
2018-12-13 08:54:41 +01:00
* [#1513 ](https://github.com/pmd/pmd/issues/1513 ): \[java] LocalVariableCouldBeFinal: allow excluding the variable in a for-each loop
2018-12-27 10:29:28 +01:00
* [#1517 ](https://github.com/pmd/pmd/issues/1517 ): \[java] New Rule: UseDiamondOperator
2018-12-13 08:36:37 +01:00
* java-errorprone
* [#1035 ](https://github.com/pmd/pmd/issues/1035 ): \[java] ReturnFromFinallyBlock: False positive on lambda expression in finally block
2019-01-08 20:42:18 -03:00
* [#1549 ](https://github.com/pmd/pmd/issues/1549 ): \[java] NPE in PMD 6.8.0 InvalidSlf4jMessageFormat
2018-12-12 09:44:35 +01:00
* plsql
2018-12-13 15:47:42 +01:00
* [#1507 ](https://github.com/pmd/pmd/issues/1507 ): \[plsql] Parse Exception when using '||' operator in where clause
2019-01-08 20:42:18 -03:00
* [#1508 ](https://github.com/pmd/pmd/issues/1508 ): \[plsql] Parse Exception when using SELECT COUNT(\*)
2018-12-13 17:03:13 +01:00
* [#1509 ](https://github.com/pmd/pmd/issues/1509 ): \[plsql] Parse Exception with OUTER/INNER Joins
2018-12-13 17:25:48 +01:00
* [#1511 ](https://github.com/pmd/pmd/issues/1511 ): \[plsql] Parse Exception with IS NOT NULL
2018-12-11 08:18:39 +01:00
2018-04-29 09:57:56 +02:00
### API Changes
2018-03-27 14:09:36 +02:00
2017-12-20 23:24:37 -03:00
### External Contributions
2018-06-09 01:52:45 +02:00
2018-12-13 08:36:37 +01:00
* [#1503 ](https://github.com/pmd/pmd/pull/1503 ): \[java] Fix for ReturnFromFinallyBlock false-positives - [RishabhDeep Singh ](https://github.com/rishabhdeepsingh )
2018-12-13 08:54:41 +01:00
* [#1514 ](https://github.com/pmd/pmd/pull/1514 ): \[java] LocalVariableCouldBeFinal: allow excluding the variable in a for-each loop - [Kris Scheibe ](https://github.com/kris-scheibe )
2018-12-11 08:18:39 +01:00
* [#1516 ](https://github.com/pmd/pmd/pull/1516 ): \[java] OneDeclarationPerLine: Don't report multiple variables in a for statement. - [Kris Scheibe ](https://github.com/kris-scheibe )
2018-12-22 23:08:23 +01:00
* [#1520 ](https://github.com/pmd/pmd/pull/1520 ): \[java] New rule: ForLoopVariableCount: check the number of control variables in a for loop - [Kris Scheibe ](https://github.com/kris-scheibe )
2018-12-12 09:56:48 +01:00
* [#1521 ](https://github.com/pmd/pmd/pull/1521 ): \[java] Upgrade to ASM7 for JDK 11 support - [Mark Pritchard ](https://github.com/markpritchard )
2018-12-22 23:26:07 +01:00
* [#1530 ](https://github.com/pmd/pmd/pull/1530 ): \[java] New rule: AvoidReassigningLoopVariables - [Kris Scheibe ](https://github.com/kris-scheibe )
2018-12-27 10:29:28 +01:00
* [#1534 ](https://github.com/pmd/pmd/pull/1534 ): \[java] This is the change regarding the usediamondoperator #1517 - [hemanshu070 ](https://github.com/hemanshu070 )
2019-01-07 14:11:16 +01:00
* [#1545 ](https://github.com/pmd/pmd/pull/1545 ): \[doc] fixing dead links + tool to check for dead links automatically - [Kris Scheibe ](https://github.com/kris-scheibe )
2019-01-08 20:42:18 -03:00
* [#1551 ](https://github.com/pmd/pmd/pull/1551 ): \[java] InvalidSlf4jMessageFormatRule should not throw NPE for enums - [Robbie Martinus ](https://github.com/rmartinus )
2018-06-09 01:52:45 +02:00
2018-08-18 16:44:45 +02:00
{% endtocmaker %}
2018-09-02 14:30:21 +02:00