diff --git a/404.html b/404.html index a14ca216f3..b33ab9c65f 100644 --- a/404.html +++ b/404.html @@ -85,8 +85,8 @@
diff --git a/feed.xml b/feed.xml
index df6f0d9cb9..08009da8f3 100644
--- a/feed.xml
+++ b/feed.xml
@@ -5,8 +5,8 @@
diff --git a/license.html b/license.html
index bd700899ac..727af0866d 100644
--- a/license.html
+++ b/license.html
@@ -85,8 +85,8 @@
diff --git a/news.html b/news.html
index 78231855c9..c9fcbf175a 100644
--- a/news.html
+++ b/news.html
@@ -85,8 +85,8 @@
diff --git a/news_archive.html b/news_archive.html
index 04583f57b3..e5b52354f9 100644
--- a/news_archive.html
+++ b/news_archive.html
@@ -85,8 +85,8 @@
diff --git a/pmd_about_help.html b/pmd_about_help.html
index 038265828e..6f78bf6a84 100644
--- a/pmd_about_help.html
+++ b/pmd_about_help.html
@@ -85,8 +85,8 @@
diff --git a/pmd_devdocs_building.html b/pmd_devdocs_building.html
index 351ba78da6..ebe54a5d62 100644
--- a/pmd_devdocs_building.html
+++ b/pmd_devdocs_building.html
@@ -85,8 +85,8 @@
[tom@hal building]$ ls -l
total 5716
--rw-rw-r-- 1 tom tom 5837216 Jul 17 13:09 pmd-src-7.0.0-SNAPSHOT.zip
-[tom@hal building]$ unzip -q pmd-src-7.0.0-SNAPSHOT.zip
+-rw-rw-r-- 1 tom tom 5837216 Jul 17 13:09 pmd-src-7.0.1-SNAPSHOT.zip
+[tom@hal building]$ unzip -q pmd-src-7.0.1-SNAPSHOT.zip
[tom@hal building]$
Now cd down into the pmd
directory:
[tom@hal building]$ cd pmd-src-7.0.0-SNAPSHOT
-[tom@hal pmd-src-7.0.0-SNAPSHOT]$ ls -l | grep pom.xml
+[tom@hal building]$ cd pmd-src-7.0.1-SNAPSHOT
+[tom@hal pmd-src-7.0.1-SNAPSHOT]$ ls -l | grep pom.xml
-rw-rw-r-- 1 tom tom 36482 14\. Nov 17:36 pom.xml
-[tom@hal pmd-src-7.0.0-SNAPSHOT]$
+[tom@hal pmd-src-7.0.1-SNAPSHOT]$
That’s the project configuration for maven… let’s compile!
-[tom@hal pmd-src-7.0.0-SNAPSHOT]$ ./mvnw clean verify
+[tom@hal pmd-src-7.0.1-SNAPSHOT]$ ./mvnw clean verify
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
@@ -1942,7 +1942,7 @@ total 5716
[INFO] Finished at: 2015-11-14T17:46:06+01:00
[INFO] Final Memory: 63M/765M
[INFO] ------------------------------------------------------------------------
-[tom@hal pmd-src-7.0.0-SNAPSHOT]$
+[tom@hal pmd-src-7.0.1-SNAPSHOT]$
Now the source and binary distribution zip files can be found in the folder pmd-dist/target
.
@@ -1991,7 +1991,7 @@ They’re also in the jar file that’s included with both the source and binary
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_development.html b/pmd_devdocs_development.html
index 3e139e1c33..e5683c8c7d 100644
--- a/pmd_devdocs_development.html
+++ b/pmd_devdocs_development.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1944,7 +1944,7 @@ every push. Each pull request is built as well.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- March 2024
Site last generated: Mar 21, 2024
+ March 2024
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_how_pmd_works.html b/pmd_devdocs_how_pmd_works.html
index 3794b5f385..e34132bb5b 100644
--- a/pmd_devdocs_how_pmd_works.html
+++ b/pmd_devdocs_how_pmd_works.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1875,7 +1875,7 @@
Overview
-The processing starts with the main class PmdAnalysis
.
+The processing starts with the main class PmdAnalysis
.
- Parse command line parameters (see net.sourceforge.pmd.cli.PMDParameters)
@@ -1955,7 +1955,7 @@ type resolution information and DFA nodes.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2017
Site last generated: Mar 21, 2024
+ September 2017
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_logging.html b/pmd_devdocs_logging.html
index 4ece8741a0..e5feacb977 100644
--- a/pmd_devdocs_logging.html
+++ b/pmd_devdocs_logging.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1960,7 +1960,7 @@ The default configuration is provided in
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_major_adding_new_cpd_language.html b/pmd_devdocs_major_adding_new_cpd_language.html
index 8438abe6cc..7655621106 100644
--- a/pmd_devdocs_major_adding_new_cpd_language.html
+++ b/pmd_devdocs_major_adding_new_cpd_language.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1875,7 +1875,7 @@
Adding support for a CPD language
-CPD works generically on the tokens produced by a CpdLexer
.
+
CPD works generically on the tokens produced by a CpdLexer
.
To add support for a new language, the crucial piece is writing a CpdLexer that
splits the source file into the tokens specific to your language. Thankfully you
can use a stock Antlr grammar or JavaCC
@@ -1894,14 +1894,14 @@ other languages.
is automatically available in the binary distribution (pmd-dist).
- - Implement a
CpdLexer
.
+ - Implement a
CpdLexer
.
-
For Antlr grammars you can take the grammar from antlr/grammars-v4 and place it in src/main/antlr4
followed by the package name of the language. You then need to call the appropriate ant wrapper to generate
the lexer from the grammar. To do so, edit pom.xml
(eg like the Golang module).
Once that is done, mvn generate-sources
should generate the lexer sources for you.
- You can now implement a CpdLexer, for instance by extending AntlrCpdLexer
. The following reproduces the Go implementation:
+
You can now implement a CpdLexer, for instance by extending AntlrCpdLexer
. The following reproduces the Go implementation:
```java
// mind the package convention if you are going to make a PR
package net.sourceforge.pmd.lang.go.cpd;
@@ -1918,13 +1918,13 @@ Once that is done, mvn genera
- For JavaCC grammars, place your grammar in
etc/grammar
and edit the pom.xml
like the Python implementation does.
-You can then subclass JavaccCpdLexer
instead of AntlrCpdLexer.
+You can then subclass JavaccCpdLexer
instead of AntlrCpdLexer.
- For any other scenario just implement the interface however you can. Look at the Scala or Apex module for existing implementations.
-
-
Create a Language
implementation, and make it implement CpdCapableLanguage
.
-If your language only supports CPD, then you can subclass CpdOnlyLanguageModuleBase
to get going:
+ Create a Language
implementation, and make it implement CpdCapableLanguage
.
+If your language only supports CPD, then you can subclass CpdOnlyLanguageModuleBase
to get going:
// mind the package convention if you are going to make a PR
package net.sourceforge.pmd.lang.go;
@@ -1946,7 +1946,7 @@ If your language only supports CPD, then you can subclass src/main/resources/META-INF/services/net.sourceforge.pmd.lang.Language
.
- At this point the new language module should be available in CPD
and usable by CPD like any other language.
+ At this point the new language module should be available in CPD
and usable by CPD like any other language.
-
Update the test that asserts the list of supported languages by updating the SUPPORTED_LANGUAGES
constant in BinaryDistributionIT.
@@ -1979,15 +1979,15 @@ There is also the following Jekyll Include, that creates summary box for the lan
Declaring CpdLexer options
To make the CpdLexer configurable, first define some property descriptors using
-PropertyFactory
. Look at CpdLanguageProperties
+PropertyFactory
. Look at CpdLanguageProperties
for some predefined ones which you can reuse (prefer reusing property descriptors if you can).
-You need to override newPropertyBundle
+You need to override newPropertyBundle
and call definePropertyDescriptor
to register the descriptors.
After that you can access the values of the properties from the parameter
-of createCpdTokenizer
.
+of createCpdTokenizer
.
-To implement simple token filtering, you can use BaseTokenFilter
-as a base class, or another base class in net.sourceforge.pmd.cpd.impl
.
+
To implement simple token filtering, you can use BaseTokenFilter
+as a base class, or another base class in net.sourceforge.pmd.cpd.impl
.
Take a look at the Kotlin token filter implementation, or the Java one.
Testing your implementation
@@ -1995,7 +1995,7 @@ Take a look at the pmd-lang-test (scope test
) in your pom.xml
.
This contains utilities to test your CpdLexer.
-Create a test class extending from CpdTextComparisonTest
.
+
Create a test class extending from CpdTextComparisonTest
.
To add tests, you need to write regular JUnit @Test
-annotated methods, and
call the method doTest
with the name of the test file.
@@ -2082,7 +2082,7 @@ call the method doTest
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- April 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ April 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_major_adding_new_language_antlr.html b/pmd_devdocs_major_adding_new_language_antlr.html
index 8872d6152b..4271481b63 100644
--- a/pmd_devdocs_major_adding_new_language_antlr.html
+++ b/pmd_devdocs_major_adding_new_language_antlr.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2029,7 +2029,7 @@ implementation that you need to extend to create your own adapter as we do with
- It can be used to provide other features for your language like
- violation suppression logic
- ViolationDecorator
s, to add additional language specific information to the
+ ViolationDecorator
s, to add additional language specific information to the
created violations. The Java language module uses this to
provide the method name or class name, where the violation occurred.
- metrics
@@ -2210,7 +2210,7 @@ syntax tree) is not suitable to add methods such as
diff --git a/pmd_devdocs_major_adding_new_language_javacc.html b/pmd_devdocs_major_adding_new_language_javacc.html
index 69824de939..208b6d05cc 100644
--- a/pmd_devdocs_major_adding_new_language_javacc.html
+++ b/pmd_devdocs_major_adding_new_language_javacc.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1965,7 +1965,7 @@ all the available tokens in the field ViolationDecorator
s, to add additional language specific information to the
+ ViolationDecorator
s, to add additional language specific information to the
created violations. The Java language module uses this to
provide the method name or class name, where the violation occurred.
- metrics (see below “Optional features”)
@@ -2120,7 +2120,7 @@ have more control over this, there are two annotations that can be used for AST
-
-
DeprecatedAttribute
: Getters might be annotated with that indicating, that
+
DeprecatedAttribute
: Getters might be annotated with that indicating, that
this getter method should not be used in XPath rules. When a XPath rule uses such a method, a warning is
issued. If the method additionally has the standard Java @Deprecated
annotation, then the getter is also
deprecated for java usage. Otherwise, the getter is only deprecated for usage in XPath rules.
@@ -2129,7 +2129,7 @@ deprecated for java usage. Otherwise, the getter is only deprecated for usage in
attribute replaceWith
should be used.
-
-
NoAttribute
: This annotation can be used on an AST node type or on individual
+
NoAttribute
: This annotation can be used on an AST node type or on individual
methods in order to filter out which methods are available for XPath rules.
When used on a type, either all methods can be filtered or only inherited methods (see attribute scope
).
When used directly on an individual method, then only this method will be filtered out.
@@ -2179,10 +2179,10 @@ This can be achieved with Rule Designer:
- Create a package
lang.<langname>.metrics
- Create a utility class
<langname>Metrics
- Implement new metrics and add them as static constants. Be sure to document them.
- - Implement
getLanguageMetricsProvider
, to make the metrics available in the designer.
+ - Implement
getLanguageMetricsProvider
, to make the metrics available in the designer.
-See JavaMetrics
for an example.
+See JavaMetrics
for an example.
Symbol table
@@ -2200,7 +2200,7 @@ see Java-specific features and guidance.
Note:
With PMD 7.0.0 the symbol table and type resolution implementation has been
rewritten from scratch. There is still an old API for symbol table support, that is used by PLSQL,
-see net.sourceforge.pmd.lang.symboltable
. This will be deprecated and should not be used.
+see net.sourceforge.pmd.lang.symboltable
. This will be deprecated and should not be used.
Type resolution
@@ -2273,7 +2273,7 @@ see Java-specific features and guidance.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- December 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ December 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_major_rule_guidelines.html b/pmd_devdocs_major_rule_guidelines.html
index 9495d4b5c9..c6328b5924 100644
--- a/pmd_devdocs_major_rule_guidelines.html
+++ b/pmd_devdocs_major_rule_guidelines.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2008,7 +2008,7 @@ non-private”).
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- August, 2021
Site last generated: Mar 21, 2024
+ August, 2021
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_pmdtester.html b/pmd_devdocs_pmdtester.html
index 09f27f0a81..2c30b986c0 100644
--- a/pmd_devdocs_pmdtester.html
+++ b/pmd_devdocs_pmdtester.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1925,7 +1925,7 @@ Regression difference reports are commented back to the PR for the reviewer’s
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_roadmap.html b/pmd_devdocs_roadmap.html
index 41a774503c..a2b15f2db3 100644
--- a/pmd_devdocs_roadmap.html
+++ b/pmd_devdocs_roadmap.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2046,7 +2046,7 @@ This should be configurable on per Rule basis similar to TR and SymbolTable.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_rule_deprecation_policy.html b/pmd_devdocs_rule_deprecation_policy.html
index f739a0fac8..b45242dcb7 100644
--- a/pmd_devdocs_rule_deprecation_policy.html
+++ b/pmd_devdocs_rule_deprecation_policy.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2016,7 +2016,7 @@ major release of PMD.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- November 15, 2019
Site last generated: Mar 21, 2024
+ November 15, 2019
Site last generated: Mar 22, 2024
diff --git a/pmd_devdocs_writing_documentation.html b/pmd_devdocs_writing_documentation.html
index 8950317813..7b89d389a1 100644
--- a/pmd_devdocs_writing_documentation.html
+++ b/pmd_devdocs_writing_documentation.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1945,47 +1945,47 @@ all formatting inside the delimiters, and allow to write code samples without
{% jdoc core::lang.rule.Rule %}
- Rule
+ Rule
{% jdoc !q!core::lang.rule.Rule %}
- net.sourceforge.pmd.lang.rule.Rule
+ net.sourceforge.pmd.lang.rule.Rule
{% jdoc core::lang.rule.Rule#setName(java.lang.String) %}
- setName
+ setName
{% jdoc !c!core::lang.rule.Rule#setName(java.lang.String) %}
- Rule#setName
+ Rule#setName
{% jdoc !a!core::lang.rule.Rule#setName(java.lang.String) %}
- setName(String)
+ setName(String)
{% jdoc !ac!core::lang.rule.Rule#setName(java.lang.String) %}
- Rule#setName(String)
+ Rule#setName(String)
{% jdoc core::properties.PropertyDescriptor %}
- PropertyDescriptor
+ PropertyDescriptor
{% jdoc_nspace :jast java::lang.java.ast %}{% jdoc jast::ASTTypeDeclaration %}
- ASTTypeDeclaration
+ ASTTypeDeclaration
{% jdoc_nspace :jast java::lang.java.ast %}{% jdoc_package :jast %}
- net.sourceforge.pmd.lang.java.ast
+ net.sourceforge.pmd.lang.java.ast
{% jdoc_nspace :PrD core::properties.PropertyDescriptor %}{% jdoc !ac!:PrD#uiOrder() %}
- PropertyDescriptor#uiOrder()
+ PropertyDescriptor#uiOrder()
{% jdoc_old core::Rule %}
- Rule
+ Rule
@@ -2162,7 +2162,7 @@ by specifying -Dpmd.doc.check
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_languages_apex.html b/pmd_languages_apex.html
index 2a3eaa9513..b43b53d557 100644
--- a/pmd_languages_apex.html
+++ b/pmd_languages_apex.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1886,7 +1886,7 @@ transaction control statements on the Salesforce Platform server, in conjunction
- Since PMD 5.5.0
-- Implementation:
ApexLanguageModule
+- Implementation:
ApexLanguageModule
- Id: apex
- PMD: ✔️
- CPD: ✔️
@@ -1896,12 +1896,12 @@ transaction control statements on the Salesforce Platform server, in conjunction
Metrics framework
-In order to use code metrics in Apex, use the metrics constants in ApexMetrics
,
-together with MetricsUtil
.
+In order to use code metrics in Apex, use the metrics constants in ApexMetrics
,
+together with MetricsUtil
.
Multifile Analysis
-Integration happens in ApexMultifileAnalysis
. It uses
+
Integration happens in ApexMultifileAnalysis
. It uses
ApexLink. For detailed information, see also Apexlink POC #2830.
Note: ApexLink’s new home: https://github.com/apex-dev-tools
@@ -1967,7 +1967,7 @@ and generate an AST. This library is however a binary-blob provided as part of t
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_coco.html b/pmd_languages_coco.html
index fbd354be3f..8ac1b45a04 100644
--- a/pmd_languages_coco.html
+++ b/pmd_languages_coco.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ It is part of the Coco Platform from https://cocot
- Since PMD 7.0.0
-- Implementation:
CocoLanguageModule
+- Implementation:
CocoLanguageModule
- Id: coco
- PMD: ❌
- CPD: ✔️
@@ -1942,7 +1942,7 @@ It is part of the Coco Platform from https://cocot
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_configuration.html b/pmd_languages_configuration.html
index 0c27eb4a39..e093fa0ccf 100644
--- a/pmd_languages_configuration.html
+++ b/pmd_languages_configuration.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1893,7 +1893,7 @@ completely in uppercase:
Properties whose name start with CPD are used to configure CPD CpdLexer options.
Programmatically, the language properties can be set on PMDConfiguration
(or CPDConfiguration
) before using the
-PmdAnalysis
(or CpdAnalysis
) instance
+PmdAnalysis
(or CpdAnalysis
) instance
to start the analysis:
PMDConfiguration configuration = new PMDConfiguration();
@@ -1923,7 +1923,7 @@ version of the language will be used.
CPD language properties
-Many languages support the following properties, which are centrally defined in CpdLanguageProperties
:
+Many languages support the following properties, which are centrally defined in CpdLanguageProperties
:
-
@@ -1960,8 +1960,8 @@ appear to have the same value.
-Note: CPDConfiguration
has convenience methods to control these options, e.g.
-setIgnoreAnnotations
.
+Note: CPDConfiguration
has convenience methods to control these options, e.g.
+setIgnoreAnnotations
.
Java language properties
@@ -2064,7 +2064,7 @@ that is conditionally compiled out. Set this property to empty to disable this.<
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- February 2024 (7.0.0)
Site last generated: Mar 21, 2024
+ February 2024 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_cpp.html b/pmd_languages_cpp.html
index ddf05f235f..eec78a76ef 100644
--- a/pmd_languages_cpp.html
+++ b/pmd_languages_cpp.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
- Since PMD 3.5
-- Implementation:
CppLanguageModule
+- Implementation:
CppLanguageModule
- Id: cpp
- PMD: ❌
- CPD: ✔️
@@ -1933,7 +1933,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_cs.html b/pmd_languages_cs.html
index debfea25d7..d5af08d96a 100644
--- a/pmd_languages_cs.html
+++ b/pmd_languages_cs.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
- Since PMD 4.3
-- Implementation:
CsLanguageModule
+- Implementation:
CsLanguageModule
- Id: cs
- PMD: ❌
- CPD: ✔️
@@ -1930,7 +1930,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_dart.html b/pmd_languages_dart.html
index 1348b79b79..329f671f1a 100644
--- a/pmd_languages_dart.html
+++ b/pmd_languages_dart.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 6.14.0
-- Implementation:
DartLanguageModule
+- Implementation:
DartLanguageModule
- Id: dart
- PMD: ❌
- CPD: ✔️
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_fortran.html b/pmd_languages_fortran.html
index 6b4ffd1f55..8e25fa27a5 100644
--- a/pmd_languages_fortran.html
+++ b/pmd_languages_fortran.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
-- Implementation:
FortranLanguageModule
+- Implementation:
FortranLanguageModule
- Id: fortran
- PMD: ❌
- CPD: ✔️
@@ -1930,7 +1930,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_gherkin.html b/pmd_languages_gherkin.html
index f5426771fc..9253e659a9 100644
--- a/pmd_languages_gherkin.html
+++ b/pmd_languages_gherkin.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@ The Gherkin syntax is designed to be non-technical, making it human-readable for
- Since PMD 6.48.0
-- Implementation:
GherkinLanguageModule
+- Implementation:
GherkinLanguageModule
- Id: gherkin
- PMD: ❌
- CPD: ✔️
@@ -1943,7 +1943,7 @@ languages, CPD currently supports only the English version of the Gherkin langua
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_go.html b/pmd_languages_go.html
index ecb8e7492e..a1ac47389f 100644
--- a/pmd_languages_go.html
+++ b/pmd_languages_go.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 5.2.0
-- Implementation:
GoLanguageModule
+- Implementation:
GoLanguageModule
- Id: go
- PMD: ❌
- CPD: ✔️
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_groovy.html b/pmd_languages_groovy.html
index f4dae59d01..254d9da36e 100644
--- a/pmd_languages_groovy.html
+++ b/pmd_languages_groovy.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1886,7 +1886,7 @@ familiar and easy to learn syntax.
- Since PMD 5.5.2
-- Implementation:
GroovyLanguageModule
+- Implementation:
GroovyLanguageModule
- Id: groovy
- PMD: ❌
- CPD: ✔️
@@ -1945,7 +1945,7 @@ familiar and easy to learn syntax.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_html.html b/pmd_languages_html.html
index 50645eb770..0d6fb1e2b4 100644
--- a/pmd_languages_html.html
+++ b/pmd_languages_html.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
- Since PMD 6.45.0
-- Implementation:
HtmlLanguageModule
+- Implementation:
HtmlLanguageModule
- Id: html
- PMD: ✔️
- CPD: ✔️
@@ -1942,7 +1942,7 @@ so that you have to select attributes by e.g.
diff --git a/pmd_languages_index.html b/pmd_languages_index.html
index 960a2d2e93..0e1b52d8e5 100644
--- a/pmd_languages_index.html
+++ b/pmd_languages_index.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1913,7 +1913,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_java.html b/pmd_languages_java.html
index 20b9b0b6a2..1cfb54b9a4 100644
--- a/pmd_languages_java.html
+++ b/pmd_languages_java.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
- Since PMD 1.0.0
-- Implementation:
JavaLanguageModule
+- Implementation:
JavaLanguageModule
- Id: java
- PMD: ✔️
- CPD: ✔️
@@ -2102,42 +2102,42 @@ Java 11 (or later) for the auxClasspath allows PMD to correctly identify the mis
Symbol table APIs
-Symbol table API related classes are in the package net.sourceforge.pmd.lang.java.symbols
.
-The root interface for symbols is JElementSymbol
.
+Symbol table API related classes are in the package net.sourceforge.pmd.lang.java.symbols
.
+The root interface for symbols is JElementSymbol
.
-The symbol table can be requested on any node with the method getSymbolTable
.
-This returns a JSymbolTable
which gives you access to variables, methods and types that are
+
The symbol table can be requested on any node with the method getSymbolTable
.
+This returns a JSymbolTable
which gives you access to variables, methods and types that are
within scope.
-A ASTExpression
might represent a ASTAssignableExpr.ASTNamedReferenceExpr
+
A ASTExpression
might represent a ASTAssignableExpr.ASTNamedReferenceExpr
if it e.g. references a variable name. In that case, you can access the referenced variable symbol
-with the method getReferencedSym
.
+with the method getReferencedSym
.
-Declaration nodes, such as ASTVariableId
implement the interface
-SymbolDeclaratorNode
. Through the method
-getSymbol
you can also access the symbol.
+Declaration nodes, such as ASTVariableId
implement the interface
+SymbolDeclaratorNode
. Through the method
+getSymbol
you can also access the symbol.
-To find usages, you can call getLocalUsages
.
+To find usages, you can call getLocalUsages
.
Type resolution APIs
-Type resolution API related classes are in the package net.sourceforge.pmd.lang.java.types
.
+Type resolution API related classes are in the package net.sourceforge.pmd.lang.java.types
.
The core of the framework is a set of interfaces to represent types. The root interface is
-JTypeMirror
. Type mirrors are created by a
-TypeSystem
object. This object is analysis-global.
+JTypeMirror
. Type mirrors are created by a
+TypeSystem
object. This object is analysis-global.
-The utility class TypeTestUtil
provides simple methods to check types,
+
The utility class TypeTestUtil
provides simple methods to check types,
e.g. TypeTestUtil.isA(String.class, variableDeclaratorIdNode)
tests, whether the given
variableDeclaratorId is of type “String”.
-Any TypeNode
provides access to the type with the method getTypeMirror
.
-E.g. this can be called on ASTMethodCall
to retrieve the return type of the called method.
+Any TypeNode
provides access to the type with the method getTypeMirror
.
+E.g. this can be called on ASTMethodCall
to retrieve the return type of the called method.
Metrics framework
-In order to use code metrics in Java, use the metrics constants in JavaMetrics
,
-together with MetricsUtil
. For instance:
+In order to use code metrics in Java, use the metrics constants in JavaMetrics
,
+together with MetricsUtil
. For instance:
@Override
public Object visit(ASTMethodDeclaration node, Object data) {
@@ -2159,13 +2159,13 @@ together with VARIABLE_NAME
- METHOD_NAME
- CLASS_NAME
- PACKAGE_NAME
+ VARIABLE_NAME
+ METHOD_NAME
+ CLASS_NAME
+ PACKAGE_NAME
-You can access these via getAdditionalInfo
+You can access these via getAdditionalInfo
Dataflow
@@ -2219,7 +2219,7 @@ AST pass that adds dataflow information. The implementation can be found in
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- December 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ December 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_js_ts.html b/pmd_languages_js_ts.html
index 51ed8b15c7..6de9e8e3ba 100644
--- a/pmd_languages_js_ts.html
+++ b/pmd_languages_js_ts.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
-- Implementation:
EcmascriptLanguageModule
+- Implementation:
EcmascriptLanguageModule
- Id: ecmascript
- PMD: ✔️
- CPD: ✔️
@@ -1895,7 +1895,7 @@
- Since PMD 7.0.0
-- Implementation:
TsLanguageModule
+- Implementation:
TsLanguageModule
- Id: ts
- PMD: ❌
- CPD: ✔️
@@ -1961,7 +1961,7 @@ This grammar is published under the
diff --git a/pmd_languages_jsp.html b/pmd_languages_jsp.html
index 48e03b4035..f61e82a5b9 100644
--- a/pmd_languages_jsp.html
+++ b/pmd_languages_jsp.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
-- Implementation:
JspLanguageModule
+- Implementation:
JspLanguageModule
- Id: jsp
- PMD: ✔️
- CPD: ✔️
@@ -1975,7 +1975,7 @@ have to do “manual” string manipulation (e.g. using regular expressions).
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_julia.html b/pmd_languages_julia.html
index 80cf9bada9..a93aa2f536 100644
--- a/pmd_languages_julia.html
+++ b/pmd_languages_julia.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1887,7 +1887,7 @@ Julia programs compile to efficient native code for multiple platforms via LLVM.
- Since PMD 7.0.0
-- Implementation:
JuliaLanguageModule
+- Implementation:
JuliaLanguageModule
- Id: julia
- PMD: ❌
- CPD: ✔️
@@ -1944,7 +1944,7 @@ Julia programs compile to efficient native code for multiple platforms via LLVM.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_kotlin.html b/pmd_languages_kotlin.html
index f0f59e31e8..2753026e25 100644
--- a/pmd_languages_kotlin.html
+++ b/pmd_languages_kotlin.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1882,7 +1882,7 @@
- Since PMD 7.0
-- Implementation:
KotlinLanguageModule
+- Implementation:
KotlinLanguageModule
- Id: kotlin
- PMD: ✔️
- CPD: ✔️
@@ -1937,7 +1937,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- February 2024 (7.0.0)
Site last generated: Mar 21, 2024
+ February 2024 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_lua.html b/pmd_languages_lua.html
index e3104b3b52..004de0b3ce 100644
--- a/pmd_languages_lua.html
+++ b/pmd_languages_lua.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 6.17.0
-- Implementation:
LuaLanguageModule
+- Implementation:
LuaLanguageModule
- Id: lua
- PMD: ❌
- CPD: ✔️
@@ -1936,7 +1936,7 @@ a gradually typed language derived from Lua, was added.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_matlab.html b/pmd_languages_matlab.html
index 36d1c6181f..a7b51987a3 100644
--- a/pmd_languages_matlab.html
+++ b/pmd_languages_matlab.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1882,7 +1882,7 @@
- Since PMD 5.3.0
-- Implementation:
MatlabLanguageModule
+- Implementation:
MatlabLanguageModule
- Id: matlab
- PMD: ❌
- CPD: ✔️
@@ -1932,7 +1932,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_modelica.html b/pmd_languages_modelica.html
index e466340bdc..23853bf5c9 100644
--- a/pmd_languages_modelica.html
+++ b/pmd_languages_modelica.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1882,7 +1882,7 @@
- Since PMD 6.21.0
-- Implementation:
ModelicaLanguageModule
+- Implementation:
ModelicaLanguageModule
- Id: modelica
- PMD: ✔️
- CPD: ✔️
@@ -1936,7 +1936,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_objectivec.html b/pmd_languages_objectivec.html
index 658be0eb32..26878d1524 100644
--- a/pmd_languages_objectivec.html
+++ b/pmd_languages_objectivec.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ a superset of the C programming language and provides object-oriented capabiliti
- Since PMD 5.3.0
-- Implementation:
ObjectiveCLanguageModule
+- Implementation:
ObjectiveCLanguageModule
- Id: objectivec
- PMD: ❌
- CPD: ✔️
@@ -1935,7 +1935,7 @@ a superset of the C programming language and provides object-oriented capabiliti
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_perl.html b/pmd_languages_perl.html
index af9bad67ee..28719b5557 100644
--- a/pmd_languages_perl.html
+++ b/pmd_languages_perl.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 5.5.0
-- Implementation:
PerlLanguageModule
+- Implementation:
PerlLanguageModule
- Id: perl
- PMD: ❌
- CPD: ✔️
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_php.html b/pmd_languages_php.html
index cd0998432a..8afeaeaf48 100644
--- a/pmd_languages_php.html
+++ b/pmd_languages_php.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 1.1
-- Implementation:
PhpLanguageModule
+- Implementation:
PhpLanguageModule
- Id: php
- PMD: ❌
- CPD: ✔️
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_plsql.html b/pmd_languages_plsql.html
index 7136a168ad..285bb067c3 100644
--- a/pmd_languages_plsql.html
+++ b/pmd_languages_plsql.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ describes and explains how to use PL/SQL, the Oracle procedural extension of SQL
- Since PMD 5.1.0
-- Implementation:
PLSQLLanguageModule
+- Implementation:
PLSQLLanguageModule
- Id: plsql
- PMD: ✔️
- CPD: ✔️
@@ -1987,7 +1987,7 @@ a custom XPath rule with the following expression:
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_python.html b/pmd_languages_python.html
index 36122902f5..c386175042 100644
--- a/pmd_languages_python.html
+++ b/pmd_languages_python.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1884,7 +1884,7 @@
- Since PMD 5.3.0
-- Implementation:
PythonLanguageModule
+- Implementation:
PythonLanguageModule
- Id: python
- PMD: ❌
- CPD: ✔️
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_ruby.html b/pmd_languages_ruby.html
index 103215849c..246b0e3371 100644
--- a/pmd_languages_ruby.html
+++ b/pmd_languages_ruby.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ productivity. It has an elegant syntax that is natural to read and easy to write
- Since PMD 3.0
-- Implementation:
RubyLanguageModule
+- Implementation:
RubyLanguageModule
- Id: ruby
- PMD: ❌
- CPD: ✔️
@@ -1935,7 +1935,7 @@ productivity. It has an elegant syntax that is natural to read and easy to write
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_scala.html b/pmd_languages_scala.html
index 12efd099f1..30b306b22e 100644
--- a/pmd_languages_scala.html
+++ b/pmd_languages_scala.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1886,7 +1886,7 @@ object-oriented and functional languages.
- Since PMD 5.3.0
-- Implementation:
ScalaLanguageModule
+- Implementation:
ScalaLanguageModule
- Id: scala
- PMD: ✔️
- CPD: ✔️
@@ -1940,7 +1940,7 @@ object-oriented and functional languages.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_swift.html b/pmd_languages_swift.html
index 9e0a9985c7..ca6e7797df 100644
--- a/pmd_languages_swift.html
+++ b/pmd_languages_swift.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ powerful for experts. It is fast, modern, safe, and a joy to write.
- Since PMD 5.3.7
-- Implementation:
SwiftLanguageModule
+- Implementation:
SwiftLanguageModule
- Id: swift
- PMD: ✔️
- CPD: ✔️
@@ -1940,7 +1940,7 @@ powerful for experts. It is fast, modern, safe, and a joy to write.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_tsql.html b/pmd_languages_tsql.html
index 7ff3fea80d..a74f6ab022 100644
--- a/pmd_languages_tsql.html
+++ b/pmd_languages_tsql.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ proprietary extension to the SQL (Structured Query Language) used to interact wi
- Since PMD 6.55.0
-- Implementation:
TSqlLanguageModule
+- Implementation:
TSqlLanguageModule
- Id: tsql
- PMD: ❌
- CPD: ✔️
@@ -1935,7 +1935,7 @@ proprietary extension to the SQL (Structured Query Language) used to interact wi
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2023 (7.0.0)
Site last generated: Mar 21, 2024
+ September 2023 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_velocity.html b/pmd_languages_velocity.html
index c2a220b9b3..ed4aa9c6ec 100644
--- a/pmd_languages_velocity.html
+++ b/pmd_languages_velocity.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ It permits web page designers to reference methods defined in Java code.
- Since PMD 5.1.0
-- Implementation:
VtlLanguageModule
+- Implementation:
VtlLanguageModule
- Id: velocity
- PMD: ✔️
- CPD: ✔️
@@ -1945,7 +1945,7 @@ is used as the prefix, e.g. V
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- February 2024 (7.0.0)
Site last generated: Mar 21, 2024
+ February 2024 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_visualforce.html b/pmd_languages_visualforce.html
index 7a4c3d492d..1028b684b9 100644
--- a/pmd_languages_visualforce.html
+++ b/pmd_languages_visualforce.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1885,7 +1885,7 @@ language that gives developers way to build applications and customize the Sales
- Since PMD 5.6.0
-- Implementation:
VfLanguageModule
+- Implementation:
VfLanguageModule
- Id: visualforce
- PMD: ✔️
- CPD: ✔️
@@ -1993,7 +1993,7 @@ the needed data.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- February 2024 (7.0.0)
Site last generated: Mar 21, 2024
+ February 2024 (7.0.0)
Site last generated: Mar 22, 2024
diff --git a/pmd_languages_xml.html b/pmd_languages_xml.html
index b36fca42b6..7dfec42281 100644
--- a/pmd_languages_xml.html
+++ b/pmd_languages_xml.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1880,7 +1880,7 @@
- Since PMD 5.4.0
-- Implementation:
PomLanguageModule
+- Implementation:
PomLanguageModule
- Id: pom
- PMD: ✔️
- CPD: ✔️
@@ -1895,7 +1895,7 @@
- Since PMD 5.4.0
-- Implementation:
WsdlLanguageModule
+- Implementation:
WsdlLanguageModule
- Id: wsdl
- PMD: ✔️
- CPD: ✔️
@@ -1910,7 +1910,7 @@
- Since PMD 5.0.0
-- Implementation:
XmlLanguageModule
+- Implementation:
XmlLanguageModule
- Id: xml
- PMD: ✔️
- CPD: ✔️
@@ -1925,7 +1925,7 @@
- Since PMD 5.0.0
-- Implementation:
XslLanguageModule
+- Implementation:
XslLanguageModule
- Id: xsl
- PMD: ✔️
- CPD: ✔️
@@ -1986,9 +1986,9 @@ for more examples.
XPath rules in XML
-While other languages use XPathRule
to create XPath rules,
+
While other languages use XPathRule
to create XPath rules,
the use of this class is not recommended for XML languages. Instead, since 6.44.0, you
-are advised to use DomXPathRule
. This rule class interprets
+are advised to use DomXPathRule
. This rule class interprets
XPath queries exactly as regular XPath, while XPathRule
works on a wrapper for the
DOM which is inconsistent with the XPath spec. Since DomXPathRule
conforms to the
XPath spec, you can
@@ -2018,7 +2018,7 @@ to help you write XPath queries.
</rule>
The most important change is the class
attribute, which doesn’t point to XPathRule
-but to DomXPathRule
. Please see the Javadoc for DomXPathRule
+but to DomXPathRule
. Please see the Javadoc for DomXPathRule
for more info about the differences with XPathRule
.
@@ -2067,7 +2067,7 @@ for more info about the differences with
diff --git a/pmd_projectdocs_committers_infrastructure.html b/pmd_projectdocs_committers_infrastructure.html
index 9b09304d33..29e33ee90d 100644
--- a/pmd_projectdocs_committers_infrastructure.html
+++ b/pmd_projectdocs_committers_infrastructure.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1988,7 +1988,7 @@ Login is via github.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- April 2021
Site last generated: Mar 21, 2024
+ April 2021
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_committers_main_landing_page.html b/pmd_projectdocs_committers_main_landing_page.html
index a0817ff50b..ae78487c95 100644
--- a/pmd_projectdocs_committers_main_landing_page.html
+++ b/pmd_projectdocs_committers_main_landing_page.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1988,7 +1988,7 @@ the new post is recognized and added to the news section and also on the news su
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- March 2020
Site last generated: Mar 21, 2024
+ March 2020
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_committers_merging_pull_requests.html b/pmd_projectdocs_committers_merging_pull_requests.html
index b79da83dfd..6977133d04 100644
--- a/pmd_projectdocs_committers_merging_pull_requests.html
+++ b/pmd_projectdocs_committers_merging_pull_requests.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2101,7 +2101,7 @@ integrated (e.g. gitk and github show the branches, from which the specific comm
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- October 2021
Site last generated: Mar 21, 2024
+ October 2021
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_committers_releasing.html b/pmd_projectdocs_committers_releasing.html
index 14a74d1b1d..4d2b190908 100644
--- a/pmd_projectdocs_committers_releasing.html
+++ b/pmd_projectdocs_committers_releasing.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2365,7 +2365,7 @@ the maintenance branch needs to be set.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- April 2021
Site last generated: Mar 21, 2024
+ April 2021
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_credits.html b/pmd_projectdocs_credits.html
index cb0fa816ab..ad1a2966f7 100644
--- a/pmd_projectdocs_credits.html
+++ b/pmd_projectdocs_credits.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -3490,7 +3490,7 @@ PMD scoreboard formulas, pmd-dcpd optimizations
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_decisions.html b/pmd_projectdocs_decisions.html
index 5718630a5d..3760dc0ad0 100644
--- a/pmd_projectdocs_decisions.html
+++ b/pmd_projectdocs_decisions.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2252,7 +2252,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- July 2022
Site last generated: Mar 21, 2024
+ July 2022
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_decisions_adr_1.html b/pmd_projectdocs_decisions_adr_1.html
index c718d5ac1d..abb5f48491 100644
--- a/pmd_projectdocs_decisions_adr_1.html
+++ b/pmd_projectdocs_decisions_adr_1.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1960,7 +1960,7 @@ as the decisions need to be formulated and written down. Everybody is on the sam
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2022
Site last generated: Mar 21, 2024
+ September 2022
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_decisions_adr_2.html b/pmd_projectdocs_decisions_adr_2.html
index 5bbd697967..b2c0775e66 100644
--- a/pmd_projectdocs_decisions_adr_2.html
+++ b/pmd_projectdocs_decisions_adr_2.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1963,7 +1963,7 @@ when Kotlin is used. Eclipse can’t be used practically anymore.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- September 2022
Site last generated: Mar 21, 2024
+ September 2022
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_decisions_adr_3.html b/pmd_projectdocs_decisions_adr_3.html
index 4ef4e2123e..976c3522b2 100644
--- a/pmd_projectdocs_decisions_adr_3.html
+++ b/pmd_projectdocs_decisions_adr_3.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2114,7 +2114,7 @@ Java Module System.
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- February 2024
Site last generated: Mar 21, 2024
+ February 2024
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_decisions_adr_NNN.html b/pmd_projectdocs_decisions_adr_NNN.html
index 62fd8b0088..0b7323b64a 100644
--- a/pmd_projectdocs_decisions_adr_NNN.html
+++ b/pmd_projectdocs_decisions_adr_NNN.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1924,7 +1924,7 @@
©2024 PMD Open Source Project. All rights
reserved.
Page last updated:
- July 2022
Site last generated: Mar 21, 2024
+ July 2022
Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_faq.html b/pmd_projectdocs_faq.html
index a29567e346..c145280b00 100644
--- a/pmd_projectdocs_faq.html
+++ b/pmd_projectdocs_faq.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1950,7 +1950,7 @@ You must take this into account for certain rules.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_logo.html b/pmd_projectdocs_logo.html
index 962f49a8b0..ca2ad964d0 100644
--- a/pmd_projectdocs_logo.html
+++ b/pmd_projectdocs_logo.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1932,7 +1932,7 @@ These old logos are provided here only as reference for historical reasons and s
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_trivia_meaning.html b/pmd_projectdocs_trivia_meaning.html
index 7e99597df0..20bbe21a18 100644
--- a/pmd_projectdocs_trivia_meaning.html
+++ b/pmd_projectdocs_trivia_meaning.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1919,7 +1919,7 @@ really know. We just think the letters sound good together.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_trivia_news.html b/pmd_projectdocs_trivia_news.html
index 93e2029ba2..73293ac1cf 100644
--- a/pmd_projectdocs_trivia_news.html
+++ b/pmd_projectdocs_trivia_news.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2059,7 +2059,7 @@ interview with Ole-Martin and Tom
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_trivia_products.html b/pmd_projectdocs_trivia_products.html
index 2060216754..644e2167d6 100644
--- a/pmd_projectdocs_trivia_products.html
+++ b/pmd_projectdocs_trivia_products.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1967,7 +1967,7 @@ to catch web app security problems. Thanks to Joseph Hemler for the props!
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_projectdocs_trivia_similarprojects.html b/pmd_projectdocs_trivia_similarprojects.html
index 3b04c9b67c..84f53d181c 100644
--- a/pmd_projectdocs_trivia_similarprojects.html
+++ b/pmd_projectdocs_trivia_similarprojects.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1974,7 +1974,7 @@ only for maven project.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_release_notes.html b/pmd_release_notes.html
index 3ef516a210..14f6dd876c 100644
--- a/pmd_release_notes.html
+++ b/pmd_release_notes.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1871,898 +1871,20 @@
-
-??-?????-2023 - 7.0.0-SNAPSHOT
+ 26-April-2024 - 7.0.1-SNAPSHOT
-🎉 After a long time, we’re excited to bring you now the next major version of PMD! 🎉
+The PMD team is pleased to announce PMD 7.0.1-SNAPSHOT.
-Since this is a big release, we provide here only a concise version of the release notes. We prepared a separate
-page with the full Detailed Release Notes for PMD 7.0.0.
+This is a bugfix release.
-🤝🙏 Many thanks to all users and contributors who were testing the release candidates and
-provided feedback and/or PRs!
-
-✨ PMD 7…
-
-
- - …has a new logo
- - …analyzes Java 21 and Java 22 projects with even better type resolution and symbol table support
- - …analyzes Kotlin and Swift
- - …analyzes Apex with a new parser
- - …finds duplicated code in Coco, Julia, TypeScript
- - …ships 11 new rules and tons of improvements for existing rules
- - …provides a new CLI interface with progress bar
- - …supports Antlr based languages
- - …and many more enhancements
-
-
-💥 Note: Since PMD 7 is a major release, it is not a drop-in replacement for PMD 6.55.0.
-A detailed documentation of required changes are available in the Migration Guide for PMD 7.
-
-Changes since 7.0.0-rc4
-
-This section lists the most important changes from the last release candidate.
-The remaining section describes the complete release notes for 7.0.0.
-
-New and Noteworthy
-
-Maven PMD Plugin compatibility with PMD 7
-
-In order to use PMD 7 with maven-pmd-plugin a new
-compatibility module has been created. This allows to use PMD 7 by simply adding one additional dependency:
-
-
- - Follow the guide Upgrading PMD at Runtime
- - Add additionally the following dependency:
-
-
-<dependency>
- <groupId>net.sourceforge.pmd</groupId>
- <artifactId>pmd-compat6</artifactId>
- <version>${pmdVersion}</version>
-</dependency>
-
-
-It is important to add this dependency as the first in the list, so that maven-pmd-plugin sees the (old)
-compatible versions of some classes.
-
-This module is available beginning with version 7.0.0-rc4 and will be there at least for the first
-final version PMD 7 (7.0.0). It’s not decided yet, whether we will keep updating it, after PMD 7 is finally
-released.
-
-Note: This compatibility module only works for the built-in rules, that are still available in PMD 7. E.g. you need
-to review your rulesets and look out for deprecated rules and such. See the use case
-I’m using only built-in rules
-in the Migration Guide for PMD 7.
-
-As PMD 7 revamped the Java module, if you have custom rules, you need to migrate these rules.
-See the use case I’m using custom rules
-in the Migration Guide.
-
-Note: Once the default version of PMD is upgraded to PMD7 in maven-pmd-plugin
-(see MPMD-379), this
-compatibility module is no longer needed. The module pmd-compat6 might not be maintained then
-any further, hence it is already declared as deprecated.
-
-No guarantee is given, that the (deprecated) module pmd-compat6 is being maintained over the
-whole lifetime of PMD 7.
-
-Java 22 Support
-
-This release of PMD brings support for Java 22. There are the following new standard language features,
-that are supported now:
-
-
-
-PMD also supports the following preview language features:
-
-
- - JEP 447: Statements before super(…) (Preview)
- - JEP 459: String Templates (Second Preview)
- - JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview)
-
-
-In order to analyze a project with PMD that uses these language features,
-you’ll need to enable it via the environment variable PMD_JAVA_OPTS
and select the new language
-version 22-preview
:
-
-export PMD_JAVA_OPTS=--enable-preview
-pmd check --use-version java-22-preview ...
-
-
-Note: Support for Java 20 preview language features have been removed. The version “20-preview” is no longer available.
-
-Swift Support
-
-
- - limited support for Swift 5.9 (Macro Expansions)
-
-
-Groovy Support (CPD)
-
-
- - We now support parsing all Groovy features from Groovy 3 and 4.
- - We now support suppression through
CPD-ON
/CPD-OFF
comment pairs.
- - See PR #4726 for details.
-
-
-Updated PMD Designer
-
-This PMD release ships a new version of the pmd-designer. The designer artifact has been
-renamed from “pmd-ui” to “pmd-designer”. While the designer still works with Java 8, the
-recommended Java Runtime is Java 11 (or later) with OpenJFX 17 (or later).
-
-For the detailed changes, see PMD Designer Changelog (7.0.0).
-
-Apex Support: Replaced Jorje with fully open source front-end
-
-When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
-and generate an AST. This library is however a binary-blob provided as part of the
-Salesforce Extensions for VS Code, and it is closed-source.
-
-This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
-library prevented that PMD Apex could be used at all.
-
-Also having access to the source code, enhancements and modifications are easier to do.
-
-Under the hood, we use two open source libraries instead:
-
-
- - apex-parser originally by
-Kevin Jones (@nawforce).
-This project provides the grammar for a ANTLR based parser.
- - Summit-AST by Google (@google)
-This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
-Note: This is not an official Google product.
-
-
-Although the parser is completely switched, there are only little known changes to the AST.
-These are documented in the Migration Guide for PMD 7: Apex AST.
-
-With the new Apex parser, the new language constructs like
-User Mode Database Operations
-and the new Null Coalescing Operator ??
-can be parsed now. PMD should be able to parse Apex code up to version 60.0 (Spring ‘24).
-
-See #3766 for details.
-
-Contributors: Aaron Hurst (@aaronhurst-google),
- Edward Klimoshenko (@eklimo)
-
-Changed: Visualforce
-
-There was an inconsistency between the naming of the maven module and the language id. The language id
-used the abbreviation “vf”, while the maven module used the longer name “visualforce”. This has been
-solved by renaming the language module to its full name “visualforce”. The java packages have
-been renamed as well.
-
-If you import rules, you also need to adjust the paths, e.g.
-
-
- category/vf/security.xml
➡️ category/visualforce/security.xml
-
-
-Changed: HTML support
-
-Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
-is now considered stable.
-
-Changed: Kotlin support
-
-Support for Kotlin was introduced with PMD 7.0.0-rc1 as an experimental feature. With PMD 7.0.0 this
-is now considered stable.
-
-Changed: Velocity Template Language (VTL)
-
-The module was named just “vm” which was not a good name. Its module name, language id and
-package names have been renamed to “velocity”.
-
-If you import rules, you also need to adjust the paths, e.g.
-
-
- category/vm/...
➡️ category/velocity/...
-
-
-Rule Changes
-
-New Rules
-
-
- OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
-potential performance issue.
- UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
- MissingEncoding
finds XML files without explicit encoding.
-
-
-Changed Rules
-
-
- EmptyControlStatement
: The rule has a new property to allow empty blocks when
-they contain a comment (allowCommentedBlocks
).
- MethodNamingConventions
: The deprecated rule property skipTestMethodUnderscores
has
-been removed. It was actually deprecated since PMD 6.15.0, but was not mentioned in the release notes
-back then. Use the property testPattern
instead to configure valid names for test methods.
- CommentRequired
: The deprecated property headerCommentRequirement
has been removed.
-Use the property classCommentRequirement
instead.
- NonSerializableClass
: The deprecated property prefix
has been removed
-without replacement. In a serializable class all fields have to be serializable regardless of the name.
-
-
-Renamed Rulesets
-
-
- category/vf/security.xml
➡️ category/visualforce/security.xml
- category/vm/bestpractices.xml
➡️ category/velocity/bestpractices.xml
- category/vm/design.xml
➡️ category/velocity/design.xml
- category/vm/errorprone.xml
➡️ category/velocity/errorprone.xml
-
-
-Removed Rules
-
-The following previously deprecated rules have been finally removed:
-
-
- - Apex
-
- - performance.xml/AvoidSoqlInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
- - performance.xml/AvoidSoslInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
- - performance.xml/AvoidDmlStatementsInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
-
-
- - Java
-
- - design.xml/ExcessiveClassLength (deleted) ➡️ use
NcssCount
- - design.xml/ExcessiveMethodLength (deleted) ➡️ use
NcssCount
- - errorprone.xml/BeanMembersShouldSerialize (deleted) ➡️ use
NonSerializableClass
- - errorprone.xml/EmptyFinallyBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyIfStmt (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyInitializer (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyStatementBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyStatementNotInLoop (deleted) ➡️ use
UnnecessarySemicolon
- - errorprone.xml/EmptySwitchStatements (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptySynchronizedBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyTryBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyWhileStmt (deleted) ➡️ use
EmptyControlStatement
-
-
-
-
-Removed deprecated rulesets
-
-The following previously deprecated rulesets have been removed. These were the left-over rulesets from PMD 5.
-The rules have been moved into categories with PMD 6.
-
-
- List of deprecated rulesets
-
-
-
- - rulesets/apex/apexunit.xml
- - rulesets/apex/braces.xml
- - rulesets/apex/complexity.xml
- - rulesets/apex/empty.xml
- - rulesets/apex/metrics.xml
- - rulesets/apex/performance.xml
- - rulesets/apex/ruleset.xml
- - rulesets/apex/securty.xml
- - rulesets/apex/style.xml
- - rulesets/java/android.xml
- - rulesets/java/basic.xml
- - rulesets/java/clone.xml
- - rulesets/java/codesize.xml
- - rulesets/java/comments.xml
- - rulesets/java/controversial.xml
- - rulesets/java/coupling.xml
- - rulesets/java/design.xml
- - rulesets/java/empty.xml
- - rulesets/java/finalizers.xml
- - rulesets/java/imports.xml
- - rulesets/java/j2ee.xml
- - rulesets/java/javabeans.xml
- - rulesets/java/junit.xml
- - rulesets/java/logging-jakarta-commons.xml
- - rulesets/java/logging-java.xml
- - rulesets/java/metrics.xml
- - rulesets/java/migrating.xml
- - rulesets/java/migrating_to_13.xml
- - rulesets/java/migrating_to_14.xml
- - rulesets/java/migrating_to_15.xml
- - rulesets/java/migrating_to_junit4.xml
- - rulesets/java/naming.xml
- - rulesets/java/optimizations.xml
- - rulesets/java/strictexception.xml
- - rulesets/java/strings.xml
- - rulesets/java/sunsecure.xml
- - rulesets/java/typeresolution.xml
- - rulesets/java/unnecessary.xml
- - rulesets/java/unusedcode.xml
- - rulesets/ecmascript/basic.xml
- - rulesets/ecmascript/braces.xml
- - rulesets/ecmascript/controversial.xml
- - rulesets/ecmascript/unnecessary.xml
- - rulesets/jsp/basic.xml
- - rulesets/jsp/basic-jsf.xml
- - rulesets/plsql/codesize.xml
- - rulesets/plsql/dates.xml
- - rulesets/plsql/strictsyntax.xml
- - rulesets/plsql/TomKytesDespair.xml
- - rulesets/vf/security.xml
- - rulesets/vm/basic.xml
- - rulesets/pom/basic.xml
- - rulesets/xml/basic.xml
- - rulesets/xsl/xpath.xml
- - rulesets/releases/*
-
-
-
-
-Fixed issues
-
-
- - cli
-
-
- - core
-
- - #1027: [core] Apply the new PropertyDescriptor<Pattern> type where applicable
- - #3903: [core] Consolidate
n.s.pmd.reporting
package
- - #3905: [core] Stabilize tree export API
- - #3917: [core] Consolidate
n.s.pmd.lang.rule
package
- - #4065: [core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer
- - #4309: [core] Cleanups in XPath area
- - #4312: [core] Remove unnecessary property
color
and system property pmd.color
in TextColorRenderer
- - #4313: [core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references
- - #4314: [core] Remove ruleset compatibility filter (RuleSetFactoryCompatibility) and CLI option
--no-ruleset-compatibility
- - #4348: [core] Consolidate @InternalApi classes
- - #4349: [core] Cleanup remaining experimental and deprecated API
- - #4378: [core] Ruleset loading processes commented rules
- - #4674: [core] WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass
- - #4694: [core] Fix line/col numbers in TokenMgrError
- - #4717: [core] XSLTRenderer doesn’t close report file
- - #4750: [core] Fix flaky SummaryHTMLRenderer
- - #4782: [core] Avoid using getImage/@Image
-
-
- - doc
-
- - #995: [doc] Document API evolution principles as ADR
- - #2511: [doc] Review guides for writing java/xpath rules for correctness with PMD 7
- - #3175: [doc] Document language module features
- - #4308: [doc] Document XPath API @DeprecatedAttribute
- - #4319: [doc] Document TypeRes API and Symbols API
- - #4659: [doc] Improve ant documentation
- - #4669: [doc] Add bld PMD Extension to Tools / Integrations
- - #4676: [doc] Clarify how CPD
--ignore-literals
and --ignore-identifiers
work
- - #4704: [doc] Multivalued properties do not accept | as a separator
-
-
- - miscellaneous
-
- - #4699: Make PMD buildable with java 21
- - #4586: Use explicit encoding in ruleset xml files
- - #4642: Update regression tests with Java 21 language features
- - #4736: [ci] Improve build procedure
- - #4741: Add pmd-compat6 module for maven-pmd-plugin
- - #4749: Fixes NoSuchMethodError on processing errors in pmd-compat6
- - #4776: [ci] Upgrade to ruby 3
- - #4796: Remove deprecated and release rulesets
- - #4823: Update to use renamed pmd-designer
- - #4827: [compat6] Support config errors and cpd for csharp
- - #4830: Consolidate packages in each maven module
- - #4867: [dist] ./mvnw command not found in dist-src
-
-
- - apex
-
-
- - apex-bestpractices
-
- - #4556: [apex] UnusedLocalVariable flags for variables which are using in SOQL/SOSL binds
-
-
- - apex-documentation
-
- - #4774: [apex] ApexDoc false-positive for the first method of an annotated Apex class
-
-
- - apex-performance
-
- - #4675: [apex] New Rule: OperationWithHighCostInLoop
-
-
- - groovy
-
- - #4726: [groovy] Support Groovy to 3 and 4 and CPD suppressions
-
-
- - java
-
-
- - java-bestpractices
-
-
- - java-codestyle
-
- - #2847: [java] New Rule: Use Explicit Types
- - #4239: [java] UnnecessaryLocalBeforeReturn - false positive with catch clause
- - #4578: [java] CommentDefaultAccessModifier comment needs to be before annotation if present
- - #4631: [java] UnnecessaryFullyQualifiedName fails to recognize illegal self reference in enums
- - #4645: [java] CommentDefaultAccessModifier - False Positive with JUnit5’s ParameterizedTest
- - #4754: [java] EmptyControlStatementRule: Add allowCommentedBlocks property
- - #4816: [java] UnnecessaryImport false-positive on generic method call with on lambda
-
-
- - java-design
-
- - #174: [java] SingularField false positive with switch in method that both assigns and reads field
-
-
- - java-errorprone
-
- - #718: [java] BrokenNullCheck false positive with parameter/field confusion
- - #932: [java] SingletonClassReturningNewInstance false positive with double assignment
- - #1831: [java] DetachedTestCase reports abstract methods
- - #4719: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string
-
-
- - javascript
-
-
- - plsql
-
- - #4820: [plsql] WITH clause is ignored for SELECT INTO statements
-
-
- - swift
-
- - #4697: [swift] Support Swift 5.9 features (mainly macros expansion expressions)
-
-
- - xml-bestpractices
-
- - #4592: [xml] Add MissingEncoding rule
-
-
-
-
-API Changes
-
-See Detailed Release Notes for PMD 7.
-
-External Contributions
-
- - #4093: [apex] Summit-AST Apex module - Part 1 - Edward Klimoshenko (@eklimo)
- - #4151: [apex] Summit-AST Apex module - Part 2 - expression nodes - Aaron Hurst (@aaronhurst-google)
- - #4171: [apex] Summit-AST Apex module - Part 3 - initializers - Aaron Hurst (@aaronhurst-google)
- - #4206: [apex] Summit-AST Apex module - Part 4 - statements - Aaron Hurst (@aaronhurst-google)
- - #4219: [apex] Summit-AST Apex module - Part 5 - annotations, triggers, misc. - Aaron Hurst (@aaronhurst-google)
- - #4242: [apex] Merge 6.52 into experimental-apex-parser - Aaron Hurst (@aaronhurst-google)
- - #4251: [apex] Summit-AST Apex module - Part 6 Passing testsuite - Aaron Hurst (@aaronhurst-google)
- - #4448: [apex] Bump summit-ast to new release 2.1.0 (and remove workaround) - Aaron Hurst (@aaronhurst-google)
- - #4479: [apex] Merge main (7.x) branch into experimental-apex-parser and fix tests - Aaron Hurst (@aaronhurst-google)
- - #4562: [apex] Fixes #4556 - Update Apex bind regex match for all possible combinations - nwcm (@nwcm)
- - #4640: [cli] Launch script fails if run via “bash pmd” - Shai Bennathan (@shai-bennathan)
- - #4673: [javascript] CPD: Added support for decorator notation - Wener (@wener-tiobe)
- - #4677: [apex] Add new rule: OperationWithHighCostInLoop - Thomas Prouvot (@tprouvot)
- - #4698: [swift] Add macro expansion support for swift 5.9 - Richard B. (@kenji21)
- - #4706: [java] DetachedTestCase should not report on abstract methods - Debamoy Datta (@Debamoy)
- - #4719: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string - ciufudean (@ciufudean)
- - #4738: [doc] Added reference to the PMD extension for bld - Erik C. Thauvin (@ethauvin)
- - #4749: Fixes NoSuchMethodError on processing errors in pmd-compat6 - Andreas Bergander (@bergander)
- - #4750: [core] Fix flaky SummaryHTMLRenderer - 219sansim (@219sansim)
- - #4752: [core] Fix flaky LatticeRelationTest - 219sansim (@219sansim)
- - #4754: [java] EmptyControlStatementRule: Add allowCommentedBlocks property - Andreas Bergander (@bergander)
- - #4759: [java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - Marcin Dąbrowski (@marcindabrowski)
- - #4825: [plsql] Fix ignored WITH clause for SELECT INTO statements - Laurent Bovet (@lbovet)
- - #4857: [javascript] Fix UnnecessaryBlock issues with empty statements - Oleksandr Shvets (@oleksandr-shvets)
-
-
-🚀 Major Features and Enhancements
-
-New official logo
-
-The new official logo of PMD:
-
-
-
-For more information, see the Detailed Release Notes for PMD 7.
-
-Revamped Java module
-
-
- - Java grammar substantially refactored - more correct regarding the Java Language Specification (JLS)
- - Built-in rules have been upgraded for the changed AST
- - Rewritten type resolution framework and symbol table correctly implements the JLS
- - AST exposes more semantic information (method calls, field accesses)
-
-
-For more information, see the Detailed Release Notes for PMD 7.
-
-Contributors: Clément Fournier (@oowekyala),
-Andreas Dangel (@adangel),
-Juan Martín Sotuyo Dodero (@jsotuyod)
-
-Revamped Command Line Interface
-
-
- - Unified and consistent Command Line Interface for both Linux/Unix and Windows across our different utilities
- - Single script
pmd
(pmd.bat
for Windows) to launch the different utilities:
-
- pmd check
to run PMD rules and analyze a project
- pmd cpd
to run CPD (copy paste detector)
- pmd designer
to run the PMD Rule Designer
-
-
- - Progress bar support for
pmd check
- - Shell completion
-
-
-
-
-For more information, see the Detailed Release Notes for PMD 7.
-
-Contributors: Juan Martín Sotuyo Dodero (@jsotuyod)
-
-Full Antlr support
-
-
- - Antlr based grammars can now be used to build full-fledged PMD rules.
- - Previously, Antlr grammar could only be used for CPD
- - New supported languages: Swift and Kotlin
-
-
-For more information, see the Detailed Release Notes for PMD 7.
-
-Contributors: Lucas Soncini (@lsoncini),
-Matías Fraga (@matifraga),
-Tomás De Lucca (@tomidelucca)
-
-Updated PMD Designer
-
-This PMD release ships a new version of the pmd-designer. The designer artifact has been
-renamed from “pmd-ui” to “pmd-designer”. While the designer still works with Java 8, the
-recommended Java Runtime is Java 11 (or later) with OpenJFX 17 (or later).
-
-For the detailed changes, see
-
- - PMD Designer Changelog (7.0.0).
- - PMD Designer Changelog (7.0.0-rc4).
- - PMD Designer Changelog (7.0.0-rc1).
-
-
-New CPD report format cpdhtml-v2.xslt
-
-Thanks to @mohan-chinnappan-n a new CPD report format has been added which features a data table.
-It uses an XSLT stylesheet to convert CPD’s XML format into HTML.
-
-See the example report.
-
-Contributors: Mohan Chinnappan (@mohan-chinnappan-n)
-
-🎉 Language Related Changes
-
-Note that this is just a concise listing of the highlights.
-For more information on the languages, see the Detailed Release Notes for PMD 7.
-
-New: CPD support for Apache Velocity Template Language (VTL)
-
-PMD supported Apache Velocity for a very long time, but the CPD integration never got finished.
-This is now done and CPD supports Apache Velocity Template language for detecting copy and paste.
-It is shipped in the module pmd-velocity
.
-
-New: CPD support for Coco
-
-Thanks to a contribution, CPD now supports Coco, a modern programming language
-designed specifically for building event-driven software. It is shipped in the new
-module pmd-coco
.
-
-Contributors: Wener (@wener-tiobe)
-
-New: CPD support for Julia
-
-Thanks to a contribution, CPD now supports the Julia language. It is shipped
-in the new module pmd-julia
.
-
-Contributors: Wener (@wener-tiobe)
-
-New: CPD support for TypeScript
-
-Thanks to a contribution, CPD now supports the TypeScript language. It is shipped
-with the rest of the JavaScript support in the module pmd-javascript
.
-
-Contributors: Paul Guyot (@pguyot)
-
-New: Java 21 and 22 Support
-
-This release of PMD brings support for Java 21 and 22. There are the following new standard language features,
-that are supported now:
-
-
- - JEP 456: Unnamed Variables & Patterns (Java 22)
- - JEP 440: Record Patterns (Java 21)
- - JEP 441: Pattern Matching for switch (Java 21)
-
-
-PMD also supports the following preview language features:
-
-
- - JEP 447: Statements before super(…) (Preview) (Java 22)
- - JEP 459: String Templates (Second Preview) (Java 21 and 22)
- - JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview) (Java 21 and 22)
-
-
-In order to analyze a project with PMD that uses these preview language features,
-you’ll need to enable it via the environment variable PMD_JAVA_OPTS
and select the new language
-version 22-preview
:
-
-export PMD_JAVA_OPTS=--enable-preview
-pmd check --use-version java-22-preview ...
-
-
-Note: Support for Java 19 and Java 20 preview language features have been removed. The versions “19-preview” and
-“20-preview” are no longer available.
-
-New: Kotlin support
-
-
- - Use PMD to analyze Kotlin code with PMD rules.
- - Support for Kotlin 1.8 grammar
- - Initially 2 built-in rules
- - Support for Kotlin was introduced with PMD 7.0.0-rc1 as an experimental feature. With PMD 7.0.0 this
-is now considered stable.
-
-
-Contributors: Jeroen Borgers (@jborgers),
-Peter Paul Bakker (@stokpop)
-
-New: Swift support
-
-
- - Use PMD to analyze Swift code with PMD rules.
- - Limited support for Swift 5.9 (Macro Expansions)
- - Initially 4 built-in rules
-
-
-Contributors: Lucas Soncini (@lsoncini),
-Matías Fraga (@matifraga),
-Tomás De Lucca (@tomidelucca)
-
-Changed: Apex Support: Replaced Jorje with fully open source front-end
-
-When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
-and generate an AST. This library is however a binary-blob provided as part of the
-Salesforce Extensions for VS Code, and it is closed-source.
-
-This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
-library prevented that PMD Apex could be used at all.
-
-Also having access to the source code, enhancements and modifications are easier to do.
-
-Under the hood, we use two open source libraries instead:
-
-
- - apex-parser by Kevin Jones (@nawforce)
-This project provides the grammar for a ANTLR based parser.
- - Summit-AST by Google (@google)
-This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
-Note: This is not an official Google product.
-
-
-Although the parsers is completely switched, there are only little known changes to the AST.
-These are documented in the Migration Guide for PMD 7: Apex AST.
-With the new Apex parser, the new language constructs like
-User Mode Database Operations
-and the new Null Coalescing Operator ??
-can be parsed now. PMD should be able to parse Apex code up to version 60.0 (Spring ‘24).
-
-See #3766 for details.
-
-Contributors: Aaron Hurst (@aaronhurst-google),
-Edward Klimoshenko (@eklimo)
-
-Changed: CPP can now ignore identifiers in sequences (CPD)
-
-
- - New command line option for CPD:
--ignore-sequences
.
- - This option is used for CPP only: with the already existing option
--ignore-literal-sequences
, only
-literals were ignored. The new option additionally ignores identifiers as well in sequences.
- - See PR #4470 for details.
-
-
-Contributors: Wener (@wener-tiobe)
-
-Changed: Groovy Support (CPD)
-
-
- - We now support parsing all Groovy features from Groovy 3 and 4.
- - We now support suppression through
CPD-ON
/CPD-OFF
comment pairs.
- - See PR #4726 for details.
-
-
-Contributors: Juan Martín Sotuyo Dodero (@jsotuyod)
-
-Changed: HTML support
-
-Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
-is now considered stable.
-
-Changed: JavaScript support
-
-
- - Latest version supports ES6 and also some new constructs (see Rhino)
- - Comments are retained
-
-
-Changed: Language versions
-
-
- - More predefined language versions for each supported language
- - Can be used to limit rule execution for specific versions only with
minimumLanguageVersion
and
-maximumLanguageVersion
attributes.
-
-
-Changed: Rule properties
-
-
- - The old deprecated classes like
IntProperty
and StringProperty
have been removed. Please use
-PropertyFactory
to create properties.
- - All properties which accept multiple values now use a comma (
,
) as a delimiter. The previous default was a
-pipe character (|
). The delimiter is not configurable anymore. If needed, the comma can be escaped
-with a backslash.
- - The
min
and max
attributes in property definitions in the XML are now optional and can appear separately
-or be omitted.
-
-
-Changed: Velocity Template Language (VTL)
-
-The module was named just “vm” which was not a good name. Its module name, language id and
-package names have been renamed to “velocity”.
-
-If you import rules, you also need to adjust the paths, e.g.
-
-
- category/vm/...
➡️ category/velocity/...
-
-
-Changed: Visualforce
-
-There was an inconsistency between the naming of the maven module and the language id. The language id
-used the abbreviation “vf”, while the maven module used the longer name “visualforce”. This has been
-solved by renaming the language module to its full name “visualforce”. The java packages have
-been renamed as well.
-
-If you import rules, you also need to adjust the paths, e.g.
-
-
- category/vf/security.xml
➡️ category/visualforce/security.xml
-
-
-🌟 New and changed rules
-
-New Rules
-
-Apex
-
- OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
-potential performance issue.
- UnusedMethod
finds unused methods in your code.
-
-
-Java
-
- UnnecessaryBoxing
reports boxing and unboxing conversions that may be made implicit.
- UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
-
-
-Kotlin
-
- FunctionNameTooShort
finds functions with a too short name.
- OverrideBothEqualsAndHashcode
finds classes with only
-either equals
or hashCode
overridden, but not both. This leads to unexpected behavior once instances
-of such classes are used in collections (Lists, HashMaps, …).
-
-
-Swift
-
- ForceCast
flags all force casts, making sure you are
-defensively considering all types. Having the application crash shouldn’t be an option.
- ForceTry
flags all force tries, making sure you are
-defensively handling exceptions. Having the application crash shouldn’t be an option.
- ProhibitedInterfaceBuilder
flags any usage of interface
-builder. Interface builder files are prone to merge conflicts, and are impossible to code review, so larger
-teams usually try to avoid it or reduce its usage.
- UnavailableFunction
flags any function throwing
-a fatalError
not marked as @available(*, unavailable)
to ensure no calls are actually performed in
-the codebase.
-
-
-XML
-
- MissingEncoding
finds XML files without explicit encoding.
-
-
-Other changes
-
-The information about changed rules, removed rules and rulesets
-can be found in the Detailed Release Notes for PMD 7.
-
-🚨 API
-
-The API of PMD has been growing over the years and needed some cleanup. The goal is, to
-have a clear separation between a well-defined API and the implementation, which is internal.
-This should help us in future development.
-
-Also, there are some improvement and changes in different areas. For the detailed description
-of the changes listed here, see Detailed Release Notes for PMD 7.
-
-
- - Miscellaneous smaller changes and cleanups
- - XPath 3.1 support for XPath-based rules
- - Node stream API for AST traversal
- - Metrics framework
- - Testing framework
- - Language Lifecycle and Language Properties
- - Rule Properties
- - New Programmatic API for CPD
-
-
-💥 Compatibility and migration notes
-
-A detailed documentation of required changes are available in the
-Migration Guide for PMD 7.
-
-See also Detailed Release Notes for PMD 7.
+🚀 New and noteworthy
🐛 Fixed Issues
-More than 300 issues have been fixed in PMD 7.
-See Detailed Release Notes for PMD 7 for the
-complete list of fixed issues.
+🚨 API Changes
✨ External Contributions
-Many thanks to the following contributors:
-@219sansim, @aaronhurst-google, @anastasiia-koba, @AndreyBozhko, @bergander, @ciufudean, @cyw3, @dague1,
-@Debamoy, @eklimo, @ethauvin, @JerritEic, @joaodinissf, @kenji21, @krdabrowski, @lbovet, @lsoncini,
-@LynnBroe, @marcindabrowski, @matifraga, @mohan-chinnappan-n, @mohui1999, @nawforce, @nirvikpatel,
-@nwcm, @oleksandr-shvets, @pguyot, @PimvanderLoos, @rcorfieldffdc, @sfdcsteve, @shai-bennathan, @tomidelucca,
-@tprouvot, @wener-tiobe.
-
-See Detailed Release Notes for PMD 7 for the
-full list of PRs.
-
-📈 Stats
-
- - 5662 commits
- - 796 closed tickets & PRs
- - Days since last release (6.55.0): 377
- - Days since last release (7.0.0-rc4): 160
-
-
@@ -2792,7 +1914,7 @@ full list of PRs.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_release_notes_old.html b/pmd_release_notes_old.html
index ad64dc488f..03afeedf94 100644
--- a/pmd_release_notes_old.html
+++ b/pmd_release_notes_old.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1873,6 +1873,971 @@
Previous versions of PMD can be downloaded here: Releases - pmd/pmd (GitHub)
+22-March-2024 - 7.0.0
+
+🎉 After a long time, we’re excited to bring you now the next major version of PMD! 🎉
+
+Since this is a big release, we provide here only a concise version of the release notes. We prepared a separate
+page with the full Detailed Release Notes for PMD 7.0.0.
+
+🤝🙏 Many thanks to all users and contributors who were testing the release candidates and
+provided feedback and/or PRs!
+
+✨ PMD 7…
+
+
+ - …has a new logo
+ - …analyzes Java 21 and Java 22 projects with even better type resolution and symbol table support
+ - …analyzes Kotlin and Swift
+ - …analyzes Apex with a new parser
+ - …finds duplicated code in Coco, Julia, TypeScript
+ - …ships 11 new rules and tons of improvements for existing rules
+ - …provides a new CLI interface with progress bar
+ - …supports Antlr based languages
+ - …and many more enhancements
+
+
+💥 Note: Since PMD 7 is a major release, it is not a drop-in replacement for PMD 6.55.0.
+A detailed documentation of required changes are available in the Migration Guide for PMD 7.
+
+
+ Expand to see Release Notes
+
+
+ Table Of Contents
+
+
+ - Changes since 7.0.0-rc4
+
+ - New and Noteworthy
+
+ - Maven PMD Plugin compatibility with PMD 7
+ - Java 22 Support
+ - Swift Support
+ - Groovy Support (CPD)
+ - Updated PMD Designer
+ - Apex Support: Replaced Jorje with fully open source front-end
+ - Changed: Visualforce
+ - Changed: HTML support
+ - Changed: Kotlin support
+ - Changed: Velocity Template Language (VTL)
+
+
+ - Rule Changes
+ - Fixed issues
+ - API Changes
+ - External Contributions
+
+
+ - 🚀 Major Features and Enhancements
+
+
+ - 🎉 Language Related Changes
+
+ - New: CPD support for Apache Velocity Template Language (VTL)
+ - New: CPD support for Coco
+ - New: CPD support for Julia
+ - New: CPD support for TypeScript
+ - New: Java 21 and 22 Support
+ - New: Kotlin support
+ - New: Swift support
+ - Changed: Apex Support: Replaced Jorje with fully open source front-end
+ - Changed: CPP can now ignore identifiers in sequences (CPD)
+ - Changed: Groovy Support (CPD)
+ - Changed: HTML support
+ - Changed: JavaScript support
+ - Changed: Language versions
+ - Changed: Rule properties
+ - Changed: Velocity Template Language (VTL)
+ - Changed: Visualforce
+
+
+ - 🌟 New and changed rules
+
+ - New Rules
+ - Other changes
+
+
+ - 🚨 API
+ - 💥 Compatibility and migration notes
+ - 🐛 Fixed Issues
+ - ✨ External Contributions
+ - 📈 Stats
+
+
+ Changes since 7.0.0-rc4
+
+ This section lists the most important changes from the last release candidate.
+The remaining section describes the complete release notes for 7.0.0.
+
+ New and Noteworthy
+
+ Maven PMD Plugin compatibility with PMD 7
+
+ In order to use PMD 7 with maven-pmd-plugin a new
+compatibility module has been created. This allows to use PMD 7 by simply adding one additional dependency:
+
+
+ - Follow the guide Upgrading PMD at Runtime
+ - Add additionally the following dependency:
+
+
+ <dependency>
+ <groupId>net.sourceforge.pmd</groupId>
+ <artifactId>pmd-compat6</artifactId>
+ <version>${pmdVersion}</version>
+</dependency>
+
+
+ It is important to add this dependency as the first in the list, so that maven-pmd-plugin sees the (old)
+compatible versions of some classes.
+
+ This module is available beginning with version 7.0.0-rc4 and will be there at least for the first
+final version PMD 7 (7.0.0). It’s not decided yet, whether we will keep updating it, after PMD 7 is finally
+released.
+
+ Note: This compatibility module only works for the built-in rules, that are still available in PMD 7. E.g. you need
+to review your rulesets and look out for deprecated rules and such. See the use case
+I’m using only built-in rules
+in the Migration Guide for PMD 7.
+
+ As PMD 7 revamped the Java module, if you have custom rules, you need to migrate these rules.
+See the use case I’m using custom rules
+in the Migration Guide.
+
+ Note: Once the default version of PMD is upgraded to PMD7 in maven-pmd-plugin
+(see MPMD-379), this
+compatibility module is no longer needed. The module pmd-compat6 might not be maintained then
+any further, hence it is already declared as deprecated.
+
+ No guarantee is given, that the (deprecated) module pmd-compat6 is being maintained over the
+whole lifetime of PMD 7.
+
+ Java 22 Support
+
+ This release of PMD brings support for Java 22. There are the following new standard language features,
+that are supported now:
+
+
+
+ PMD also supports the following preview language features:
+
+
+ - JEP 447: Statements before super(…) (Preview)
+ - JEP 459: String Templates (Second Preview)
+ - JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview)
+
+
+ In order to analyze a project with PMD that uses these language features,
+you’ll need to enable it via the environment variable PMD_JAVA_OPTS
and select the new language
+version 22-preview
:
+
+ export PMD_JAVA_OPTS=--enable-preview
+pmd check --use-version java-22-preview ...
+
+
+ Note: Support for Java 20 preview language features have been removed. The version “20-preview” is no longer available.
+
+ Swift Support
+
+
+ - limited support for Swift 5.9 (Macro Expansions)
+
+
+ Groovy Support (CPD)
+
+
+ - We now support parsing all Groovy features from Groovy 3 and 4.
+ - We now support suppression through
CPD-ON
/CPD-OFF
comment pairs.
+ - See PR #4726 for details.
+
+
+ Updated PMD Designer
+
+ This PMD release ships a new version of the pmd-designer. The designer artifact has been
+renamed from “pmd-ui” to “pmd-designer”. While the designer still works with Java 8, the
+recommended Java Runtime is Java 11 (or later) with OpenJFX 17 (or later).
+
+ For the detailed changes, see PMD Designer Changelog (7.0.0).
+
+ Apex Support: Replaced Jorje with fully open source front-end
+
+ When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
+and generate an AST. This library is however a binary-blob provided as part of the
+Salesforce Extensions for VS Code, and it is closed-source.
+
+ This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
+library prevented that PMD Apex could be used at all.
+
+ Also having access to the source code, enhancements and modifications are easier to do.
+
+ Under the hood, we use two open source libraries instead:
+
+
+ - apex-parser originally by
+Kevin Jones (@nawforce).
+This project provides the grammar for a ANTLR based parser.
+ - Summit-AST by Google (@google)
+This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
+Note: This is not an official Google product.
+
+
+ Although the parser is completely switched, there are only little known changes to the AST.
+These are documented in the Migration Guide for PMD 7: Apex AST.
+
+ With the new Apex parser, the new language constructs like
+User Mode Database Operations
+and the new Null Coalescing Operator ??
+can be parsed now. PMD should be able to parse Apex code up to version 60.0 (Spring ‘24).
+
+ See #3766 for details.
+
+ Contributors: Aaron Hurst (@aaronhurst-google),
+ Edward Klimoshenko (@eklimo)
+
+ Changed: Visualforce
+
+ There was an inconsistency between the naming of the maven module and the language id. The language id
+used the abbreviation “vf”, while the maven module used the longer name “visualforce”. This has been
+solved by renaming the language module to its full name “visualforce”. The java packages have
+been renamed as well.
+
+ If you import rules, you also need to adjust the paths, e.g.
+
+
+ category/vf/security.xml
➡️ category/visualforce/security.xml
+
+
+ Changed: HTML support
+
+ Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
+is now considered stable.
+
+ Changed: Kotlin support
+
+ Support for Kotlin was introduced with PMD 7.0.0-rc1 as an experimental feature. With PMD 7.0.0 this
+is now considered stable.
+
+ Changed: Velocity Template Language (VTL)
+
+ The module was named just “vm” which was not a good name. Its module name, language id and
+package names have been renamed to “velocity”.
+
+ If you import rules, you also need to adjust the paths, e.g.
+
+
+ category/vm/...
➡️ category/velocity/...
+
+
+ Rule Changes
+
+ New Rules
+
+
+ OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
+potential performance issue.
+ UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
+ MissingEncoding
finds XML files without explicit encoding.
+
+
+ Changed Rules
+
+
+ EmptyControlStatement
: The rule has a new property to allow empty blocks when
+they contain a comment (allowCommentedBlocks
).
+ MethodNamingConventions
: The deprecated rule property skipTestMethodUnderscores
has
+been removed. It was actually deprecated since PMD 6.15.0, but was not mentioned in the release notes
+back then. Use the property testPattern
instead to configure valid names for test methods.
+ CommentRequired
: The deprecated property headerCommentRequirement
has been removed.
+Use the property classCommentRequirement
instead.
+ NonSerializableClass
: The deprecated property prefix
has been removed
+without replacement. In a serializable class all fields have to be serializable regardless of the name.
+
+
+ Renamed Rulesets
+
+
+ category/vf/security.xml
➡️ category/visualforce/security.xml
+ category/vm/bestpractices.xml
➡️ category/velocity/bestpractices.xml
+ category/vm/design.xml
➡️ category/velocity/design.xml
+ category/vm/errorprone.xml
➡️ category/velocity/errorprone.xml
+
+
+ Removed Rules
+
+ The following previously deprecated rules have been finally removed:
+
+
+ - Apex
+
+ - performance.xml/AvoidSoqlInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+ - performance.xml/AvoidSoslInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+ - performance.xml/AvoidDmlStatementsInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+
+
+ - Java
+
+ - design.xml/ExcessiveClassLength (deleted) ➡️ use
NcssCount
+ - design.xml/ExcessiveMethodLength (deleted) ➡️ use
NcssCount
+ - errorprone.xml/BeanMembersShouldSerialize (deleted) ➡️ use
NonSerializableClass
+ - errorprone.xml/EmptyFinallyBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyIfStmt (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyInitializer (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyStatementBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyStatementNotInLoop (deleted) ➡️ use
UnnecessarySemicolon
+ - errorprone.xml/EmptySwitchStatements (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptySynchronizedBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyTryBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyWhileStmt (deleted) ➡️ use
EmptyControlStatement
+
+
+
+
+ Removed deprecated rulesets
+
+ The following previously deprecated rulesets have been removed. These were the left-over rulesets from PMD 5.
+The rules have been moved into categories with PMD 6.
+
+
+ List of deprecated rulesets
+
+
+
+ - rulesets/apex/apexunit.xml
+ - rulesets/apex/braces.xml
+ - rulesets/apex/complexity.xml
+ - rulesets/apex/empty.xml
+ - rulesets/apex/metrics.xml
+ - rulesets/apex/performance.xml
+ - rulesets/apex/ruleset.xml
+ - rulesets/apex/securty.xml
+ - rulesets/apex/style.xml
+ - rulesets/java/android.xml
+ - rulesets/java/basic.xml
+ - rulesets/java/clone.xml
+ - rulesets/java/codesize.xml
+ - rulesets/java/comments.xml
+ - rulesets/java/controversial.xml
+ - rulesets/java/coupling.xml
+ - rulesets/java/design.xml
+ - rulesets/java/empty.xml
+ - rulesets/java/finalizers.xml
+ - rulesets/java/imports.xml
+ - rulesets/java/j2ee.xml
+ - rulesets/java/javabeans.xml
+ - rulesets/java/junit.xml
+ - rulesets/java/logging-jakarta-commons.xml
+ - rulesets/java/logging-java.xml
+ - rulesets/java/metrics.xml
+ - rulesets/java/migrating.xml
+ - rulesets/java/migrating_to_13.xml
+ - rulesets/java/migrating_to_14.xml
+ - rulesets/java/migrating_to_15.xml
+ - rulesets/java/migrating_to_junit4.xml
+ - rulesets/java/naming.xml
+ - rulesets/java/optimizations.xml
+ - rulesets/java/strictexception.xml
+ - rulesets/java/strings.xml
+ - rulesets/java/sunsecure.xml
+ - rulesets/java/typeresolution.xml
+ - rulesets/java/unnecessary.xml
+ - rulesets/java/unusedcode.xml
+ - rulesets/ecmascript/basic.xml
+ - rulesets/ecmascript/braces.xml
+ - rulesets/ecmascript/controversial.xml
+ - rulesets/ecmascript/unnecessary.xml
+ - rulesets/jsp/basic.xml
+ - rulesets/jsp/basic-jsf.xml
+ - rulesets/plsql/codesize.xml
+ - rulesets/plsql/dates.xml
+ - rulesets/plsql/strictsyntax.xml
+ - rulesets/plsql/TomKytesDespair.xml
+ - rulesets/vf/security.xml
+ - rulesets/vm/basic.xml
+ - rulesets/pom/basic.xml
+ - rulesets/xml/basic.xml
+ - rulesets/xsl/xpath.xml
+ - rulesets/releases/*
+
+
+
+
+ Fixed issues
+
+
+ - cli
+
+
+ - core
+
+ - #1027: [core] Apply the new PropertyDescriptor<Pattern> type where applicable
+ - #3903: [core] Consolidate
n.s.pmd.reporting
package
+ - #3905: [core] Stabilize tree export API
+ - #3917: [core] Consolidate
n.s.pmd.lang.rule
package
+ - #4065: [core] Rename TokenMgrError to LexException, Tokenizer to CpdLexer
+ - #4309: [core] Cleanups in XPath area
+ - #4312: [core] Remove unnecessary property
color
and system property pmd.color
in TextColorRenderer
+ - #4313: [core] Remove support for <lang>-<ruleset> hyphen notation for ruleset references
+ - #4314: [core] Remove ruleset compatibility filter (RuleSetFactoryCompatibility) and CLI option
--no-ruleset-compatibility
+ - #4348: [core] Consolidate @InternalApi classes
+ - #4349: [core] Cleanup remaining experimental and deprecated API
+ - #4378: [core] Ruleset loading processes commented rules
+ - #4674: [core] WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass
+ - #4694: [core] Fix line/col numbers in TokenMgrError
+ - #4717: [core] XSLTRenderer doesn’t close report file
+ - #4750: [core] Fix flaky SummaryHTMLRenderer
+ - #4782: [core] Avoid using getImage/@Image
+
+
+ - doc
+
+ - #995: [doc] Document API evolution principles as ADR
+ - #2511: [doc] Review guides for writing java/xpath rules for correctness with PMD 7
+ - #3175: [doc] Document language module features
+ - #4308: [doc] Document XPath API @DeprecatedAttribute
+ - #4319: [doc] Document TypeRes API and Symbols API
+ - #4659: [doc] Improve ant documentation
+ - #4669: [doc] Add bld PMD Extension to Tools / Integrations
+ - #4676: [doc] Clarify how CPD
--ignore-literals
and --ignore-identifiers
work
+ - #4704: [doc] Multivalued properties do not accept | as a separator
+
+
+ - miscellaneous
+
+ - #4699: Make PMD buildable with java 21
+ - #4586: Use explicit encoding in ruleset xml files
+ - #4642: Update regression tests with Java 21 language features
+ - #4736: [ci] Improve build procedure
+ - #4741: Add pmd-compat6 module for maven-pmd-plugin
+ - #4749: Fixes NoSuchMethodError on processing errors in pmd-compat6
+ - #4776: [ci] Upgrade to ruby 3
+ - #4796: Remove deprecated and release rulesets
+ - #4823: Update to use renamed pmd-designer
+ - #4827: [compat6] Support config errors and cpd for csharp
+ - #4830: Consolidate packages in each maven module
+ - #4867: [dist] ./mvnw command not found in dist-src
+
+
+ - apex
+
+
+ - apex-bestpractices
+
+ - #4556: [apex] UnusedLocalVariable flags for variables which are using in SOQL/SOSL binds
+
+
+ - apex-documentation
+
+ - #4774: [apex] ApexDoc false-positive for the first method of an annotated Apex class
+
+
+ - apex-performance
+
+ - #4675: [apex] New Rule: OperationWithHighCostInLoop
+
+
+ - groovy
+
+ - #4726: [groovy] Support Groovy to 3 and 4 and CPD suppressions
+
+
+ - java
+
+
+ - java-bestpractices
+
+
+ - java-codestyle
+
+ - #2847: [java] New Rule: Use Explicit Types
+ - #4239: [java] UnnecessaryLocalBeforeReturn - false positive with catch clause
+ - #4578: [java] CommentDefaultAccessModifier comment needs to be before annotation if present
+ - #4631: [java] UnnecessaryFullyQualifiedName fails to recognize illegal self reference in enums
+ - #4645: [java] CommentDefaultAccessModifier - False Positive with JUnit5’s ParameterizedTest
+ - #4754: [java] EmptyControlStatementRule: Add allowCommentedBlocks property
+ - #4816: [java] UnnecessaryImport false-positive on generic method call with on lambda
+
+
+ - java-design
+
+ - #174: [java] SingularField false positive with switch in method that both assigns and reads field
+
+
+ - java-errorprone
+
+ - #718: [java] BrokenNullCheck false positive with parameter/field confusion
+ - #932: [java] SingletonClassReturningNewInstance false positive with double assignment
+ - #1831: [java] DetachedTestCase reports abstract methods
+ - #4719: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string
+
+
+ - javascript
+
+
+ - plsql
+
+ - #4820: [plsql] WITH clause is ignored for SELECT INTO statements
+
+
+ - swift
+
+ - #4697: [swift] Support Swift 5.9 features (mainly macros expansion expressions)
+
+
+ - xml-bestpractices
+
+ - #4592: [xml] Add MissingEncoding rule
+
+
+
+
+ API Changes
+
+ See Detailed Release Notes for PMD 7.
+
+ External Contributions
+
+ - #4093: [apex] Summit-AST Apex module - Part 1 - Edward Klimoshenko (@eklimo)
+ - #4151: [apex] Summit-AST Apex module - Part 2 - expression nodes - Aaron Hurst (@aaronhurst-google)
+ - #4171: [apex] Summit-AST Apex module - Part 3 - initializers - Aaron Hurst (@aaronhurst-google)
+ - #4206: [apex] Summit-AST Apex module - Part 4 - statements - Aaron Hurst (@aaronhurst-google)
+ - #4219: [apex] Summit-AST Apex module - Part 5 - annotations, triggers, misc. - Aaron Hurst (@aaronhurst-google)
+ - #4242: [apex] Merge 6.52 into experimental-apex-parser - Aaron Hurst (@aaronhurst-google)
+ - #4251: [apex] Summit-AST Apex module - Part 6 Passing testsuite - Aaron Hurst (@aaronhurst-google)
+ - #4448: [apex] Bump summit-ast to new release 2.1.0 (and remove workaround) - Aaron Hurst (@aaronhurst-google)
+ - #4479: [apex] Merge main (7.x) branch into experimental-apex-parser and fix tests - Aaron Hurst (@aaronhurst-google)
+ - #4562: [apex] Fixes #4556 - Update Apex bind regex match for all possible combinations - nwcm (@nwcm)
+ - #4640: [cli] Launch script fails if run via “bash pmd” - Shai Bennathan (@shai-bennathan)
+ - #4673: [javascript] CPD: Added support for decorator notation - Wener (@wener-tiobe)
+ - #4677: [apex] Add new rule: OperationWithHighCostInLoop - Thomas Prouvot (@tprouvot)
+ - #4698: [swift] Add macro expansion support for swift 5.9 - Richard B. (@kenji21)
+ - #4706: [java] DetachedTestCase should not report on abstract methods - Debamoy Datta (@Debamoy)
+ - #4719: [java] UnnecessaryCaseChange: example doc toUpperCase() should compare to a capitalized string - ciufudean (@ciufudean)
+ - #4738: [doc] Added reference to the PMD extension for bld - Erik C. Thauvin (@ethauvin)
+ - #4749: Fixes NoSuchMethodError on processing errors in pmd-compat6 - Andreas Bergander (@bergander)
+ - #4750: [core] Fix flaky SummaryHTMLRenderer - 219sansim (@219sansim)
+ - #4752: [core] Fix flaky LatticeRelationTest - 219sansim (@219sansim)
+ - #4754: [java] EmptyControlStatementRule: Add allowCommentedBlocks property - Andreas Bergander (@bergander)
+ - #4759: [java] fix: remove delimiter attribute from ruleset category/java/errorprone.xml - Marcin Dąbrowski (@marcindabrowski)
+ - #4825: [plsql] Fix ignored WITH clause for SELECT INTO statements - Laurent Bovet (@lbovet)
+ - #4857: [javascript] Fix UnnecessaryBlock issues with empty statements - Oleksandr Shvets (@oleksandr-shvets)
+
+
+ 🚀 Major Features and Enhancements
+
+ New official logo
+
+ The new official logo of PMD:
+
+ 
+
+ For more information, see the Detailed Release Notes for PMD 7.
+
+ Revamped Java module
+
+
+ - Java grammar substantially refactored - more correct regarding the Java Language Specification (JLS)
+ - Built-in rules have been upgraded for the changed AST
+ - Rewritten type resolution framework and symbol table correctly implements the JLS
+ - AST exposes more semantic information (method calls, field accesses)
+
+
+ For more information, see the Detailed Release Notes for PMD 7.
+
+ Contributors: Clément Fournier (@oowekyala),
+Andreas Dangel (@adangel),
+Juan Martín Sotuyo Dodero (@jsotuyod)
+
+ Revamped Command Line Interface
+
+
+ - Unified and consistent Command Line Interface for both Linux/Unix and Windows across our different utilities
+ - Single script
pmd
(pmd.bat
for Windows) to launch the different utilities:
+
+ pmd check
to run PMD rules and analyze a project
+ pmd cpd
to run CPD (copy paste detector)
+ pmd designer
to run the PMD Rule Designer
+
+
+ - Progress bar support for
pmd check
+ - Shell completion
+
+
+ 
+
+ For more information, see the Detailed Release Notes for PMD 7.
+
+ Contributors: Juan Martín Sotuyo Dodero (@jsotuyod)
+
+ Full Antlr support
+
+
+ - Antlr based grammars can now be used to build full-fledged PMD rules.
+ - Previously, Antlr grammar could only be used for CPD
+ - New supported languages: Swift and Kotlin
+
+
+ For more information, see the Detailed Release Notes for PMD 7.
+
+ Contributors: Lucas Soncini (@lsoncini),
+Matías Fraga (@matifraga),
+Tomás De Lucca (@tomidelucca)
+
+ Updated PMD Designer
+
+ This PMD release ships a new version of the pmd-designer. The designer artifact has been
+renamed from “pmd-ui” to “pmd-designer”. While the designer still works with Java 8, the
+recommended Java Runtime is Java 11 (or later) with OpenJFX 17 (or later).
+
+ For the detailed changes, see
+
+ - PMD Designer Changelog (7.0.0).
+ - PMD Designer Changelog (7.0.0-rc4).
+ - PMD Designer Changelog (7.0.0-rc1).
+
+
+ New CPD report format cpdhtml-v2.xslt
+
+ Thanks to @mohan-chinnappan-n a new CPD report format has been added which features a data table.
+It uses an XSLT stylesheet to convert CPD’s XML format into HTML.
+
+ See the example report.
+
+ Contributors: Mohan Chinnappan (@mohan-chinnappan-n)
+
+ 🎉 Language Related Changes
+
+ Note that this is just a concise listing of the highlights.
+For more information on the languages, see the Detailed Release Notes for PMD 7.
+
+ New: CPD support for Apache Velocity Template Language (VTL)
+
+ PMD supported Apache Velocity for a very long time, but the CPD integration never got finished.
+This is now done and CPD supports Apache Velocity Template language for detecting copy and paste.
+It is shipped in the module pmd-velocity
.
+
+ New: CPD support for Coco
+
+ Thanks to a contribution, CPD now supports Coco, a modern programming language
+designed specifically for building event-driven software. It is shipped in the new
+module pmd-coco
.
+
+ Contributors: Wener (@wener-tiobe)
+
+ New: CPD support for Julia
+
+ Thanks to a contribution, CPD now supports the Julia language. It is shipped
+in the new module pmd-julia
.
+
+ Contributors: Wener (@wener-tiobe)
+
+ New: CPD support for TypeScript
+
+ Thanks to a contribution, CPD now supports the TypeScript language. It is shipped
+with the rest of the JavaScript support in the module pmd-javascript
.
+
+ Contributors: Paul Guyot (@pguyot)
+
+ New: Java 21 and 22 Support
+
+ This release of PMD brings support for Java 21 and 22. There are the following new standard language features,
+that are supported now:
+
+
+ - JEP 456: Unnamed Variables & Patterns (Java 22)
+ - JEP 440: Record Patterns (Java 21)
+ - JEP 441: Pattern Matching for switch (Java 21)
+
+
+ PMD also supports the following preview language features:
+
+
+ - JEP 447: Statements before super(…) (Preview) (Java 22)
+ - JEP 459: String Templates (Second Preview) (Java 21 and 22)
+ - JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview) (Java 21 and 22)
+
+
+ In order to analyze a project with PMD that uses these preview language features,
+you’ll need to enable it via the environment variable PMD_JAVA_OPTS
and select the new language
+version 22-preview
:
+
+ export PMD_JAVA_OPTS=--enable-preview
+pmd check --use-version java-22-preview ...
+
+
+ Note: Support for Java 19 and Java 20 preview language features have been removed. The versions “19-preview” and
+“20-preview” are no longer available.
+
+ New: Kotlin support
+
+
+ - Use PMD to analyze Kotlin code with PMD rules.
+ - Support for Kotlin 1.8 grammar
+ - Initially 2 built-in rules
+ - Support for Kotlin was introduced with PMD 7.0.0-rc1 as an experimental feature. With PMD 7.0.0 this
+is now considered stable.
+
+
+ Contributors: Jeroen Borgers (@jborgers),
+Peter Paul Bakker (@stokpop)
+
+ New: Swift support
+
+
+ - Use PMD to analyze Swift code with PMD rules.
+ - Limited support for Swift 5.9 (Macro Expansions)
+ - Initially 4 built-in rules
+
+
+ Contributors: Lucas Soncini (@lsoncini),
+Matías Fraga (@matifraga),
+Tomás De Lucca (@tomidelucca)
+
+ Changed: Apex Support: Replaced Jorje with fully open source front-end
+
+ When PMD added Apex support with version 5.5.0, it utilized the Apex Jorje library to parse Apex source
+and generate an AST. This library is however a binary-blob provided as part of the
+Salesforce Extensions for VS Code, and it is closed-source.
+
+ This causes problems, if binary blobs are not allowed by e.g. a company-wide policy. In that case, the Jorje
+library prevented that PMD Apex could be used at all.
+
+ Also having access to the source code, enhancements and modifications are easier to do.
+
+ Under the hood, we use two open source libraries instead:
+
+
+ - apex-parser by Kevin Jones (@nawforce)
+This project provides the grammar for a ANTLR based parser.
+ - Summit-AST by Google (@google)
+This project translates the ANTLR parse tree into an AST, that is similar to the AST Jorje provided.
+Note: This is not an official Google product.
+
+
+ Although the parsers is completely switched, there are only little known changes to the AST.
+These are documented in the Migration Guide for PMD 7: Apex AST.
+With the new Apex parser, the new language constructs like
+User Mode Database Operations
+and the new Null Coalescing Operator ??
+can be parsed now. PMD should be able to parse Apex code up to version 60.0 (Spring ‘24).
+
+ See #3766 for details.
+
+ Contributors: Aaron Hurst (@aaronhurst-google),
+Edward Klimoshenko (@eklimo)
+
+ Changed: CPP can now ignore identifiers in sequences (CPD)
+
+
+ - New command line option for CPD:
--ignore-sequences
.
+ - This option is used for CPP only: with the already existing option
--ignore-literal-sequences
, only
+literals were ignored. The new option additionally ignores identifiers as well in sequences.
+ - See PR #4470 for details.
+
+
+ Contributors: Wener (@wener-tiobe)
+
+ Changed: Groovy Support (CPD)
+
+
+ - We now support parsing all Groovy features from Groovy 3 and 4.
+ - We now support suppression through
CPD-ON
/CPD-OFF
comment pairs.
+ - See PR #4726 for details.
+
+
+ Contributors: Juan Martín Sotuyo Dodero (@jsotuyod)
+
+ Changed: HTML support
+
+ Support for HTML was introduced in PMD 6.55.0 as an experimental feature. With PMD 7.0.0 this
+is now considered stable.
+
+ Changed: JavaScript support
+
+
+ - Latest version supports ES6 and also some new constructs (see Rhino)
+ - Comments are retained
+
+
+ Changed: Language versions
+
+
+ - More predefined language versions for each supported language
+ - Can be used to limit rule execution for specific versions only with
minimumLanguageVersion
and
+maximumLanguageVersion
attributes.
+
+
+ Changed: Rule properties
+
+
+ - The old deprecated classes like
IntProperty
and StringProperty
have been removed. Please use
+PropertyFactory
to create properties.
+ - All properties which accept multiple values now use a comma (
,
) as a delimiter. The previous default was a
+pipe character (|
). The delimiter is not configurable anymore. If needed, the comma can be escaped
+with a backslash.
+ - The
min
and max
attributes in property definitions in the XML are now optional and can appear separately
+or be omitted.
+
+
+ Changed: Velocity Template Language (VTL)
+
+ The module was named just “vm” which was not a good name. Its module name, language id and
+package names have been renamed to “velocity”.
+
+ If you import rules, you also need to adjust the paths, e.g.
+
+
+ category/vm/...
➡️ category/velocity/...
+
+
+ Changed: Visualforce
+
+ There was an inconsistency between the naming of the maven module and the language id. The language id
+used the abbreviation “vf”, while the maven module used the longer name “visualforce”. This has been
+solved by renaming the language module to its full name “visualforce”. The java packages have
+been renamed as well.
+
+ If you import rules, you also need to adjust the paths, e.g.
+
+
+ category/vf/security.xml
➡️ category/visualforce/security.xml
+
+
+ 🌟 New and changed rules
+
+ New Rules
+
+ Apex
+
+ OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
+potential performance issue.
+ UnusedMethod
finds unused methods in your code.
+
+
+ Java
+
+ UnnecessaryBoxing
reports boxing and unboxing conversions that may be made implicit.
+ UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
+
+
+ Kotlin
+
+ FunctionNameTooShort
finds functions with a too short name.
+ OverrideBothEqualsAndHashcode
finds classes with only
+either equals
or hashCode
overridden, but not both. This leads to unexpected behavior once instances
+of such classes are used in collections (Lists, HashMaps, …).
+
+
+ Swift
+
+ ForceCast
flags all force casts, making sure you are
+defensively considering all types. Having the application crash shouldn’t be an option.
+ ForceTry
flags all force tries, making sure you are
+defensively handling exceptions. Having the application crash shouldn’t be an option.
+ ProhibitedInterfaceBuilder
flags any usage of interface
+builder. Interface builder files are prone to merge conflicts, and are impossible to code review, so larger
+teams usually try to avoid it or reduce its usage.
+ UnavailableFunction
flags any function throwing
+a fatalError
not marked as @available(*, unavailable)
to ensure no calls are actually performed in
+the codebase.
+
+
+ XML
+
+ MissingEncoding
finds XML files without explicit encoding.
+
+
+ Other changes
+
+ The information about changed rules, removed rules and rulesets
+can be found in the Detailed Release Notes for PMD 7.
+
+ 🚨 API
+
+ The API of PMD has been growing over the years and needed some cleanup. The goal is, to
+have a clear separation between a well-defined API and the implementation, which is internal.
+This should help us in future development.
+
+ Also, there are some improvement and changes in different areas. For the detailed description
+of the changes listed here, see Detailed Release Notes for PMD 7.
+
+
+ - Miscellaneous smaller changes and cleanups
+ - XPath 3.1 support for XPath-based rules
+ - Node stream API for AST traversal
+ - Metrics framework
+ - Testing framework
+ - Language Lifecycle and Language Properties
+ - Rule Properties
+ - New Programmatic API for CPD
+
+
+ 💥 Compatibility and migration notes
+
+ A detailed documentation of required changes are available in the
+Migration Guide for PMD 7.
+
+ See also Detailed Release Notes for PMD 7.
+
+ 🐛 Fixed Issues
+
+ More than 300 issues have been fixed in PMD 7.
+See Detailed Release Notes for PMD 7 for the
+complete list of fixed issues.
+
+ ✨ External Contributions
+
+ Many thanks to the following contributors:
+@219sansim, @aaronhurst-google, @anastasiia-koba, @AndreyBozhko, @bergander, @ciufudean, @cyw3, @dague1,
+@Debamoy, @eklimo, @ethauvin, @JerritEic, @joaodinissf, @kenji21, @krdabrowski, @lbovet, @lsoncini,
+@LynnBroe, @marcindabrowski, @matifraga, @mohan-chinnappan-n, @mohui1999, @nawforce, @nirvikpatel,
+@nwcm, @oleksandr-shvets, @pguyot, @PimvanderLoos, @rcorfieldffdc, @sfdcsteve, @shai-bennathan, @tomidelucca,
+@tprouvot, @wener-tiobe.
+
+ See Detailed Release Notes for PMD 7 for the
+full list of PRs.
+
+ 📈 Stats
+
+ - 5741 commits
+ - 849 closed tickets & PRs
+ - Days since last release (6.55.0): 390
+ - Days since last release (7.0.0-rc4): 173
+
+
+
+
30-September-2023 - 7.0.0-rc4
We’re excited to bring you the next major version of PMD!
@@ -20850,7 +21815,7 @@ Added new HTML report format
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_release_notes_pmd7.html b/pmd_release_notes_pmd7.html
index 04cafaf57b..3b4eb8001b 100644
--- a/pmd_release_notes_pmd7.html
+++ b/pmd_release_notes_pmd7.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1907,8 +1907,8 @@ PMD 7 does not need to load classes, and does not have these problems.
The AST exposes much more semantic information now. For instance, you can jump from a method call to
the declaration of the method being called, or from a field access to the field declaration. These
improvements allow interesting rules to be written that need precise knowledge of the types
-in the program, for instance to detect UnnecessaryBoxing
-or UseDiamondOperator
.
+in the program, for instance to detect UnnecessaryBoxing
+or UseDiamondOperator
.
These are just a small preview of the new rules we will be adding in the PMD 7 release cycle.
Overall, the changes to the parser, AST, type resolution and symbol table code has made PMD for
@@ -2093,9 +2093,9 @@ the official kotlin Antlr grammar for Kotlin 1.8. Java-based rules and XPath-bas
We are shipping the following rules:
- FunctionNameTooShort
finds functions with a too
+ FunctionNameTooShort
finds functions with a too
short name.
- OverrideBothEqualsAndHashcode
finds classes with only
+ OverrideBothEqualsAndHashcode
finds classes with only
either equals
or hashCode
overridden, but not both. This leads to unexpected behavior once instances
of such classes are used in collections (Lists, HashMaps, …).
@@ -2113,14 +2113,14 @@ are supported, but other features are not.
We are pleased to announce we are shipping a number of rules starting with PMD 7.
- ForceCast
flags all force casts, making sure you are
+ ForceCast
flags all force casts, making sure you are
defensively considering all types. Having the application crash shouldn’t be an option.
- ForceTry
flags all force tries, making sure you are
+ ForceTry
flags all force tries, making sure you are
defensively handling exceptions. Having the application crash shouldn’t be an option.
- ProhibitedInterfaceBuilder
flags any usage of interface
+ ProhibitedInterfaceBuilder
flags any usage of interface
builder. Interface builder files are prone to merge conflicts, and are impossible to code review, so larger
teams usually try to avoid it or reduce its usage.
- UnavailableFunction
flags any function throwing
+ UnavailableFunction
flags any function throwing
a fatalError
not marked as @available(*, unavailable)
to ensure no calls are actually performed in
the codebase.
@@ -2209,7 +2209,7 @@ the Java module, listing all possible versions enables other languages as well t
- The old deprecated classes like
IntProperty
and StringProperty
have been removed. Please use
-PropertyFactory
to create properties.
+PropertyFactory
to create properties.
- All properties which accept multiple values now use a comma (
,
) as a delimiter. The previous default was a
pipe character (|
). The delimiter is not configurable anymore. If needed, the comma can be escaped
with a backslash.
@@ -2247,42 +2247,42 @@ been renamed as well.
Apex
- OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
+ OperationWithHighCostInLoop
finds Schema class methods called in a loop, which is a
potential performance issue.
- UnusedMethod
finds unused methods in your code.
+ UnusedMethod
finds unused methods in your code.
Java
- UnnecessaryBoxing
reports boxing and unboxing conversions that may be made implicit.
- UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
+ UnnecessaryBoxing
reports boxing and unboxing conversions that may be made implicit.
+ UseExplicitTypes
reports usages of var
keyword, which was introduced with Java 10.
Kotlin
- FunctionNameTooShort
finds functions with a too short name.
- OverrideBothEqualsAndHashcode
finds classes with only
+ FunctionNameTooShort
finds functions with a too short name.
+ OverrideBothEqualsAndHashcode
finds classes with only
either equals
or hashCode
overridden, but not both. This leads to unexpected behavior once instances
of such classes are used in collections (Lists, HashMaps, …).
Swift
- ForceCast
flags all force casts, making sure you are
+ ForceCast
flags all force casts, making sure you are
defensively considering all types. Having the application crash shouldn’t be an option.
- ForceTry
flags all force tries, making sure you are
+ ForceTry
flags all force tries, making sure you are
defensively handling exceptions. Having the application crash shouldn’t be an option.
- ProhibitedInterfaceBuilder
flags any usage of interface
+ ProhibitedInterfaceBuilder
flags any usage of interface
builder. Interface builder files are prone to merge conflicts, and are impossible to code review, so larger
teams usually try to avoid it or reduce its usage.
- UnavailableFunction
flags any function throwing
+ UnavailableFunction
flags any function throwing
a fatalError
not marked as @available(*, unavailable)
to ensure no calls are actually performed in
the codebase.
XML
- MissingEncoding
finds XML files without explicit encoding.
+ MissingEncoding
finds XML files without explicit encoding.
Changed Rules
@@ -2295,17 +2295,17 @@ The properties topscore
- - Apex:
ExcessiveClassLength
, ExcessiveParameterList
,
-ExcessivePublicCount
, NcssConstructorCount
,
-NcssMethodCount
, NcssTypeCount
- - Java:
ExcessiveImports
, ExcessiveParameterList
,
-ExcessivePublicCount
, SwitchDensity
- - PLSQL:
ExcessiveMethodLength
, ExcessiveObjectLength
,
-ExcessivePackageBodyLength
, ExcessivePackageSpecificationLength
,
-ExcessiveParameterList
, ExcessiveTypeLength
,
-NcssMethodCount
, NcssObjectCount
,
-NPathComplexity
- - Velocity:
ExcessiveTemplateLength
+ - Apex:
ExcessiveClassLength
, ExcessiveParameterList
,
+ExcessivePublicCount
, NcssConstructorCount
,
+NcssMethodCount
, NcssTypeCount
+ - Java:
ExcessiveImports
, ExcessiveParameterList
,
+ExcessivePublicCount
, SwitchDensity
+ - PLSQL:
ExcessiveMethodLength
, ExcessiveObjectLength
,
+ExcessivePackageBodyLength
, ExcessivePackageSpecificationLength
,
+ExcessiveParameterList
, ExcessiveTypeLength
,
+NcssMethodCount
, NcssObjectCount
,
+NPathComplexity
+ - Velocity:
ExcessiveTemplateLength
- The general property
violationSuppressXPath
which is available for all rules to
@@ -2325,7 +2325,7 @@ See issue #1648 for more de
Apex Codestyle
- MethodNamingConventions
: The deprecated rule property skipTestMethodUnderscores
has
+ MethodNamingConventions
: The deprecated rule property skipTestMethodUnderscores
has
been removed. It was actually deprecated since PMD 6.15.0, but was not mentioned in the release notes
back then. Use the property testPattern
instead to configure valid names for test methods.
@@ -2336,9 +2336,9 @@ back then. Use the property t
-
Violations reported on methods or classes previously reported the line range of the entire method
or class. With PMD 7.0.0, the reported location is now just the identifier of the method or class.
-This affects various rules, e.g. CognitiveComplexity
.
+This affects various rules, e.g. CognitiveComplexity
.
- The report location is controlled by the overrides of the method Node#getReportLocation
+
The report location is controlled by the overrides of the method Node#getReportLocation
in different node types.
See issue #4439 and issue #730
@@ -2349,14 +2349,14 @@ for more details.
Java Best Practices
- ArrayIsStoredDirectly
: Violations are now reported on the assignment and not
+ ArrayIsStoredDirectly
: Violations are now reported on the assignment and not
anymore on the formal parameter. The reported line numbers will probably move.
- AvoidReassigningLoopVariables
: This rule might not report anymore all
+ AvoidReassigningLoopVariables
: This rule might not report anymore all
reassignments of the control variable in for-loops when the property forReassign
is set to skip
.
See issue #4500 for more details.
- LooseCoupling
: The rule has a new property to allow some types to be coupled
+ LooseCoupling
: The rule has a new property to allow some types to be coupled
to (allowedTypes
).
- UnusedLocalVariable
: This rule has some important false-negatives fixed
+ UnusedLocalVariable
: This rule has some important false-negatives fixed
and finds many more cases now. For details see issues #2130,
#4516, and #4517.
@@ -2364,48 +2364,48 @@ and finds many more cases now. For details see issues MethodNamingConventions
: The property checkNativeMethods
has been removed. The
+ MethodNamingConventions
: The property checkNativeMethods
has been removed. The
property was deprecated since PMD 6.3.0. Use the property nativePattern
to control whether native methods
should be considered or not.
- ShortVariable
: This rule now also reports short enum constant names.
- UseDiamondOperator
: The property java7Compatibility
has been removed. The rule now
+ ShortVariable
: This rule now also reports short enum constant names.
+ UseDiamondOperator
: The property java7Compatibility
has been removed. The rule now
handles Java 7 properly without a property.
- UnnecessaryFullyQualifiedName
: The rule has two new properties,
+ UnnecessaryFullyQualifiedName
: The rule has two new properties,
to selectively disable reporting on static field and method qualifiers. The rule also has been improved
to be more precise.
- UselessParentheses
: The rule has two new properties which control how strict
+ UselessParentheses
: The rule has two new properties which control how strict
the rule should be applied. With ignoreClarifying
(default: true) parentheses that are strictly speaking
not necessary are allowed, if they separate expressions of different precedence.
The other property ignoreBalancing
(default: true) is similar, in that it allows parentheses that help
reading and understanding the expressions.
- EmptyControlStatement
: The rule has a new property to allow empty blocks when
+ EmptyControlStatement
: The rule has a new property to allow empty blocks when
they contain a comment (allowCommentedBlocks
).
Java Design
- CyclomaticComplexity
: The property reportLevel
has been removed. The property was
+ CyclomaticComplexity
: The property reportLevel
has been removed. The property was
deprecated since PMD 6.0.0. The report level can now be configured separated for classes and methods using
classReportLevel
and methodReportLevel
instead.
- ImmutableField
: The property ignoredAnnotations
has been removed. The property was
+ ImmutableField
: The property ignoredAnnotations
has been removed. The property was
deprecated since PMD 6.52.0.
- LawOfDemeter
: The rule has a new property trustRadius
. This defines the maximum degree
+ LawOfDemeter
: The rule has a new property trustRadius
. This defines the maximum degree
of trusted data. The default of 1 is the most restrictive.
- NPathComplexity
: The property minimum
has been removed. It was deprecated since PMD 6.0.0.
+ NPathComplexity
: The property minimum
has been removed. It was deprecated since PMD 6.0.0.
Use the property reportLevel
instead.
- SingularField
: The properties checkInnerClasses
and disallowNotAssignment
have been removed.
+ SingularField
: The properties checkInnerClasses
and disallowNotAssignment
have been removed.
The rule is now more precise and will check these cases properly.
- UseUtilityClass
: The property ignoredAnnotations
has been removed.
+ UseUtilityClass
: The property ignoredAnnotations
has been removed.
Java Documentation
- CommentContent
: The properties caseSensitive
and disallowedTerms
are removed. The
+ CommentContent
: The properties caseSensitive
and disallowedTerms
are removed. The
new property forbiddenRegex
can be used now to define the disallowed terms with a single regular
expression.
- CommentRequired
:
+ CommentRequired
:
- Overridden methods are now detected even without the
@Override
annotation. This is relevant for the property methodWithOverrideCommentRequirement
.
@@ -2416,7 +2416,7 @@ for missing public method comments.
instead.
- CommentSize
: When determining the line-length of a comment, the leading comment
+ CommentSize
: When determining the line-length of a comment, the leading comment
prefix markers (e.g. *
or //
) are ignored and don’t add up to the line-length.
See also pull request #4369.
@@ -2424,14 +2424,14 @@ See also pull request #4369.<
Java Error Prone
- AvoidDuplicateLiterals
: The property exceptionfile
has been removed. The property was
+ AvoidDuplicateLiterals
: The property exceptionfile
has been removed. The property was
deprecated since PMD 6.10.0. Use the property exceptionList
instead.
- DontImportSun
: sun.misc.Signal
is not special-cased anymore.
- EmptyCatchBlock
: CloneNotSupportedException
and InterruptedException
are not
+ DontImportSun
: sun.misc.Signal
is not special-cased anymore.
+ EmptyCatchBlock
: CloneNotSupportedException
and InterruptedException
are not
special-cased anymore. Rename the exception parameter to ignored
to ignore them.
- ImplicitSwitchFallThrough
: Violations are now reported on the case statements
+ ImplicitSwitchFallThrough
: Violations are now reported on the case statements
rather than on the switch statements. This is more accurate but might result in more violations now.
- NonSerializableClass
: The deprecated property prefix
has been removed
+ NonSerializableClass
: The deprecated property prefix
has been removed
without replacement. In a serializable class all fields have to be serializable regardless of the name.
@@ -2446,85 +2446,85 @@ without replacement. In a serializable class all fields have to be serializable
Apex
- - performance.xml/AvoidSoqlInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
- - performance.xml/AvoidSoslInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
- - performance.xml/AvoidDmlStatementsInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
- - codestyle.xml/VariableNamingConventions (deleted) ➡️ use
FieldNamingConventions
,
-FormalParameterNamingConventions
, LocalVariableNamingConventions
,
-or PropertyNamingConventions
- - security.xml/ApexCSRF (deleted) ➡️ use
ApexCSRF
+ - performance.xml/AvoidSoqlInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+ - performance.xml/AvoidSoslInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+ - performance.xml/AvoidDmlStatementsInLoops (deleted) ➡️ use
OperationWithLimitsInLoop
+ - codestyle.xml/VariableNamingConventions (deleted) ➡️ use
FieldNamingConventions
,
+FormalParameterNamingConventions
, LocalVariableNamingConventions
,
+or PropertyNamingConventions
+ - security.xml/ApexCSRF (deleted) ➡️ use
ApexCSRF
Java
- - codestyle.xml/AbstractNaming (deleted) ➡️ use
ClassNamingConventions
+ - codestyle.xml/AbstractNaming (deleted) ➡️ use
ClassNamingConventions
- codestyle.xml/AvoidFinalLocalVariable (deleted) ➡️ not replaced
- - codestyle.xml/AvoidPrefixingMethodParameters (deleted) ➡️ use
FormalParameterNamingConventions
+ - codestyle.xml/AvoidPrefixingMethodParameters (deleted) ➡️ use
FormalParameterNamingConventions
- performance.xml/AvoidUsingShortType (deleted) ➡️ not replaced
- - errorprone.xml/BadComparison (deleted) ➡️ use
ComparisonWithNaN
- - errorprone.xml/BeanMembersShouldSerialize (deleted) ➡️ use
NonSerializableClass
- - performance.xml/BooleanInstantiation (deleted) ➡️ use
UnnecessaryBoxing
-and PrimitiveWrapperInstantiation
- - performance.xml/ByteInstantiation (deleted) ➡️ use
UnnecessaryBoxing
-and PrimitiveWrapperInstantiation
+ - errorprone.xml/BadComparison (deleted) ➡️ use
ComparisonWithNaN
+ - errorprone.xml/BeanMembersShouldSerialize (deleted) ➡️ use
NonSerializableClass
+ - performance.xml/BooleanInstantiation (deleted) ➡️ use
UnnecessaryBoxing
+and PrimitiveWrapperInstantiation
+ - performance.xml/ByteInstantiation (deleted) ➡️ use
UnnecessaryBoxing
+and PrimitiveWrapperInstantiation
- errorprone.xml/CloneThrowsCloneNotSupportedException (deleted) ➡️ not replaced
- - errorprone.xml/DataflowAnomalyAnalysis (deleted) ➡️ use
UnusedAssignment
- - codestyle.xml/DefaultPackage (deleted) ➡️ use
CommentDefaultAccessModifier
- - errorprone.xml/DoNotCallSystemExit (deleted) ➡️ use
DoNotTerminateVM
- - codestyle.xml/DontImportJavaLang (deleted) ➡️ use
UnnecessaryImport
- - codestyle.xml/DuplicateImports (deleted) ➡️ use
UnnecessaryImport
- - errorprone.xml/EmptyFinallyBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyIfStmt (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyInitializer (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyStatementBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyStatementNotInLoop (deleted) ➡️ use
UnnecessarySemicolon
- - errorprone.xml/EmptySwitchStatements (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptySynchronizedBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyTryBlock (deleted) ➡️ use
EmptyControlStatement
- - errorprone.xml/EmptyWhileStmt (deleted) ➡️ use
EmptyControlStatement
- - design.xml/ExcessiveClassLength (deleted) ➡️ use
NcssCount
- - design.xml/ExcessiveMethodLength (deleted) ➡️ use
NcssCount
- - codestyle.xml/ForLoopsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
- - codestyle.xml/IfElseStmtsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
- - codestyle.xml/IfStmtsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
- - errorprone.xml/ImportFromSamePackage (deleted) ➡️ use
UnnecessaryImport
- - performance.xml/IntegerInstantiation (deleted) ➡️ use
UnnecessaryBoxing
-and PrimitiveWrapperInstantiation
- - errorprone.xml/InvalidSlf4jMessageFormat (deleted) ➡️ use
InvalidLogMessageFormat
- - errorprone.xml/LoggerIsNotStaticFinal (deleted) ➡️ use
ProperLogger
- - performance.xml/LongInstantiation (deleted) ➡️ use
UnnecessaryBoxing
-and PrimitiveWrapperInstantiation
- - codestyle.xml/MIsLeadingVariableName (deleted) ➡️ use
FieldNamingConventions
,
-FormalParameterNamingConventions
,
-or LocalVariableNamingConventions
- - errorprone.xml/MissingBreakInSwitch (deleted) ➡️ use
ImplicitSwitchFallThrough
- - design.xml/ModifiedCyclomaticComplexity (deleted) ➡️ use
CyclomaticComplexity
- - design.xml/NcssConstructorCount (deleted) ➡️ use
NcssCount
- - design.xml/NcssMethodCount (deleted) ➡️ use
NcssCount
- - design.xml/NcssTypeCount (deleted) ➡️ use
NcssCount
+ - errorprone.xml/DataflowAnomalyAnalysis (deleted) ➡️ use
UnusedAssignment
+ - codestyle.xml/DefaultPackage (deleted) ➡️ use
CommentDefaultAccessModifier
+ - errorprone.xml/DoNotCallSystemExit (deleted) ➡️ use
DoNotTerminateVM
+ - codestyle.xml/DontImportJavaLang (deleted) ➡️ use
UnnecessaryImport
+ - codestyle.xml/DuplicateImports (deleted) ➡️ use
UnnecessaryImport
+ - errorprone.xml/EmptyFinallyBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyIfStmt (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyInitializer (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyStatementBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyStatementNotInLoop (deleted) ➡️ use
UnnecessarySemicolon
+ - errorprone.xml/EmptySwitchStatements (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptySynchronizedBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyTryBlock (deleted) ➡️ use
EmptyControlStatement
+ - errorprone.xml/EmptyWhileStmt (deleted) ➡️ use
EmptyControlStatement
+ - design.xml/ExcessiveClassLength (deleted) ➡️ use
NcssCount
+ - design.xml/ExcessiveMethodLength (deleted) ➡️ use
NcssCount
+ - codestyle.xml/ForLoopsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
+ - codestyle.xml/IfElseStmtsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
+ - codestyle.xml/IfStmtsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
+ - errorprone.xml/ImportFromSamePackage (deleted) ➡️ use
UnnecessaryImport
+ - performance.xml/IntegerInstantiation (deleted) ➡️ use
UnnecessaryBoxing
+and PrimitiveWrapperInstantiation
+ - errorprone.xml/InvalidSlf4jMessageFormat (deleted) ➡️ use
InvalidLogMessageFormat
+ - errorprone.xml/LoggerIsNotStaticFinal (deleted) ➡️ use
ProperLogger
+ - performance.xml/LongInstantiation (deleted) ➡️ use
UnnecessaryBoxing
+and PrimitiveWrapperInstantiation
+ - codestyle.xml/MIsLeadingVariableName (deleted) ➡️ use
FieldNamingConventions
,
+FormalParameterNamingConventions
,
+or LocalVariableNamingConventions
+ - errorprone.xml/MissingBreakInSwitch (deleted) ➡️ use
ImplicitSwitchFallThrough
+ - design.xml/ModifiedCyclomaticComplexity (deleted) ➡️ use
CyclomaticComplexity
+ - design.xml/NcssConstructorCount (deleted) ➡️ use
NcssCount
+ - design.xml/NcssMethodCount (deleted) ➡️ use
NcssCount
+ - design.xml/NcssTypeCount (deleted) ➡️ use
NcssCount
- bestpractices.xml/PositionLiteralsFirstInCaseInsensitiveComparisons (deleted) ➡️
-use
LiteralsFirstInComparisons
+use LiteralsFirstInComparisons
- bestpractices.xml/PositionLiteralsFirstInComparisons (deleted) ➡️
-use
LiteralsFirstInComparisons
+use LiteralsFirstInComparisons
- errorprone.xml/ReturnEmptyArrayRatherThanNull (deleted) ➡️
-use
ReturnEmptyCollectionRatherThanNull
- - performance.xml/ShortInstantiation (deleted) ➡️ use
UnnecessaryBoxing
-and PrimitiveWrapperInstantiation
- - design.xml/SimplifyBooleanAssertion (deleted) ➡️ use
SimplifiableTestAssertion
+use ReturnEmptyCollectionRatherThanNull
+ - performance.xml/ShortInstantiation (deleted) ➡️ use
UnnecessaryBoxing
+and PrimitiveWrapperInstantiation
+ - design.xml/SimplifyBooleanAssertion (deleted) ➡️ use
SimplifiableTestAssertion
- performance.xml/SimplifyStartsWith (deleted) ➡️ not replaced
- - design.xml/StdCyclomaticComplexity (deleted) ➡️ use
CyclomaticComplexity
- - codestyle.xml/SuspiciousConstantFieldName (deleted) ➡️ use
FieldNamingConventions
- - performance.xml/UnnecessaryWrapperObjectCreation (deleted) ➡️ use the new rule
UnnecessaryBoxing
- - multithreading.xml/UnsynchronizedStaticDateFormatter (deleted) ➡️ use
UnsynchronizedStaticFormatter
- - bestpractices.xml/UnusedImports (deleted) ➡️ use
UnnecessaryImport
- - bestpractices.xml/UseAssertEqualsInsteadOfAssertTrue (deleted) ➡️ use
SimplifiableTestAssertion
- - bestpractices.xml/UseAssertNullInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
- - bestpractices.xml/UseAssertSameInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
- - bestpractices.xml/UseAssertTrueInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
- - codestyle.xml/VariableNamingConventions (deleted) ➡️ use
FieldNamingConventions
,
-FormalParameterNamingConventions
, or LocalVariableNamingConventions
- - codestyle.xml/WhileLoopsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
+ - design.xml/StdCyclomaticComplexity (deleted) ➡️ use
CyclomaticComplexity
+ - codestyle.xml/SuspiciousConstantFieldName (deleted) ➡️ use
FieldNamingConventions
+ - performance.xml/UnnecessaryWrapperObjectCreation (deleted) ➡️ use the new rule
UnnecessaryBoxing
+ - multithreading.xml/UnsynchronizedStaticDateFormatter (deleted) ➡️ use
UnsynchronizedStaticFormatter
+ - bestpractices.xml/UnusedImports (deleted) ➡️ use
UnnecessaryImport
+ - bestpractices.xml/UseAssertEqualsInsteadOfAssertTrue (deleted) ➡️ use
SimplifiableTestAssertion
+ - bestpractices.xml/UseAssertNullInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
+ - bestpractices.xml/UseAssertSameInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
+ - bestpractices.xml/UseAssertTrueInsteadOfAssertEquals (deleted) ➡️ use
SimplifiableTestAssertion
+ - codestyle.xml/VariableNamingConventions (deleted) ➡️ use
FieldNamingConventions
,
+FormalParameterNamingConventions
, or LocalVariableNamingConventions
+ - codestyle.xml/WhileLoopsMustUseBraces (deleted) ➡️ use
ControlStatementBraces
Removed rulesets
@@ -2607,8 +2607,8 @@ The full detailed documentation of the changes are available in the
- Removed rules: Custom rulesets need to be reviewed. See above for a list of new and removed rules.
- XPath 1.0 and 2.0 support is removed,
violationSuppressXPath
now requires XPath 3.1: Custom rulesets need
to be reviewed.
- - Custom rules using rulechains: Need to override
AbstractRule#buildTargetSelector
-using RuleTargetSelector#forTypes
.
+ - Custom rules using rulechains: Need to override
AbstractRule#buildTargetSelector
+using RuleTargetSelector#forTypes
.
-
The asset filenames of PMD on GitHub Releases are
now pmd-dist-<version>-bin.zip
, pmd-dist-<version>-src.zip
and pmd-dist-<version>-doc.zip
.
@@ -2660,38 +2660,38 @@ with pmd designer
. The
java.net.sourceforge.pmd.util.designer
have all been removed.
-
-
All API related to XPath support has been moved to the package net.sourceforge.pmd.lang.rule.xpath
.
+
All API related to XPath support has been moved to the package net.sourceforge.pmd.lang.rule.xpath
.
This includes API that was previously dispersed over net.sourceforge.pmd.lang
, net.sourceforge.pmd.lang.ast.xpath
,
net.sourceforge.pmd.lang.rule.xpath
, net.sourceforge.pmd.lang.rule
, and various language-specific packages
(which were made internal).
-
The implementation of the Ant integration has been moved from the module pmd-core
to a new module pmd-ant
.
-This involves classes in package net.sourceforge.pmd.ant
. The ant CPDTask class net.sourceforge.pmd.cpd.CPDTask
-has been moved into the same package net.sourceforge.pmd.ant
. You’ll need to update your taskdef entries in your
-build.xml files with the FQCN net.sourceforge.pmd.ant.CPDTask
if you use it anywhere.
+This involves classes in package net.sourceforge.pmd.ant
. The ant CPDTask class net.sourceforge.pmd.cpd.CPDTask
+has been moved into the same package net.sourceforge.pmd.ant
. You’ll need to update your taskdef entries in your
+build.xml files with the FQCN net.sourceforge.pmd.ant.CPDTask
if you use it anywhere.
-
-
Utility classes in net.sourceforge.pmd.util
, that have previously marked as @InternalApi
have been finally
+
Utility classes in net.sourceforge.pmd.util
, that have previously marked as @InternalApi
have been finally
moved to an internal sub package and are now longer available.
This includes ClasspathClassLoader, FileFinder, FileUtil, and IOUtil.
- - The following utility classes in
net.sourceforge.pmd.util
are now considered public API:
+ - The following utility classes in
net.sourceforge.pmd.util
are now considered public API:
- - Moved the two classes
AntlrCpdLexer
and JavaccCpdLexer
from
-internal
package into package net.sourceforge.pmd.cpd.impl
. These two classes are part of the API and
+ - Moved the two classes
AntlrCpdLexer
and JavaccCpdLexer
from
+internal
package into package net.sourceforge.pmd.cpd.impl
. These two classes are part of the API and
are base classes for CPD language implementations. Since 7.0.0-rc2.
Note: These two classes have been previously called “AntlrTokenizer” and “JavaCCTokenizer”.
- AntlrBaseRule
is gone in favor of AbstractVisitorRule
. Since 7.0.0-rc2.
+ AntlrBaseRule
is gone in favor of AbstractVisitorRule
. Since 7.0.0-rc2.
- The classes
net.sourceforge.pmd.lang.kotlin.ast.KotlinInnerNode
and
net.sourceforge.pmd.lang.swift.ast.SwiftInnerNode
are package-private now. Since 7.0.0-rc2.
@@ -2722,11 +2722,11 @@ an introduction to new features in XPath 3.1.
A pipeline like shown here traverses the tree lazily, which is more efficient than traversing eagerly to put all
descendants in a list. It is also much easier to change than the old imperative way.
-To make this API as accessible as possible, the Node
interface has been fitted with new
+
To make this API as accessible as possible, the Node
interface has been fitted with new
methods producing node streams. Those methods replace previous tree traversal methods like Node#findDescendantsOfType
.
In all cases, they should be more efficient and more convenient.
-See NodeStream
for more details.
+See NodeStream
for more details.
Contributors: Clément Fournier (@oowekyala)
@@ -2742,17 +2742,17 @@ usually Integer
or This makes it so, that Double.NaN
is not an appropriate sentinel value to represent “not supported” anymore.
Instead, computeFor
may return null
in that case (or a garbage value). The value null
may have caused
problems with the narrowing casts, which through unboxing, might have thrown an NPE. But when we deprecated
-the language-specific metrics façades to replace them with the generic MetricsUtil
,
+the language-specific metrics façades to replace them with the generic MetricsUtil
,
we took care of making
the new methods throw an exception if the metric cannot be computed on the parameter. This forces you to guard
-calls to MetricsUtil#computeMetric
(and other overloads)
+calls to MetricsUtil#computeMetric
(and other overloads)
with something like if (metric.supports(node))
. If you’re following
this pattern, then you won’t observe the undefined behavior.
-
-
The MetricKey
interface is not so useful and has been merged into the Metric
-interface and removed. So the Metric
interface has the new method
-displayName
.
+ The MetricKey
interface is not so useful and has been merged into the Metric
+interface and removed. So the Metric
interface has the new method
+displayName
.
-
The framework is not tied to at most 2 node types per language anymore. Previously those were nodes for
@@ -2762,13 +2762,13 @@ be computed on any code block.
For that reason, keeping around a hard distinction between “class metrics” and “operation metrics” is not
useful. So in the Java framework for example, we removed the interfaces JavaClassMetric
, JavaOperationMetric
,
abstract classes for those, JavaClassMetricKey
, and JavaOperationMetricKey
. Metric constants are now all
-inside the JavaMetrics
utility class. The same was done in the Apex framework.
+inside the JavaMetrics
utility class. The same was done in the Apex framework.
We don’t really need abstract classes for metrics now. So AbstractMetric
is also removed from pmd-core.
-There is a factory method on the Metric
interface to create a metric easily.
+There is a factory method on the Metric
interface to create a metric easily.
-
-
This makes it so, that LanguageMetricsProvider
does not need type parameters.
+
This makes it so, that LanguageMetricsProvider
does not need type parameters.
It can just return a Set<Metric<?, ?>>
to list available metrics.
-
@@ -2787,8 +2787,8 @@ removed. Node streams allow replacing their usages very easily.
net.sourceforge.pmd.testframework.TestDescriptor
- - Rule tests, that use
SimpleAggregatorTst
or
-PmdRuleTst
work as before without change, but use
+ - Rule tests, that use
SimpleAggregatorTst
or
+PmdRuleTst
work as before without change, but use
now JUnit5 under the hood. If you added additional JUnit4 tests to your rule test classes, then you’ll
need to upgrade them to use JUnit5.
@@ -2813,7 +2813,7 @@ and Adding a new lang
- The old deprecated classes like
IntProperty
and StringProperty
have been removed. Please use
-PropertyFactory
to create properties.
+PropertyFactory
to create properties.
- All properties which accept multiple values now use a comma (
,
) as a delimiter. The previous default was a
pipe character (|
). The delimiter is not configurable anymore. If needed, the comma can be escaped
with a backslash.
@@ -2824,8 +2824,8 @@ or be omitted.
New Programmatic API for CPD
This release introduces a new programmatic API to replace the old class CPD
. The new API uses a similar model to
-PmdAnalysis
and is called CpdAnalysis
. Programmatic execution of CPD should now be
-done with a CPDConfiguration
and a CpdAnalysis
, for instance:
+PmdAnalysis
and is called CpdAnalysis
. Programmatic execution of CPD should now be
+done with a CPDConfiguration
and a CpdAnalysis
, for instance:
CPDConfiguration config = new CPDConfiguration();
config.setMinimumTileSize(100);
@@ -2862,21 +2862,21 @@ this new programmatic API is recommended.
- Support for Java 20 preview language features have been removed. The version “20-preview” is no longer available.
- ASTPattern
, ASTRecordPattern
,
-ASTTypePattern
, ASTUnnamedPattern
+ ASTPattern
, ASTRecordPattern
,
+ASTTypePattern
, ASTUnnamedPattern
- method
getParenthesisDepth()
has been removed.
- ASTTemplateFragment
: To get the content of the template, use now
-getContent
or @Content
instead of getImage()
/@Image
.
- ASTUnnamedPattern
is not experimental anymore. The language feature
+ ASTTemplateFragment
: To get the content of the template, use now
+getContent
or @Content
instead of getImage()
/@Image
.
+ ASTUnnamedPattern
is not experimental anymore. The language feature
has been standardized with Java 22.
New API
-The API around TreeRenderer
has been declared as stable. It was previously
+
The API around TreeRenderer
has been declared as stable. It was previously
experimental. It can be used via the CLI subcommand ast-dump
or programmatically, as described
on Creating XML dump of the AST.
@@ -2898,84 +2898,84 @@ is XPath 3.1.
- pmd-core
- - Many types have been moved from the base package
net.sourceforge.pmd
into subpackage net.sourceforge.pmd.lang.rule
+ - Many types have been moved from the base package
net.sourceforge.pmd
into subpackage net.sourceforge.pmd.lang.rule
- Rule
- RulePriority
- RuleSet
+ Rule
+ RulePriority
+ RuleSet
RuleSetFactory
- RuleSetLoader
- RuleSetLoadException
- RuleSetWriter
+ RuleSetLoader
+ RuleSetLoadException
+ RuleSetWriter
- - Many types have been moved from the base package
net.sourceforge.pmd
into subpackage net.sourceforge.pmd.reporting
+ - Many types have been moved from the base package
net.sourceforge.pmd
into subpackage net.sourceforge.pmd.reporting
- XPathRule
has been moved into subpackage net.sourceforge.pmd.lang.rule.xpath
.
+ XPathRule
has been moved into subpackage net.sourceforge.pmd.lang.rule.xpath
.
- pmd-html
- net.sourceforge.pmd.lang.html.ast.HtmlCpdLexer
moved into package cpd
: HtmlCpdLexer
.
+ net.sourceforge.pmd.lang.html.ast.HtmlCpdLexer
moved into package cpd
: HtmlCpdLexer
.
- - pmd-lang-test: All types have been moved under the new base package
net.sourceforge.pmd.lang.test
:
+ - pmd-lang-test: All types have been moved under the new base package
net.sourceforge.pmd.lang.test
:
- AbstractMetricTestRule
(moved from net.sourceforge.pmd.test.AbstractMetricTestRule
)
- BaseTextComparisonTest
(moved from net.sourceforge.pmd.test.BaseTextComparisonTest
)
- CpdTextComparisonTest
(moved from net.sourceforge.pmd.cpd.test.CpdTextComparisonTest
)
- BaseTreeDumpTest
(moved from net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest
)
+ AbstractMetricTestRule
(moved from net.sourceforge.pmd.test.AbstractMetricTestRule
)
+ BaseTextComparisonTest
(moved from net.sourceforge.pmd.test.BaseTextComparisonTest
)
+ CpdTextComparisonTest
(moved from net.sourceforge.pmd.cpd.test.CpdTextComparisonTest
)
+ BaseTreeDumpTest
(moved from net.sourceforge.pmd.lang.ast.test.BaseTreeDumpTest
)
- And many other types have been moved from
net.sourceforge.pmd.lang.ast.test
to net.sourceforge.pmd.lang.test
.
- pmd-scala
- ScalaCpdLexer
(moved from net.sourceforge.pmd.lang.scala.cpd.ScalaCpdLexer
)
- ScalaTokenAdapter
(moved from net.sourceforge.pmd.lang.scala.cpd.ScalaTokenAdapter
)
+ ScalaCpdLexer
(moved from net.sourceforge.pmd.lang.scala.cpd.ScalaCpdLexer
)
+ ScalaTokenAdapter
(moved from net.sourceforge.pmd.lang.scala.cpd.ScalaTokenAdapter
)
- pmd-test
- AbstractRuleSetFactoryTest
(moved from net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest
)
- AbstractAntTestHelper
(moved from net.sourceforge.pmd.ant.AbstractAntTestHelper
)
- AbstractLanguageVersionTest
(moved from net.sourceforge.pmd.AbstractLanguageVersionTest
)
- PmdRuleTst
(moved from net.sourceforge.pmd.testframework.PmdRuleTst
)
- RuleTst
(moved from net.sourceforge.pmd.testframework.RuleTst
)
- SimpleAggregatorTst
(moved from net.sourceforge.pmd.testframework.SimpleAggregatorTst
)
+ AbstractRuleSetFactoryTest
(moved from net.sourceforge.pmd.lang.rule.AbstractRuleSetFactoryTest
)
+ AbstractAntTestHelper
(moved from net.sourceforge.pmd.ant.AbstractAntTestHelper
)
+ AbstractLanguageVersionTest
(moved from net.sourceforge.pmd.AbstractLanguageVersionTest
)
+ PmdRuleTst
(moved from net.sourceforge.pmd.testframework.PmdRuleTst
)
+ RuleTst
(moved from net.sourceforge.pmd.testframework.RuleTst
)
+ SimpleAggregatorTst
(moved from net.sourceforge.pmd.testframework.SimpleAggregatorTst
)
- pmd-xml
- PomLanguageModule
(moved from net.sourceforge.pmd.lang.pom.PomLanguageModule
)
- WsdlLanguageModule
(moved from net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule
)
- XslLanguageModule
(moved from net.sourceforge.pmd.lang.xsl.XslLanguageModule
)
+ PomLanguageModule
(moved from net.sourceforge.pmd.lang.pom.PomLanguageModule
)
+ WsdlLanguageModule
(moved from net.sourceforge.pmd.lang.wsdl.WsdlLanguageModule
)
+ XslLanguageModule
(moved from net.sourceforge.pmd.lang.xsl.XslLanguageModule
)
- pmd-visualforce
- - The package
net.sourceforge.pmd.lang.vf
has been renamed to net.sourceforge.pmd.lang.visualforce
.
+ - The package
net.sourceforge.pmd.lang.vf
has been renamed to net.sourceforge.pmd.lang.visualforce
.
- The language id of visualforce has been changed to
visualforce
(it was previously just “vf”)
- The ruleset changed:
category/vf/security.xml
➡️ category/visualforce/security.xml
- pmd-velocity (renamed from pmd-vm)
- - The package
net.sourceforge.pmd.lang.vm
has been renamed to net.sourceforge.pmd.lang.velocity
.
+ - The package
net.sourceforge.pmd.lang.vm
has been renamed to net.sourceforge.pmd.lang.velocity
.
- The language id of the Velocity module has been changed to
velocity
(it was previously just “vm”)
- The rulesets changed:
category/vm/...
➡️ category/velocity/...
- Many classes used the prefix
Vm
, e.g. VmLanguageModule
. This has been changed to be Vtl
:
@@ -3000,34 +3000,34 @@ package or made (package) private and are not accessible anymore.
net.sourceforge.pmd.cache.FileAnalysisCache
(moved to internal)
net.sourceforge.pmd.cache.NoopAnalysisCache
(moved to internal)
net.sourceforge.pmd.util.ResourceLoader
(moved to internal)
- net.sourceforge.pmd.cpd.Tokens
+ net.sourceforge.pmd.cpd.Tokens
- Constructor is now package private.
- net.sourceforge.pmd.lang.LanguageProcessor.AnalysisTask
+ net.sourceforge.pmd.lang.LanguageProcessor.AnalysisTask
- Constructor is now package private.
- Method
withFiles(java.util.List)
is now package private. Note: it was not previously marked with @InternalApi.
- net.sourceforge.pmd.lang.rule.RuleTargetSelector
+ net.sourceforge.pmd.lang.rule.RuleTargetSelector
- Method
isRuleChain()
has been removed.
- net.sourceforge.pmd.renderers.AbstractAccumulatingRenderer
+ net.sourceforge.pmd.renderers.AbstractAccumulatingRenderer
- renderFileReport
- this method is now final
+ renderFileReport
- this method is now final
and can’t be overridden anymore.
- net.sourceforge.pmd.reporting.Report
+ net.sourceforge.pmd.reporting.Report
- Constructor as well as the methods
addRuleViolation
, addConfigError
, addError
are now private.
- net.sourceforge.pmd.reporting.RuleContext
+ net.sourceforge.pmd.reporting.RuleContext
- Method
getRule()
is now package private.
- Method
create(FileAnalysisListener listener, Rule rule)
has been removed.
@@ -3043,46 +3043,46 @@ It has now been hidden completely from public API.
net.sourceforge.pmd.lang.rule.ParametricRuleViolation
is now package private and moved to net.sourceforge.pmd.reporting.ParametricRuleViolation
.
-The only public API is RuleViolation
.
- net.sourceforge.pmd.lang.rule.RuleSet
+The only public API is RuleViolation
.
+ net.sourceforge.pmd.lang.rule.RuleSet
- Method
applies(Rule,LanguageVersion)
is now package private.
- Method
applies(TextFile)
has been removed.
- Method
applies(FileId)
is now package private.
- net.sourceforge.pmd.lang.rule.RuleSetLoader
+ net.sourceforge.pmd.lang.rule.RuleSetLoader
- Method
loadRuleSetsWithoutException(java.util.List)
is now package private.
- net.sourceforge.pmd.lang.rule.RuleSetLoadException
+ net.sourceforge.pmd.lang.rule.RuleSetLoadException
- All constructors are package private now.
- net.sourceforge.pmd.lang.ast.LexException
- the constructor LexException(boolean, String, int, int, String, char)
is now package private.
+ net.sourceforge.pmd.lang.ast.LexException
- the constructor LexException(boolean, String, int, int, String, char)
is now package private.
It is only used by JavaCC-generated token managers.
- net.sourceforge.pmd.PMDConfiguration
+ net.sourceforge.pmd.PMDConfiguration
- - Method
setAnalysisCache(AnalysisCache)
is now package private. Use setAnalysisCacheLocation
instead.
+ - Method
setAnalysisCache(AnalysisCache)
is now package private. Use setAnalysisCacheLocation
instead.
- Method
getAnalysisCache()
is now package private.
- net.sourceforge.pmd.lang.document.FileCollector
+ net.sourceforge.pmd.lang.document.FileCollector
- net.sourceforge.pmd.lang.rule.xpath.Attribute
+ net.sourceforge.pmd.lang.rule.xpath.Attribute
- Method
replacementIfDeprecated()
is now package private.
net.sourceforge.pmd.properties.PropertyTypeId
- moved in subpackage internal
.
- net.sourceforge.pmd.properties.PropertyDescriptor
- method getTypeId()
is now package private.
+ net.sourceforge.pmd.properties.PropertyDescriptor
- method getTypeId()
is now package private.
- pmd-doc
@@ -3094,7 +3094,7 @@ It’s used to generate the rule documentation for the built-in rules.
- pmd-ant
- net.sourceforge.pmd.ant.Formatter
+ net.sourceforge.pmd.ant.Formatter
- Method
getRenderer()
has been removed.
- Method
start(String)
is private now.
@@ -3103,7 +3103,7 @@ It’s used to generate the rule documentation for the built-in rules.
- Method
newListener(Project)
is now package private.
- net.sourceforge.pmd.ant.PMDTask
+ net.sourceforge.pmd.ant.PMDTask
- Method
getRelativizeRoots()
has been removed.
@@ -3113,7 +3113,7 @@ It’s used to generate the rule documentation for the built-in rules.
- pmd-apex
- net.sourceforge.pmd.lang.apex.ast.ApexNode
+ net.sourceforge.pmd.lang.apex.ast.ApexNode
- Method
getNode()
has been removed. It was only deprecated before and not marked with @InternalApi.
However, it gave access to the wrapped Jorje node and was thus internal API.
@@ -3124,7 +3124,7 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
Method getNode()
is now package private.
- net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis
+ net.sourceforge.pmd.lang.apex.multifile.ApexMultifileAnalysis
- Constructor is now package private.
@@ -3137,12 +3137,12 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
net.sourceforge.pmd.lang.java.rule.AbstractIgnoredAnnotationRule
(moved to internal)
net.sourceforge.pmd.lang.java.types.ast.LazyTypeResolver
(moved to internal)
- net.sourceforge.pmd.lang.java.types.JMethodSig
+ net.sourceforge.pmd.lang.java.types.JMethodSig
- Method
internalApi()
has been removed.
- net.sourceforge.pmd.lang.java.types.TypeOps
+ net.sourceforge.pmd.lang.java.types.TypeOps
- Method
isSameTypeInInference(JTypeMirror,JTypeMirror)
is now package private.
@@ -3151,7 +3151,7 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
- pmd-jsp
- net.sourceforge.pmd.lang.jsp.ast.JspParser
+ net.sourceforge.pmd.lang.jsp.ast.JspParser
- Method
getTokenBehavior()
has been removed.
@@ -3160,8 +3160,8 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
- pmd-modelica
- net.sourceforge.pmd.lang.modelica.ast.InternalApiBridge
renamed from InternalModelicaNodeApi
.
- net.sourceforge.pmd.lang.modelica.resolver.InternalApiBridge
renamed from InternalModelicaResolverApi
.
+ net.sourceforge.pmd.lang.modelica.ast.InternalApiBridge
renamed from InternalModelicaNodeApi
.
+ net.sourceforge.pmd.lang.modelica.resolver.InternalApiBridge
renamed from InternalModelicaResolverApi
.
net.sourceforge.pmd.lang.modelica.resolver.ModelicaSymbolFacade
has been removed.
net.sourceforge.pmd.lang.modelica.resolver.ResolutionContext
(moved to internal)
net.sourceforge.pmd.lang.modelica.resolver.ResolutionState
(moved to internal). Note: it was not previously marked with @InternalApi.
@@ -3175,7 +3175,7 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
- pmd-scala
- net.sourceforge.pmd.lang.scala.ScalaLanguageModule
+ net.sourceforge.pmd.lang.scala.ScalaLanguageModule
- Method
dialectOf(LanguageVersion)
has been removed.
@@ -3191,86 +3191,86 @@ However, it gave access to the wrapped Jorje node and was thus internal API.
- pmd-core
- CpdLanguageProperties
. The field DEFAULT_SKIP_BLOCKS_PATTERN
has been removed.
- BaseAntlrNode
- method joinTokenText()
has been removed.
- Node
- many methods have been removed:
+ CpdLanguageProperties
. The field DEFAULT_SKIP_BLOCKS_PATTERN
has been removed.
+ BaseAntlrNode
- method joinTokenText()
has been removed.
+ Node
- many methods have been removed:
- getNthParent(int)
- Use ancestors
instead, e.g. node.ancestors().get(n-1)
- getFirstParentOfType(Class)
- Use ancestors
instead, e.g. node.ancestors(parentType).first()
- getParentsOfType(Class)
- Use ancestors
instead, e.g. node.ancestors(parentType).toList()
- findChildrenOfType(Class)
- Use children
instead, e.g. node.children(childType).toList()
- findDescendantsOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).toList()
- findDescendantsOfType(Class,boolean)
- Use descendants
instead, e.g. node.descendants(targetType).crossFindBoundaries(b).toList()
- getFirstChildOfType(Class)
- Use firstChild
instead
- getFirstDescendantOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).first()
- hasDescendantOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).nonEmpty()
- findChildNodesWithXPath(String)
- Use the NodeStream
API instead.
+ getNthParent(int)
- Use ancestors
instead, e.g. node.ancestors().get(n-1)
+ getFirstParentOfType(Class)
- Use ancestors
instead, e.g. node.ancestors(parentType).first()
+ getParentsOfType(Class)
- Use ancestors
instead, e.g. node.ancestors(parentType).toList()
+ findChildrenOfType(Class)
- Use children
instead, e.g. node.children(childType).toList()
+ findDescendantsOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).toList()
+ findDescendantsOfType(Class,boolean)
- Use descendants
instead, e.g. node.descendants(targetType).crossFindBoundaries(b).toList()
+ getFirstChildOfType(Class)
- Use firstChild
instead
+ getFirstDescendantOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).first()
+ hasDescendantOfType(Class)
- Use descendants
instead, e.g. node.descendants(targetType).nonEmpty()
+ findChildNodesWithXPath(String)
- Use the NodeStream
API instead.
- GenericNode
- method getNthParent(int)
has been removed. Use ancestors
instead, e.g. node.ancestors().get(n-1)
- FileCollector
- method addZipFile(java.nio.file.Path)
has been removed. Use addZipFileWithContent
instead
- TextDocument
- method readOnlyString(CharSequence,String,LanguageVersion)
has been removed.
-Use readOnlyString
instead.
- TextFile
- method dataSourceCompat(DataSource,PMDConfiguration)
has been removed.
-Use TextFile
directly, e.g. forPath
- XPathVersion
+ GenericNode
- method getNthParent(int)
has been removed. Use ancestors
instead, e.g. node.ancestors().get(n-1)
+ FileCollector
- method addZipFile(java.nio.file.Path)
has been removed. Use addZipFileWithContent
instead
+ TextDocument
- method readOnlyString(CharSequence,String,LanguageVersion)
has been removed.
+Use readOnlyString
instead.
+ TextFile
- method dataSourceCompat(DataSource,PMDConfiguration)
has been removed.
+Use TextFile
directly, e.g. forPath
+ XPathVersion
- net.sourceforge.pmd.lang.rule.AbstractDelegateRule
removed. It has been merged with RuleReference
.
- AbstractRule
- the following methods have been removed:
+ net.sourceforge.pmd.lang.rule.AbstractDelegateRule
removed. It has been merged with RuleReference
.
+ AbstractRule
- the following methods have been removed:
- deepCopyValuesTo(AbstractRule)
- use deepCopy
instead.
- addRuleChainVisit(Class)
- override buildTargetSelector
in order to register nodes for rule chain visits.
- addViolation(...)
- use addViolation
instead, e.g. via asCtx(data).addViolation(...)
.
+ deepCopyValuesTo(AbstractRule)
- use deepCopy
instead.
+ addRuleChainVisit(Class)
- override buildTargetSelector
in order to register nodes for rule chain visits.
+ addViolation(...)
- use addViolation
instead, e.g. via asCtx(data).addViolation(...)
.
Note: These methods were only marked as deprecated in javadoc.
- addViolationWithMessage(...)
- use addViolationWithMessage
instead, e.g. via
+ addViolationWithMessage(...)
- use addViolationWithMessage
instead, e.g. via
asCtx(data).addViolationWithMessage(...)
. Note: These methods were only marked as deprecated in javadoc.
- RuleReference
- the following methods have been removed:
+ RuleReference
- the following methods have been removed:
- setRuleSetReference(RuleSetReference)
- without replacement. Just construct new RuleReference
instead.
- hasOverriddenProperty(PropertyDescriptor)
- use isPropertyOverridden
instead.
+ setRuleSetReference(RuleSetReference)
- without replacement. Just construct new RuleReference
instead.
+ hasOverriddenProperty(PropertyDescriptor)
- use isPropertyOverridden
instead.
- XPathRule
+ XPathRule
- The constant
XPATH_DESCRIPTOR
has been made private and is not accessible anymore.
- The default constructor has been made package-private and is not accessible anymore.
- Language
- method getTerseName()
removed. Use getId
instead.
- LanguageModuleBase
- method getTerseName()
removed. Use getId
instead.
- LanguageRegistry
- the following methods have been removed:
+ Language
- method getTerseName()
removed. Use getId
instead.
+ LanguageModuleBase
- method getTerseName()
removed. Use getId
instead.
+ LanguageRegistry
- the following methods have been removed:
- getLanguage(String)
- use getLanguageByFullName
-via PMD
or CPD
instead.
- findLanguageByTerseName(String)
- use getLanguageById
-via PMD
or CPD
instead.
+ getLanguage(String)
- use getLanguageByFullName
+via PMD
or CPD
instead.
+ findLanguageByTerseName(String)
- use getLanguageById
+via PMD
or CPD
instead.
findByExtension(String)
- removed without replacement.
- LanguageVersionDiscoverer
- method getLanguagesForFile(java.io.File)
removed.
-Use getLanguagesForFile
instead.
- AbstractPropertySource
+ LanguageVersionDiscoverer
- method getLanguagesForFile(java.io.File)
removed.
+Use getLanguagesForFile
instead.
+ AbstractPropertySource
- field
propertyDescriptors
has been made private and is not accessible anymore.
-Use getPropertyDescriptors
instead.
+Use getPropertyDescriptors
instead.
- field
propertyValuesByDescriptor
has been made private and is not accessible anymore.
-Use getPropertiesByPropertyDescriptor
-or getOverriddenPropertiesByPropertyDescriptor
instead.
- - method
copyPropertyDescriptors()
has been removed. Use getPropertyDescriptors
instead.
- - method
copyPropertyValues()
has been removed. Use getPropertiesByPropertyDescriptor
-or getOverriddenPropertiesByPropertyDescriptor
instead.
+Use getPropertiesByPropertyDescriptor
+or getOverriddenPropertiesByPropertyDescriptor
instead.
+ - method
copyPropertyDescriptors()
has been removed. Use getPropertyDescriptors
instead.
+ - method
copyPropertyValues()
has been removed. Use getPropertiesByPropertyDescriptor
+or getOverriddenPropertiesByPropertyDescriptor
instead.
- Reportable
- the following methods have been removed. Use getReportLocation
instead
+ Reportable
- the following methods have been removed. Use getReportLocation
instead
getBeginLine()
getBeginColumn()
@@ -3278,50 +3278,50 @@ or getEndColumn()
-
net.sourceforge.pmd.util.datasource.DataSource
- use TextFile
instead.
+ net.sourceforge.pmd.util.datasource.DataSource
- use TextFile
instead.
net.sourceforge.pmd.util.datasource.FileDataSource
net.sourceforge.pmd.util.datasource.ReaderDataSource
net.sourceforge.pmd.util.datasource.ZipDataSource
- CollectionUtil
+ CollectionUtil
- method
invertedMapFrom(...)
has been removed.
- method
mapFrom(...)
has been removed.
- AbstractConfiguration
- the following methods have been removed:
+ AbstractConfiguration
- the following methods have been removed:
- setIgnoreFilePath(String)
- use setIgnoreFilePath
instead.
- setInputFilePath(String)
- use setInputFilePath
instead.
- setInputPaths(String)
- use setInputPathList
or
-addInputPath
instead.
- setInputUri(String)
- use setInputUri
instead.
+ setIgnoreFilePath(String)
- use setIgnoreFilePath
instead.
+ setInputFilePath(String)
- use setInputFilePath
instead.
+ setInputPaths(String)
- use setInputPathList
or
+addInputPath
instead.
+ setInputUri(String)
- use setInputUri
instead.
- PMDConfiguration
- the following methods have been removed
+ PMDConfiguration
- the following methods have been removed
- prependClasspath(String)
- use prependAuxClasspath
instead.
- getRuleSets()
- use getRuleSetPaths
instead.
- setRuleSets(String)
- use setRuleSets
or
-addRuleSet
instead.
- setReportFile(String)
- use setReportFile
instead.
- getReportFile()
- use getReportFilePath
instead.
+ prependClasspath(String)
- use prependAuxClasspath
instead.
+ getRuleSets()
- use getRuleSetPaths
instead.
+ setRuleSets(String)
- use setRuleSets
or
+addRuleSet
instead.
+ setReportFile(String)
- use setReportFile
instead.
+ getReportFile()
- use getReportFilePath
instead.
- Report
- method merge(Report)
has been removed. Use union
instead.
- RuleSetLoader
- method toFactory()
has been made package private and is not accessible anymore.
- RuleViolation
- the following methods have been removed:
+ Report
- method merge(Report)
has been removed. Use union
instead.
+ RuleSetLoader
- method toFactory()
has been made package private and is not accessible anymore.
+ RuleViolation
- the following methods have been removed:
- getPackageName()
- use getAdditionalInfo
with PACKAGE_NAME
instead, e.g. getAdditionalInfo().get(PACKAGE_NAME)
.
- getClassName()
- use getAdditionalInfo
with CLASS_NAME
instead, e.g. getAdditionalInfo().get(CLASS_NAME)
.
- getMethodName()
- use getAdditionalInfo
with METHOD_NAME
instead, e.g. getAdditionalInfo().get(METHOD_NAME)
.
- getVariableName()
- use getAdditionalInfo
with VARIABLE_NAME
instead, e.g. getAdditionalInfo().get(VARIABLE_NAME)
.
+ getPackageName()
- use getAdditionalInfo
with PACKAGE_NAME
instead, e.g. getAdditionalInfo().get(PACKAGE_NAME)
.
+ getClassName()
- use getAdditionalInfo
with CLASS_NAME
instead, e.g. getAdditionalInfo().get(CLASS_NAME)
.
+ getMethodName()
- use getAdditionalInfo
with METHOD_NAME
instead, e.g. getAdditionalInfo().get(METHOD_NAME)
.
+ getVariableName()
- use getAdditionalInfo
with VARIABLE_NAME
instead, e.g. getAdditionalInfo().get(VARIABLE_NAME)
.
- pmd-apex
- ApexNode
and ASTApexFile
+ ApexNode
and ASTApexFile
-
#getApexVersion()
: In PMD 6, this method has been deprecated but was defined in the class ApexRootNode
.
@@ -3334,168 +3334,168 @@ is the version that has been selected via CLI ApexNode
+ ApexNode
- method
jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+Use acceptVisitor
instead.
- method
getNode()
has been removed. The underlying node is only available in AST nodes, but not in rule implementations.
- AbstractApexNode
- method getNode()
is now package private.
+ AbstractApexNode
- method getNode()
is now package private.
AST nodes still have access to the underlying Jorje node via the protected property node
.
net.sourceforge.pmd.lang.apex.ast.ApexParserVisitor
-Use ApexVisitor
or ApexVisitorBase
instead.
+Use ApexVisitor
or ApexVisitorBase
instead.
net.sourceforge.pmd.lang.apex.ast.ApexParserVisitorAdapter
- ASTAssignmentExpression
- method getOperator()
removed.
-Use getOp
instead.
- ASTBinaryExpression
- method getOperator()
removed.
-Use getOp
instead.
- ASTBooleanExpression
- method getOperator()
removed.
-Use getOp
instead.
- ASTPostfixExpression
- method getOperator()
removed.
-Use getOp
instead.
- ASTPrefixExpression
- method getOperator()
removed.
-Use getOp
instead.
+ ASTAssignmentExpression
- method getOperator()
removed.
+Use getOp
instead.
+ ASTBinaryExpression
- method getOperator()
removed.
+Use getOp
instead.
+ ASTBooleanExpression
- method getOperator()
removed.
+Use getOp
instead.
+ ASTPostfixExpression
- method getOperator()
removed.
+Use getOp
instead.
+ ASTPrefixExpression
- method getOperator()
removed.
+Use getOp
instead.
net.sourceforge.pmd.lang.apex.rule.security.Helper
removed. This was actually internal API.
- pmd-java
- AbstractPackageNameModuleDirective
- method getImage()
has been removed.
-Use getPackageName
instead.
+ AbstractPackageNameModuleDirective
- method getImage()
has been removed.
+Use getPackageName
instead.
AbstractTypeDeclaration
- method getImage()
has been removed.
Use getSimpleName()
instead.
- ASTAnnotation
- method getAnnotationName()
has been removed.
- ASTClassType
+ ASTAnnotation
- method getAnnotationName()
has been removed.
+ ASTClassType
- constructor
ASTClassType(java.lang.String)
has been removed.
- method
getImage()
has been removed.
- method
isReferenceToClassSameCompilationUnit()
has been removed.
- ASTFieldDeclaration
- method getVariableName()
has been removed.
- ASTLiteral
- the following methods have been removed:
+ ASTFieldDeclaration
- method getVariableName()
has been removed.
+ ASTLiteral
- the following methods have been removed:
isStringLiteral()
- use node instanceof ASTStringLiteral
instead.
isCharLiteral()
- use node instanceof ASTCharLiteral
instead.
isNullLiteral()
- use node instanceof ASTNullLiteral
instead.
isBooleanLiteral()
- use node instanceof ASTBooleanLiteral
instead.
isNumericLiteral()
- use node instanceof ASTNumericLiteral
instead.
- isIntLiteral()
- use isIntLiteral
instead.
- isLongLiteral()
- use isLongLiteral
instead.
- isFloatLiteral()
- use isFloatLiteral
instead.
- isDoubleLiteral()
- use isDoubleLiteral
instead.
+ isIntLiteral()
- use isIntLiteral
instead.
+ isLongLiteral()
- use isLongLiteral
instead.
+ isFloatLiteral()
- use isFloatLiteral
instead.
+ isDoubleLiteral()
- use isDoubleLiteral
instead.
- ASTMethodDeclaration
- methods getImage()
and getMethodName()
have been removed.
-Use getName
instead.
- ASTMethodReference
- method getImage()
has been removed.
- ASTModuleName
- method getImage()
has been removed.
- ASTPrimitiveType
- method getImage()
has been removed.
- ASTType
+ ASTMethodDeclaration
- methods getImage()
and getMethodName()
have been removed.
+Use getName
instead.
+ ASTMethodReference
- method getImage()
has been removed.
+ ASTModuleName
- method getImage()
has been removed.
+ ASTPrimitiveType
- method getImage()
has been removed.
+ ASTType
getTypeImage()
has been removed.
- getArrayDepth()
has been removed. It’s only available for arrays: getArrayDepth
.
+ getArrayDepth()
has been removed. It’s only available for arrays: getArrayDepth
.
isPrimitiveType()
- use node instanceof ASTPrimitiveType
instead.
isArrayType()
- use node instanceof ASTArrayType
instead.
isClassOrInterfaceType()
- use node instanceof ASTClassType
instead.
- ASTTypeDeclaration
- method getImage()
has been removed.
- ASTUnaryExpression
- method isPrefix()
has been removed.
-Use getOperator
.isPrefix()
instead.
- ASTVariableId
- methods getImage()
and getVariableName()
have been removed.
-Use getName
instead.
- JavaComment
- method getImage()
has been removed.
-Use getText
instead.
- JavaNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ ASTTypeDeclaration
- method getImage()
has been removed.
+ ASTUnaryExpression
- method isPrefix()
has been removed.
+Use getOperator
.isPrefix()
instead.
+ ASTVariableId
- methods getImage()
and getVariableName()
have been removed.
+Use getName
instead.
+ JavaComment
- method getImage()
has been removed.
+Use getText
instead.
+ JavaNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
net.sourceforge.pmd.lang.java.ast.JavaParserVisitor
-Use JavaVisitor
or JavaVisitorBase
instead.
+Use JavaVisitor
or JavaVisitorBase
instead.
net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter
- ModifierOwner
+ ModifierOwner
- isFinal()
- This is still available in various subtypes, where it makes sense, e.g. isFinal
.
- isAbstract()
- This is still available in subtypes, e.g. isAbstract
.
- isStrictfp()
- Use hasModifiers
instead, e.g. hasModifiers(STRICTFP)
.
- isSynchronized()
- Use hasModifiers
instead, e.g. hasModifiers(SYNCHRONIZED)
.
- isNative()
- Use hasModifiers
instead, e.g. hasModifiers(NATIVE)
.
- isStatic()
- This is still available in subtypes, e.g. isStatic
.
- isVolatile()
- Use hasModifiers
instead, e.g. hasModifiers(VOLATILE)
.
- isTransient()
- Use hasModifiers
instead, e.g. hasModifiers(TRANSIENT)
.
- isPrivate()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PRIVATE
.
- isPublic()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PUBLIC
.
- isProtected()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PROTECTED
.
- isPackagePrivate()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PACKAGE
.
- isSyntacticallyAbstract()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(ABSTRACT)
.
- isSyntacticallyPublic()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(PUBLIC)
.
- isSyntacticallyStatic()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(STATIC)
.
- isSyntacticallyFinal()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(FINAL)
.
+ isFinal()
- This is still available in various subtypes, where it makes sense, e.g. isFinal
.
+ isAbstract()
- This is still available in subtypes, e.g. isAbstract
.
+ isStrictfp()
- Use hasModifiers
instead, e.g. hasModifiers(STRICTFP)
.
+ isSynchronized()
- Use hasModifiers
instead, e.g. hasModifiers(SYNCHRONIZED)
.
+ isNative()
- Use hasModifiers
instead, e.g. hasModifiers(NATIVE)
.
+ isStatic()
- This is still available in subtypes, e.g. isStatic
.
+ isVolatile()
- Use hasModifiers
instead, e.g. hasModifiers(VOLATILE)
.
+ isTransient()
- Use hasModifiers
instead, e.g. hasModifiers(TRANSIENT)
.
+ isPrivate()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PRIVATE
.
+ isPublic()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PUBLIC
.
+ isProtected()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PROTECTED
.
+ isPackagePrivate()
- Use getVisibility
instead, e.g. getVisibility() == Visibility.V_PACKAGE
.
+ isSyntacticallyAbstract()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(ABSTRACT)
.
+ isSyntacticallyPublic()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(PUBLIC)
.
+ isSyntacticallyStatic()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(STATIC)
.
+ isSyntacticallyFinal()
- Use hasExplicitModifiers
instead, e.g. hasExplicitModifiers(FINAL)
.
- TypeNode
- method getType()
has been removed. Use getTypeMirror
instead.
+ TypeNode
- method getType()
has been removed. Use getTypeMirror
instead.
- pmd-javascript
- AbstractEcmascriptNode
- method getNode()
has been removed.
+ AbstractEcmascriptNode
- method getNode()
has been removed.
AST nodes still have access to the underlying Rhino node via the protected property node
.
- ASTFunctionNode
- method getBody(int)
removed.
-Use getBody
instead.
- ASTTryStatement
+ ASTFunctionNode
- method getBody(int)
removed.
+Use getBody
instead.
+ ASTTryStatement
- - method
isCatch()
has been removed. Use hasCatch
instead.
- - method
isFinally()
has been removed. Use hasFinally
instead.
+ - method
isCatch()
has been removed. Use hasCatch
instead.
+ - method
isFinally()
has been removed. Use hasFinally
instead.
- EcmascriptNode
+ EcmascriptNode
- - method
jjtAccept()
has been removed. Use acceptVisitor
instead.
+ - method
jjtAccept()
has been removed. Use acceptVisitor
instead.
- method
getNode()
has been removed. The underlying node is only available in AST nodes, but not in rule implementations.
net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor
-Use EcmascriptVisitor
or EcmascriptVisitorBase
instead.
+Use EcmascriptVisitor
or EcmascriptVisitorBase
instead.
net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitorAdapter
- pmd-jsp
net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor
-Use JspVisitor
or JspVisitorBase
instead.
+Use JspVisitor
or JspVisitorBase
instead.
net.sourceforge.pmd.lang.jsp.ast.JspParserVisitorAdapter
- JspNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ JspNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
- pmd-modelica
net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitor
-Use ModelicaVisitor
or ModelicaVisitorBase
instead.
+Use ModelicaVisitor
or ModelicaVisitorBase
instead.
net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitorAdapter
- ModelicaNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ ModelicaNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
net.sourceforge.pmd.lang.modelica.rule.AmbiguousResolutionRule
-Use AmbiguousResolutionRule
instead.
+Use AmbiguousResolutionRule
instead.
net.sourceforge.pmd.lang.modelica.rule.ConnectUsingNonConnector
-Use ConnectUsingNonConnectorRule
+Use ConnectUsingNonConnectorRule
- pmd-plsql
net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitor
-Use PlsqlVisitor
or PlsqlVisitorBase
instead.
+Use PlsqlVisitor
or PlsqlVisitorBase
instead.
net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter
- PLSQLNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ PLSQLNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
- pmd-scala
- The maven module
pmd-scala
has been removed. Use pmd-scala_2.13
or pmd-scala_2.12
instead.
- ScalaNode
+ ScalaNode
- - Method
accept()
has been removed. Use acceptVisitor
instead.
+ - Method
accept()
has been removed. Use acceptVisitor
instead.
- Method
getNode()
has been removed. The underlying node is only available in AST nodes, but not in rule implementations.
@@ -3505,21 +3505,21 @@ to the underlying Scala node via the protected property VfNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ VfNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
net.sourceforge.pmd.lang.vf.ast.VfParserVisitor
-Use VfVisitor
or VfVisitorBase
instead.
+Use VfVisitor
or VfVisitorBase
instead.
net.sourceforge.pmd.lang.vf.ast.VfParserVisitorAdapter
- DataType
- method fromBasicType(BasicType)
has been removed.
-Use fromTypeName
instead.
+ DataType
- method fromBasicType(BasicType)
has been removed.
+Use fromTypeName
instead.
- pmd-velocity (previously pmd-vm)
- VtlNode
- method jjtAccept()
has been removed.
-Use acceptVisitor
instead.
+ VtlNode
- method jjtAccept()
has been removed.
+Use acceptVisitor
instead.
net.sourceforge.pmd.lang.vm.ast.VmParserVisitor
-Use VtlVisitor
or VtlVisitorBase
instead.
+Use VtlVisitor
or VtlVisitorBase
instead.
net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter
@@ -3530,17 +3530,17 @@ Use isSynthetic() in ASTMethod
has been removed.
+ - The method
isSynthetic()
in ASTMethod
has been removed.
With the switch from Jorje to Summit AST as underlying parser, no synthetic methods are generated by the
parser anymore. This also means, that there is no XPath attribute @Synthetic
anymore.
- - The constant
STATIC_INITIALIZER_METHOD_NAME
in FieldDeclarationsShouldBeAtStartRule
+ - The constant
STATIC_INITIALIZER_METHOD_NAME
in FieldDeclarationsShouldBeAtStartRule
has been removed. It was used to filter out synthetic methods, but these are not generated anymore with the
new parser.
- - The method
getContext()
in ASTReferenceExpression
has been removed.
+ - The method
getContext()
in ASTReferenceExpression
has been removed.
It was not used and always returned null
.
- - The method
getNamespace()
in all AST nodes (defined in ApexNode
) has
+ - The method
getNamespace()
in all AST nodes (defined in ApexNode
) has
been removed, as it was never fully implemented. It always returned an empty string.
- - The method
getNameSpace()
in ApexQualifiedName
has been removed.
+ - The method
getNameSpace()
in ApexQualifiedName
has been removed.
- The class
net.sourceforge.pmd.lang.apex.ast.ASTBridgeMethodCreator
has been removed. This was a node that has
been generated by the old Jorje parser only.
@@ -3560,10 +3560,10 @@ been generated by the old Jorje parser only.
- The interface
FinalizableNode
(introduced in 7.0.0-rc1) has been removed.
Its method isFinal()
has been moved down to the
-nodes where needed, e.g. ASTLocalVariableDeclaration#isFinal
.
- - The method
isPackagePrivate()
in ASTClassDeclaration
(formerly ASTClassOrInterfaceDeclaration)
+nodes where needed, e.g. ASTLocalVariableDeclaration#isFinal
.
+ - The method
isPackagePrivate()
in ASTClassDeclaration
(formerly ASTClassOrInterfaceDeclaration)
has been removed.
-Use hasVisibility
instead,
+Use hasVisibility
instead,
which can correctly differentiate between local and package private classes.
@@ -3574,40 +3574,40 @@ which can correctly differentiate between local and package private classes.
- pmd-core
- MessageReporter
has been renamed to PmdReporter
- TokenMgrError
has been renamed to LexException
- Tokenizer
has been renamed to CpdLexer
. Along with this rename,
+ MessageReporter
has been renamed to PmdReporter
+ TokenMgrError
has been renamed to LexException
+ Tokenizer
has been renamed to CpdLexer
. Along with this rename,
all the implementations have been renamed as well (Tokenizer
-> CpdLexer
), e.g. “CppCpdLexer”, “JavaCpdLexer”.
This affects all language modules.
- AnyTokenizer
has been renamed to AnyCpdLexer
.
+ AnyTokenizer
has been renamed to AnyCpdLexer
.
- pmd-java
- - The interface
AccessNode
has been renamed to ModifierOwner
. This is only relevant
+ - The interface
AccessNode
has been renamed to ModifierOwner
. This is only relevant
for Java rules, which use that type directly e.g. through downcasting.
Or when using the XPath function pmd-java:nodeIs()
.
- - The node
ASTClassOrInterfaceType
has been renamed to ASTClassType
. XPath rules
+ - The node
ASTClassOrInterfaceType
has been renamed to ASTClassType
. XPath rules
need to be adjusted.
- - The node
ASTClassOrInterfaceDeclaration
has been renamed to ASTClassDeclaration
.
+ - The node
ASTClassOrInterfaceDeclaration
has been renamed to ASTClassDeclaration
.
XPath rules need to be adjusted.
- - The interface
ASTAnyTypeDeclaration
has been renamed to ASTTypeDeclaration
.
+ - The interface
ASTAnyTypeDeclaration
has been renamed to ASTTypeDeclaration
.
This is only relevant for Java rules, which use that type directly, e.g. through downcasting.
Or when using the XPath function pmd-java:nodeIs()
.
- The interface
ASTMethodOrConstructorDeclaration
has been renamed to
-ASTExecutableDeclaration
. This is only relevant for Java rules, which use that type
+ASTExecutableDeclaration
. This is only relevant for Java rules, which use that type
directly, e.g. through downcasting. Or when using the XPath function pmd-java:nodeIs()
.
- - The node
ASTVariableDeclaratorId
has been renamed to ASTVariableId
. XPath rules
+ - The node
ASTVariableDeclaratorId
has been renamed to ASTVariableId
. XPath rules
need to be adjusted.
- - The node
ASTClassOrInterfaceBody
has been renamed to ASTClassBody
. XPath rules
+ - The node
ASTClassOrInterfaceBody
has been renamed to ASTClassBody
. XPath rules
need to be adjusted.
- pmd-scala
- - The interface
ScalaParserVisitor
has been renamed to ScalaVisitor
in order
+ - The interface
ScalaParserVisitor
has been renamed to ScalaVisitor
in order
to align the naming scheme for the different language modules.
- - The class
ScalaParserVisitorAdapter
has been renamed to ScalaVisitorBase
in order
+ - The class
ScalaParserVisitorAdapter
has been renamed to ScalaVisitorBase
in order
to align the naming scheme for the different language modules.
@@ -3620,69 +3620,69 @@ to align the naming scheme for the different language modules.
- pmd-apex
- pmd-core
- CPDReport#filterMatches
- AntlrToken#getKind
- AbstractJjtreeNode
- TokenDocument
- AstInfo#getSuppressionComments
- AstInfo#withSuppressMap
- GenericToken#getKind
- FileCollector#addZipFileWithContent
- net.sourceforge.pmd.lang.document
- LanguageVersionHandler#getLanguageMetricsProvider
- LanguageVersionHandler#getDesignerBindings
- PlainTextLanguage
- PropertyConstraint#getXmlConstraint
- PropertyConstraint#toOptionalConstraint
- PropertyConstraint#fromPredicate
- PropertyConstraint#fromPredicate
- AbstractRenderer#setReportFile
- Renderer#setReportFile
- DesignerBindings
- DesignerBindings.TreeIconId
- RelatedNodesSelector
- Report#filterViolations
- Report#union
+ CPDReport#filterMatches
+ AntlrToken#getKind
+ AbstractJjtreeNode
+ TokenDocument
+ AstInfo#getSuppressionComments
+ AstInfo#withSuppressMap
+ GenericToken#getKind
+ FileCollector#addZipFileWithContent
+ net.sourceforge.pmd.lang.document
+ LanguageVersionHandler#getLanguageMetricsProvider
+ LanguageVersionHandler#getDesignerBindings
+ PlainTextLanguage
+ PropertyConstraint#getXmlConstraint
+ PropertyConstraint#toOptionalConstraint
+ PropertyConstraint#fromPredicate
+ PropertyConstraint#fromPredicate
+ AbstractRenderer#setReportFile
+ Renderer#setReportFile
+ DesignerBindings
+ DesignerBindings.TreeIconId
+ RelatedNodesSelector
+ Report#filterViolations
+ Report#union
- pmd-groovy
- pmd-html
- pmd-java
- ASTExpression#getConversionContext
- AbstractJavaRulechainRule#<init>
- JSymbolTable
- JElementSymbol
- net.sourceforge.pmd.lang.java.symbols
- ExprContext
- JIntersectionType#getInducedClassType
- JTypeMirror#streamMethods
- JTypeMirror#streamDeclaredMethods
- JTypeMirror#getConstructors
+ ASTExpression#getConversionContext
+ AbstractJavaRulechainRule#<init>
+ JSymbolTable
+ JElementSymbol
+ net.sourceforge.pmd.lang.java.symbols
+ ExprContext
+ JIntersectionType#getInducedClassType
+ JTypeMirror#streamMethods
+ JTypeMirror#streamDeclaredMethods
+ JTypeMirror#getConstructors
- pmd-kotlin
- pmd-test-schema
@@ -3693,12 +3693,12 @@ to align the naming scheme for the different language modules.
- The CLI parameter
--no-ruleset-compatibility
has been removed. It was only used to allow loading
some rulesets originally written for PMD 5 also in PMD 6 without fixing the rulesets.
- The class
RuleSetFactoryCompatibility
has been removed without replacement.
-The different ways to enable/disable this filter in PMDConfiguration
+The different ways to enable/disable this filter in PMDConfiguration
(Property “RuleSetFactoryCompatibilityEnabled”) and
-PMDTask
(Property “noRuleSetCompatibility”) have been removed as well.
- textcolor
renderer (TextColorRenderer
) now renders always in color.
+PMDTask
(Property “noRuleSetCompatibility”) have been removed as well.
+ textcolor
renderer (TextColorRenderer
) now renders always in color.
The property color
has been removed. The possibility to override this with the system property pmd.color
-has been removed as well. If you don’t want colors, use text
renderer (TextRenderer
).
+has been removed as well. If you don’t want colors, use text
renderer (TextRenderer
).
7.0.0-rc4
@@ -3713,7 +3713,7 @@ has been removed as well. If you don’t want colors, use IntProperty
and StringProperty
have been removed. Please use
-PropertyFactory
to create properties.
+PropertyFactory
to create properties.
- All properties which accept multiple values now use a comma (
,
) as a delimiter. The previous default was a
pipe character (|
). The delimiter is not configurable anymore. If needed, the comma can be escaped
with a backslash.
@@ -3733,9 +3733,9 @@ and PR #4397 for details.
- pmd-core
- net.sourceforge.pmd.cpd.AbstractTokenizer
➡️ use AnyCpdLexer
instead (previously known as AnyTokenizer)
- net.sourceforge.pmd.cpd.CPD
➡️ use PmdCli
from pmd-cli
module for CLI support or use
-CpdAnalysis
for programmatic API
+ net.sourceforge.pmd.cpd.AbstractTokenizer
➡️ use AnyCpdLexer
instead (previously known as AnyTokenizer)
+ net.sourceforge.pmd.cpd.CPD
➡️ use PmdCli
from pmd-cli
module for CLI support or use
+CpdAnalysis
for programmatic API
net.sourceforge.pmd.cpd.GridBagHelper
(now package private)
net.sourceforge.pmd.cpd.TokenEntry.State
net.sourceforge.pmd.lang.document.CpdCompat
@@ -3799,35 +3799,35 @@ uiOrder, compareTo, isDefinedExternally, valueFrom, asDelimitedString
- pmd-core
- CPDConfiguration
+ CPDConfiguration
#sourceCodeFor(File)
, #postConstruct()
, #tokenizer()
, #filenameFilter()
removed
- Mark
+ Mark
#getSourceSlice()
, #setLineCount(int)
, #getLineCount()
, #setSourceCode(SourceCode)
removed
#getBeginColumn()
, #getBeginLine()
, #getEndLine()
, #getEndColumn()
removed
-➡️ use getLocation
instead
+➡️ use getLocation
instead
- Match
+ Match
#LABEL_COMPARATOR
removed
#setMarkSet(...)
, #setLabel(...)
, #getLabel()
, #addTokenEntry(...)
removed
#getSourceCodeSlice()
removed
-➡️ use CPDReport#getSourceCodeSlice
instead
+➡️ use CPDReport#getSourceCodeSlice
instead
- TokenEntry
+ TokenEntry
- Parser.ParserTask
+ Parser.ParserTask
@@ -3857,21 +3857,21 @@ uiOrder, compareTo, isDefinedExternally, valueFrom, asDelimitedString
- pmd-core
- NumericConstraints
(old package: net.sourceforge.pmd.properties.constraints.NumericConstraints
)
- PropertyConstraint
(old package: net.sourceforge.pmd.properties.constraints.PropertyConstraint
)
+ NumericConstraints
(old package: net.sourceforge.pmd.properties.constraints.NumericConstraints
)
+ PropertyConstraint
(old package: net.sourceforge.pmd.properties.constraints.PropertyConstraint
)
- not experimental anymore
- ReportException
(old package: net.sourceforge.pmd.cpd
, moved to module pmd-ant
)
+ ReportException
(old package: net.sourceforge.pmd.cpd
, moved to module pmd-ant
)
- it is now a RuntimeException
- CPDReportRenderer
(old package: net.sourceforge.pmd.cpd.renderer
)
- AntlrTokenFilter
(old package: net.sourceforge.pmd.cpd.token
)
- BaseTokenFilter
(old package: net.sourceforge.pmd.cpd.token.internal
)
- JavaCCTokenFilter
(old package: net.sourceforge.pmd.cpd.token
)
+ CPDReportRenderer
(old package: net.sourceforge.pmd.cpd.renderer
)
+ AntlrTokenFilter
(old package: net.sourceforge.pmd.cpd.token
)
+ BaseTokenFilter
(old package: net.sourceforge.pmd.cpd.token.internal
)
+ JavaCCTokenFilter
(old package: net.sourceforge.pmd.cpd.token
)
@@ -3881,49 +3881,49 @@ uiOrder, compareTo, isDefinedExternally, valueFrom, asDelimitedString
- pmd-core
- PropertyDescriptor
is now a class (was an interface)
+ PropertyDescriptor
is now a class (was an interface)
and it is not comparable anymore.
- AbstractConfiguration#setSourceEncoding
+ AbstractConfiguration#setSourceEncoding
- previously this method took a simple String for the encoding.
- PMDConfiguration
and CPDConfiguration
+ PMDConfiguration
and CPDConfiguration
- - many getters and setters have been moved to the parent class
AbstractConfiguration
+ - many getters and setters have been moved to the parent class
AbstractConfiguration
- CPDListener#addedFile
+ CPDListener#addedFile
- no
File
parameter anymore
- CPDReport#getNumberOfTokensPerFile
returns a Map
of FileId,Integer
instead of String
- CPDReport#filterMatches
now takes a java.util.function.Predicate
+ CPDReport#getNumberOfTokensPerFile
returns a Map
of FileId,Integer
instead of String
+ CPDReport#filterMatches
now takes a java.util.function.Predicate
as parameter
- CpdLexer
+ CpdLexer
- Note: CpdLexer was previously named Tokenizer.
- - constants are now
PropertyDescriptor
instead of String
,
+ - constants are now
PropertyDescriptor
instead of String
,
to be used as language properties
- tokenize
-changed parameters. Now takes a TextDocument
and a TokenFactory
+ tokenize
+changed parameters. Now takes a TextDocument
and a TokenFactory
(instead of SourceCode
and Tokens
).
- Language
+ Language
- - method
#createProcessor(LanguagePropertyBundle)
moved to PmdCapableLanguage
+ - method
#createProcessor(LanguagePropertyBundle)
moved to PmdCapableLanguage
- StringUtil#linesWithTrimIndent
now takes a Chars
+ StringUtil#linesWithTrimIndent
now takes a Chars
instead of a String
.
- All language modules (like pmd-apex, pmd-cpp, …)
- consistent package naming:
net.sourceforge.pmd.lang.<langId>.cpd
- - adapted to use
CpdCapableLanguage
+ - adapted to use
CpdCapableLanguage
- consistent static method
#getInstance()
- removed constants like
ID
, TERSE_NAME
or NAME
. Use getInstance().getName()
etc. instead
@@ -3940,7 +3940,7 @@ instead of a String
.
-
-
Language#getTerseName
➡️ use getId
instead
+ Language#getTerseName
➡️ use getId
instead
-
The method ASTPattern#getParenthesisDepth
has been deprecated and will be removed.
@@ -3955,17 +3955,17 @@ parsing code as java-19-preview.
- To support the Java preview language features “String Templates” and “Unnamed Patterns and Variables”, the following
AST nodes have been introduced as experimental:
- The AST nodes for supporting “Record Patterns” and “Pattern Matching for switch” are not experimental anymore:
- ASTRecordPattern
- ASTPatternList
(Note: it was renamed from ASTComponentPatternList
)
- ASTGuard
(Note: it was renamed from ASTSwitchGuard
)
+ ASTRecordPattern
+ ASTPatternList
(Note: it was renamed from ASTComponentPatternList
)
+ ASTGuard
(Note: it was renamed from ASTSwitchGuard
)
@@ -3998,13 +3998,13 @@ integer values (1 to 5) are supported as well.
-
-
Replaced RuleViolation::getFilename
with new RuleViolation#getFileId
, that returns a
-FileId
. This is an identifier for a TextFile
+
Replaced RuleViolation::getFilename
with new RuleViolation#getFileId
, that returns a
+FileId
. This is an identifier for a TextFile
and could represent a path name. This allows to have a separate display name, e.g. renderers use
-FileNameRenderer
to either display the full path name or a relative path name
-(see Renderer#setFileNameRenderer
and
-ConfigurableFileNameRenderer
). Many places where we used a simple String for
-a path-like name before have been adapted to use the new FileId
.
+FileNameRenderer
to either display the full path name or a relative path name
+(see Renderer#setFileNameRenderer
and
+ConfigurableFileNameRenderer
). Many places where we used a simple String for
+a path-like name before have been adapted to use the new FileId
.
See PR #4425 for details.
@@ -4087,8 +4087,8 @@ actually is used. Therefore, this method can’t be used to determine the Apex v
that is being analyzed.
CPDConfiguration#setEncoding
and
CPDConfiguration#getEncoding
. Use the methods
-getSourceEncoding
and
-setSourceEncoding
instead. Both are available
+getSourceEncoding
and
+setSourceEncoding
instead. Both are available
for CPDConfiguration
which extends AbstractConfiguration
.
BaseCLITest
and BaseCPDCLITest
have been deprecated for removal without
replacement. CLI tests should be done in pmd-core only (and in PMD7 in pmd-cli). Individual language modules
@@ -4099,12 +4099,12 @@ functionality as unit tests.
-
FileCollector#addZipFile
has been deprecated. It is replaced
-by FileCollector#addZipFileWithContent
which directly adds the
+by FileCollector#addZipFileWithContent
which directly adds the
content of the zip file for analysis.
PMDConfiguration#setReportShortNames
and
PMDConfiguration#isReportShortNames
have been deprecated for removal.
-Use AbstractConfiguration#addRelativizeRoot
instead.
+Use AbstractConfiguration#addRelativizeRoot
instead.
Internal APIs
@@ -4182,18 +4182,18 @@ PMD 7 will remove support for
- The following core APIs have been marked as deprecated for removal in PMD 7:
- PMD
and PMD.StatusCode
- PMD 7 will ship with a revamped CLI split from pmd-core. To programmatically launch analysis you can use PmdAnalysis
.
- PMDConfiguration#getAllInputPaths
- It is now superseded by PMDConfiguration#getInputPathList
- PMDConfiguration#setInputPaths
- It is now superseded by PMDConfiguration#setInputPathList
- PMDConfiguration#addInputPath
- It is now superseded by PMDConfiguration#addInputPath
- PMDConfiguration#getInputFilePath
- It is now superseded by PMDConfiguration#getInputFile
- PMDConfiguration#getIgnoreFilePath
- It is now superseded by PMDConfiguration#getIgnoreFile
- PMDConfiguration#setInputFilePath
- It is now superseded by PMDConfiguration#setInputFilePath
- PMDConfiguration#setIgnoreFilePath
- It is now superseded by PMDConfiguration#setIgnoreFilePath
- PMDConfiguration#getInputUri
- It is now superseded by PMDConfiguration#getUri
- PMDConfiguration#setInputUri
- It is now superseded by PMDConfiguration#setInputUri
- PMDConfiguration#getReportFile
- It is now superseded by PMDConfiguration#getReportFilePath
- PMDConfiguration#setReportFile
- It is now superseded by PMDConfiguration#setReportFile
+ PMD
and PMD.StatusCode
- PMD 7 will ship with a revamped CLI split from pmd-core. To programmatically launch analysis you can use PmdAnalysis
.
+ PMDConfiguration#getAllInputPaths
- It is now superseded by PMDConfiguration#getInputPathList
+ PMDConfiguration#setInputPaths
- It is now superseded by PMDConfiguration#setInputPathList
+ PMDConfiguration#addInputPath
- It is now superseded by PMDConfiguration#addInputPath
+ PMDConfiguration#getInputFilePath
- It is now superseded by PMDConfiguration#getInputFile
+ PMDConfiguration#getIgnoreFilePath
- It is now superseded by PMDConfiguration#getIgnoreFile
+ PMDConfiguration#setInputFilePath
- It is now superseded by PMDConfiguration#setInputFilePath
+ PMDConfiguration#setIgnoreFilePath
- It is now superseded by PMDConfiguration#setIgnoreFilePath
+ PMDConfiguration#getInputUri
- It is now superseded by PMDConfiguration#getUri
+ PMDConfiguration#setInputUri
- It is now superseded by PMDConfiguration#setInputUri
+ PMDConfiguration#getReportFile
- It is now superseded by PMDConfiguration#getReportFilePath
+ PMDConfiguration#setReportFile
- It is now superseded by PMDConfiguration#setReportFile
PMDConfiguration#isStressTest
and PMDConfiguration#setStressTest
- Will be removed with no replacement.
PMDConfiguration#isBenchmark
and PMDConfiguration#setBenchmark
- Will be removed with no replacement, the CLI will still support it.
CPD
and CPD.StatusCode
- PMD 7 will ship with a revamped CLI split from pmd-core. An alternative to programmatically launch CPD analysis will be added in due time.
@@ -4232,7 +4232,7 @@ PMD’s AST package.
All these classes have now a new getOp()
method. Existing code should be refactored to use this method instead.
-It returns the new enums, like AssignmentOperator
, and avoids
+It returns the new enums, like AssignmentOperator
, and avoids
the dependency to Jorje.
@@ -4273,8 +4273,8 @@ They will not be replaced.
will be removed. It was introduced for Java 17 and Java 18 Preview as part of pattern matching for switch,
but it is no longer supported with Java 19 Preview.
- The interface
CPDRenderer
is deprecated. For custom CPD renderers
-the new interface CPDReportRenderer
should be used.
- - The class
TestDescriptor
is deprecated, replaced with RuleTestDescriptor
.
+the new interface CPDReportRenderer
should be used.
+ - The class
TestDescriptor
is deprecated, replaced with RuleTestDescriptor
.
- Many methods of
RuleTst
have been deprecated as internal API.
@@ -4356,9 +4356,9 @@ and Report#filterViolations
creates a new report with
+ Report#filterViolations
creates a new report with
some violations removed with a given predicate based filter.
- Report#union
can combine two reports into a single new Report.
+ Report#union
can combine two reports into a single new Report.
net.sourceforge.pmd.util.Predicate
will be replaced in PMD7 with the standard Predicate interface from java8.
@@ -4374,18 +4374,18 @@ some violations removed with a given predicate based filter.
- Several members of
PMD
have been newly deprecated, including:
PMD#EOL
: use System#lineSeparator()
- PMD#SUPPRESS_MARKER
: use DEFAULT_SUPPRESS_MARKER
+ PMD#SUPPRESS_MARKER
: use DEFAULT_SUPPRESS_MARKER
PMD#processFiles
: use the new programmatic API
PMD#getApplicableFiles
: is internal
PMDConfiguration#prependClasspath
is deprecated
-in favour of prependAuxClasspath
.
+in favour of prependAuxClasspath
.
PMDConfiguration#setRuleSets
and
getRuleSets
are deprecated. Use instead
-setRuleSets
,
-addRuleSet
,
-and getRuleSetPaths
.
+setRuleSets
,
+addRuleSet
,
+and getRuleSetPaths
.
- Several members of
BaseCLITest
have been deprecated with replacements.
-
Several members of PMDCommandLineInterface
have been explicitly deprecated.
@@ -4403,12 +4403,12 @@ The replacements are in the subpackage TextFile
has been added as experimental. It intends
+TextFile
has been added as experimental. It intends
to replace DataSource
and SourceCode
in the long term.
This interface will change in PMD 7 to support read/write operations
-and other things. You don’t need to use it in PMD 6, as FileCollector
-decouples you from this. A file collector is available through PmdAnalysis#files
.
+and other things. You don’t need to use it in PMD 6, as FileCollector
+decouples you from this. A file collector is available through PmdAnalysis#files
.
@@ -4618,10 +4618,10 @@ compared to other cli tools.
Experimental APIs
- - The interface
ASTCommentContainer
has been added to the Apex AST.
+ - The interface
ASTCommentContainer
has been added to the Apex AST.
It provides a way to check whether a node contains at least one comment. Currently, this is only implemented for
-ASTCatchBlockStatement
and used by the rule
-EmptyCatchBlock
.
+ASTCatchBlockStatement
and used by the rule
+EmptyCatchBlock
.
This information is also available via XPath attribute @ContainsComment
.
@@ -4701,19 +4701,19 @@ are deprecated. This functionality will be replaced by another TBD mechanism in
Experimental APIs
- - The experimental class
ASTTypeTestPattern
has been renamed to ASTTypePattern
+ - The experimental class
ASTTypeTestPattern
has been renamed to ASTTypePattern
in order to align the naming to the JLS.
- - The experimental class
ASTRecordConstructorDeclaration
has been renamed to ASTCompactConstructorDeclaration
+ - The experimental class
ASTRecordConstructorDeclaration
has been renamed to ASTCompactConstructorDeclaration
in order to align the naming to the JLS.
- The AST types and APIs around Pattern Matching and Records are not experimental anymore:
- ASTVariableId#isPatternBinding
- ASTPattern
- ASTTypePattern
- ASTRecordDeclaration
- ASTRecordComponentList
- ASTRecordComponent
- ASTRecordBody
- ASTCompactConstructorDeclaration
+ ASTVariableId#isPatternBinding
+ ASTPattern
+ ASTTypePattern
+ ASTRecordDeclaration
+ ASTRecordComponentList
+ ASTRecordComponent
+ ASTRecordBody
+ ASTCompactConstructorDeclaration
Internal API
@@ -4753,8 +4753,8 @@ of the language is changed.
Around RuleSet parsing
- RuleSetFactory
and RulesetsFactoryUtils
have been deprecated in favor of RuleSetLoader
. This is easier to configure, and more maintainable than the multiple overloads of RulesetsFactoryUtils
.
- - Some static creation methods have been added to
RuleSet
for simple cases, eg forSingleRule
. These replace some counterparts in RuleSetFactory
+ RuleSetFactory
and RulesetsFactoryUtils
have been deprecated in favor of RuleSetLoader
. This is easier to configure, and more maintainable than the multiple overloads of RulesetsFactoryUtils
.
+ - Some static creation methods have been added to
RuleSet
for simple cases, eg forSingleRule
. These replace some counterparts in RuleSetFactory
- Since
RuleSets
is also deprecated, many APIs that require a RuleSets instance now are deprecated, and have a counterpart that expects a List<RuleSet>
.
RuleSetReferenceId
, RuleSetReference
, RuleSetFactoryCompatibility
are deprecated. They are most likely not relevant outside of the implementation of pmd-core.
@@ -4806,11 +4806,11 @@ You can identify them with the net.sourceforge.pmd.RuleViolationComparator
. Use RuleViolation#DEFAULT_COMPARATOR
instead.
- net.sourceforge.pmd.cpd.AbstractTokenizer
. Use net.sourceforge.pmd.cpd.AnyCpdLexer
instead (previously called AnyTokenizer).
- net.sourceforge.pmd.cpd.FortranTokenizer
. Was replaced by an AnyCpdLexer
. Use FortranLanguageModule#createCpdLexer
anyway.
- net.sourceforge.pmd.cpd.PerlTokenizer
. Was replaced by an AnyCpdLexer
. Use PerlLanguageModule#createCpdLexer
anyway.
- net.sourceforge.pmd.cpd.RubyTokenizer
. Was replaced by an AnyCpdLexer
. Use RubyLanguageModule#createCpdLexer
anyway.
+ net.sourceforge.pmd.RuleViolationComparator
. Use RuleViolation#DEFAULT_COMPARATOR
instead.
+ net.sourceforge.pmd.cpd.AbstractTokenizer
. Use net.sourceforge.pmd.cpd.AnyCpdLexer
instead (previously called AnyTokenizer).
+ net.sourceforge.pmd.cpd.FortranTokenizer
. Was replaced by an AnyCpdLexer
. Use FortranLanguageModule#createCpdLexer
anyway.
+ net.sourceforge.pmd.cpd.PerlTokenizer
. Was replaced by an AnyCpdLexer
. Use PerlLanguageModule#createCpdLexer
anyway.
+ net.sourceforge.pmd.cpd.RubyTokenizer
. Was replaced by an AnyCpdLexer
. Use RubyLanguageModule#createCpdLexer
anyway.
RuleReference#getOverriddenLanguage
and
RuleReference#setLanguage
- Antlr4 generated lexers:
@@ -4863,7 +4863,7 @@ reported as a forward compatibility warning.
Many methods of net.sourceforge.pmd.Report
. They are replaced by accessors
that produce a List. For example, iterator()
(and implementing Iterable) and isEmpty()
are both
-replaced by getViolations()
.
+replaced by getViolations()
.
- The dataflow codebase is deprecated for removal in PMD 7. This includes all code in the following packages, and their subpackages:
@@ -4885,7 +4885,7 @@ replaced by JavaParserVisitorReducedAdapter
TypeHelper
is deprecated in
-favor of TypeTestUtil
, which has the
+favor of TypeTestUtil
, which has the
same functionality, but a slightly changed API.
- Many of the classes in
net.sourceforge.pmd.lang.java.symboltable
are deprecated as internal API.
@@ -4978,7 +4978,7 @@ that should be preferred to the old ones
Experimental APIs
-Note: Experimental APIs are identified with the annotation Experimental
,
+
Note: Experimental APIs are identified with the annotation Experimental
,
see its javadoc for details
@@ -5010,20 +5010,20 @@ The following usages are now deprecated in the Apex, Ja
- Manual instantiation of nodes. Constructors of node classes are deprecated and
-marked
InternalApi
. Nodes should only be obtained from the parser,
+marked InternalApi
. Nodes should only be obtained from the parser,
which for rules, means that they never need to instantiate node themselves.
Those constructors will be made package private with 7.0.0.
- Subclassing of abstract node classes, or usage of their type. The base classes are internal API
and will be hidden in version 7.0.0. You should not couple your code to them.
- - In the meantime you should use interfaces like
VfNode
or
-Node
, or the other published interfaces in this package,
+ - In the meantime you should use interfaces like
VfNode
or
+Node
, or the other published interfaces in this package,
to refer to nodes generically.
- Concrete node classes will be made final with 7.0.0.
- Setters found in any node class or interface. Rules should consider the AST immutable.
We will make those setters package private with 7.0.0.
- - The implementation classes of
Parser
(eg VfParser
) are deprecated and should not be used directly.
-Use LanguageVersionHandler#getParser
instead.
- - The implementation classes of
TokenManager
(eg VfTokenManager
) are deprecated and should not be used outside of our implementation.
+ - The implementation classes of
Parser
(eg VfParser
) are deprecated and should not be used directly.
+Use LanguageVersionHandler#getParser
instead.
+ - The implementation classes of
TokenManager
(eg VfTokenManager
) are deprecated and should not be used outside of our implementation.
This also affects CPD-only modules.
@@ -5117,7 +5117,7 @@ eg AbstractApexNode
AbstractApexNodeBase
, and the related visit
methods on ApexParserVisitor
and its implementations.
-Use ApexNode
instead, now considers comments too.
+Use ApexNode
instead, now considers comments too.
For removal
@@ -5131,7 +5131,7 @@ Use AbstractNode
base class. See their javadoc for details.
Node#isFindBoundary
is deprecated for XPath queries.
- Many APIs of
net.sourceforge.pmd.lang.metrics
, though most of them were internal and
-probably not used directly outside of PMD. Use MetricsUtil
as
+probably not used directly outside of PMD. Use MetricsUtil
as
a replacement for the language-specific façades too.
QualifiableNode
, QualifiedName
@@ -5192,19 +5192,19 @@ The following usages are now deprecated in the JSP AST (with ot
- Manual instantiation of nodes. Constructors of node classes are deprecated and
-marked
InternalApi
. Nodes should only be obtained from the parser,
+marked InternalApi
. Nodes should only be obtained from the parser,
which for rules, means that they never need to instantiate node themselves.
Those constructors will be made package private with 7.0.0.
- Subclassing of abstract node classes, or usage of their type. The base classes are internal API
and will be hidden in version 7.0.0. You should not couple your code to them.
- - In the meantime you should use interfaces like
JspNode
or
-Node
, or the other published interfaces in this package,
+ - In the meantime you should use interfaces like
JspNode
or
+Node
, or the other published interfaces in this package,
to refer to nodes generically.
- Concrete node classes will be made final with 7.0.0.
- Setters found in any node class or interface. Rules should consider the AST immutable.
We will make those setters package private with 7.0.0.
- The class
JspParser
is deprecated and should not be used directly.
-Use LanguageVersionHandler#getParser
instead.
+Use LanguageVersionHandler#getParser
instead.
Please look at net.sourceforge.pmd.lang.jsp.ast
to find out the full list of deprecations.
@@ -5217,13 +5217,13 @@ The following usages are now deprecated in the VM AST (with oth
- Manual instantiation of nodes. Constructors of node classes are deprecated and
-marked
InternalApi
. Nodes should only be obtained from the parser,
+marked InternalApi
. Nodes should only be obtained from the parser,
which for rules, means that they never need to instantiate node themselves.
Those constructors will be made package private with 7.0.0.
- Subclassing of abstract node classes, or usage of their type. The base classes are internal API
and will be hidden in version 7.0.0. You should not couple your code to them.
- - In the meantime you should use interfaces like
VtlNode
or
-Node
, or the other published interfaces in this package,
+ - In the meantime you should use interfaces like
VtlNode
or
+Node
, or the other published interfaces in this package,
to refer to nodes generically.
- Concrete node classes will be made final with 7.0.0.
- Setters found in any node class or interface. Rules should consider the AST immutable.
@@ -5232,7 +5232,7 @@ We will make those setters package private with 7.0.0.
DirectiveMapper
and LogUtil
are deprecated
for removal. They were only used internally during parsing.
- The class
VmParser
is deprecated and should not be used directly.
-Use LanguageVersionHandler#getParser
instead.
+Use LanguageVersionHandler#getParser
instead.
Please look at net.sourceforge.pmd.lang.vm.ast
to find out the full list of deprecations.
@@ -5240,7 +5240,7 @@ Use ASTCursorBody
was unnecessary, not used and has been removed. Cursors have been already
-parsed as ASTCursorSpecification
.
+parsed as ASTCursorSpecification
.
6.21.0
@@ -5281,7 +5281,7 @@ implementations and that will be moved/refactored for PMD 7.0.0. They should not
be used, extended or implemented directly.
- All classes generated by JavaCC, eg
JJTJavaParserState
.
This includes token classes, which will be replaced with a single implementation, and
-subclasses of ParseException
, whose usages will be replaced
+subclasses of ParseException
, whose usages will be replaced
by just that superclass.
@@ -5463,7 +5463,7 @@ subpackages, except InternalApi
, as they will
+ Reminder: Please don’t use members marked with the annotation InternalApi
, as they will
likely be removed, hidden, or otherwise intentionally broken with 7.0.0.
@@ -5475,13 +5475,13 @@ The following usages are now deprecated in the Java AST (with o
- Manual instantiation of nodes. Constructors of node classes are deprecated and marked
-
InternalApi
. Nodes should only be obtained from the parser, which for rules, means
+InternalApi
. Nodes should only be obtained from the parser, which for rules, means
that never need to instantiate node themselves. Those constructors will be made package private with 7.0.0.
- Subclassing of abstract node classes, or usage of their type. Version 7.0.0 will bring a new set of abstractions
that will be public API, but the base classes are and will stay internal. You should not couple your code to them.
- - In the meantime you should use interfaces like
JavaNode
or
-Node
, or the other published interfaces in this package, to refer to nodes generically.
+ - In the meantime you should use interfaces like
JavaNode
or
+Node
, or the other published interfaces in this package, to refer to nodes generically.
- Concrete node classes will be made final with 7.0.0.
@@ -5571,55 +5571,55 @@ to remove them in 7.0.0. The proposed changes to the API are described net.sourceforge.pmd.properties.builders
,
-is being replaced by the simpler PropertyBuilder
. Their APIs enjoy a high degree of source compatibility.
+is being replaced by the simpler PropertyBuilder
. Their APIs enjoy a high degree of source compatibility.
-
Concrete property classes like IntegerProperty
and StringMultiProperty
will gradually
-all be deprecated until 7.0.0. Their usages should be replaced by direct usage of the PropertyDescriptor
+all be deprecated until 7.0.0. Their usages should be replaced by direct usage of the PropertyDescriptor
interface, e.g. PropertyDescriptor<Integer>
or PropertyDescriptor<List<String>>
.
-
-
Instead of spreading properties across countless classes, the utility class PropertyFactory
will become
+
Instead of spreading properties across countless classes, the utility class PropertyFactory
will become
from 7.0.0 on the only provider for property descriptor builders. Each current property type will be replaced
by a corresponding method on PropertyFactory
:
- IntegerProperty
is replaced by PropertyFactory#intProperty
+ IntegerProperty
is replaced by PropertyFactory#intProperty
- IntegerMultiProperty
is replaced by PropertyFactory#intListProperty
+ IntegerMultiProperty
is replaced by PropertyFactory#intListProperty
- FloatProperty
and DoubleProperty
are both replaced by PropertyFactory#doubleProperty
.
+ FloatProperty
and DoubleProperty
are both replaced by PropertyFactory#doubleProperty
.
Having a separate property for floats wasn’t that useful.
- - Similarly,
FloatMultiProperty
and DoubleMultiProperty
are replaced by PropertyFactory#doubleListProperty
.
+ - Similarly,
FloatMultiProperty
and DoubleMultiProperty
are replaced by PropertyFactory#doubleListProperty
.
- StringProperty
is replaced by PropertyFactory#stringProperty
+ StringProperty
is replaced by PropertyFactory#stringProperty
- StringMultiProperty
is replaced by PropertyFactory#stringListProperty
+ StringMultiProperty
is replaced by PropertyFactory#stringListProperty
-
-
RegexProperty
is replaced by PropertyFactory#regexProperty
+ RegexProperty
is replaced by PropertyFactory#regexProperty
- EnumeratedProperty
is replaced by PropertyFactory#enumProperty
+ EnumeratedProperty
is replaced by PropertyFactory#enumProperty
- EnumeratedProperty
is replaced by PropertyFactory#enumListProperty
+ EnumeratedProperty
is replaced by PropertyFactory#enumListProperty
- BooleanProperty
is replaced by PropertyFactory#booleanProperty
+ BooleanProperty
is replaced by PropertyFactory#booleanProperty
- Its multi-valued counterpart,
BooleanMultiProperty
, is not replaced, because it doesn’t have a use case.
- CharacterProperty
is replaced by PropertyFactory#charProperty
+ CharacterProperty
is replaced by PropertyFactory#charProperty
- CharacterMultiProperty
is replaced by PropertyFactory#charListProperty
+ CharacterMultiProperty
is replaced by PropertyFactory#charListProperty
- LongProperty
is replaced by PropertyFactory#longIntProperty
+ LongProperty
is replaced by PropertyFactory#longIntProperty
- LongMultiProperty
is replaced by PropertyFactory#longIntListProperty
+ LongMultiProperty
is replaced by PropertyFactory#longIntListProperty
MethodProperty
, FileProperty
, TypeProperty
and their multi-valued counterparts
@@ -5647,7 +5647,7 @@ are discontinued for lack of a use-case, and have no planned replacement in 7.0.
and the related builders (in net.sourceforge.pmd.properties.builders
) will be removed.
These specialized interfaces allowed additional constraints to be enforced on the
value of a property, but made the property class hierarchy very large and impractical
-to maintain. Their functionality will be mapped uniformly to PropertyConstraint
s,
+to maintain. Their functionality will be mapped uniformly to PropertyConstraint
s,
which will allow virtually any constraint to be defined, and improve documentation and error reporting. The
related methods PropertyTypeId#isPropertyNumeric
and
PropertyTypeId#isPropertyPackaged
are also deprecated.
@@ -5687,7 +5687,7 @@ new way to document these properties exhaustively will be added with 7.0.0.
-
The implementation of the adapters for the XPath engines Saxon and Jaxen (package net.sourceforge.pmd.lang.ast.xpath
)
-are now deprecated. They’ll be moved to an internal package come 7.0.0. Only Attribute
remains public API.
+are now deprecated. They’ll be moved to an internal package come 7.0.0. Only Attribute
remains public API.
-
The classes PropertyDescriptorField
, PropertyDescriptorBuilderConversionWrapper
, and the methods
@@ -5725,7 +5725,7 @@ It gets in the way of a grammar change for 7.0.0 and won’t be needed anymore (
also been deprecated:
-
-
ASTFieldDeclaration
won’t be a TypeNode
come 7.0.0, so
+
ASTFieldDeclaration
won’t be a TypeNode
come 7.0.0, so
getType
and
getTypeDefinition
are deprecated.
@@ -5734,7 +5734,7 @@ also been deprecated:
-
All these are deprecated because those nodes may declare several variables at once, possibly
-with different types (and obviously with different names). They both implement Iterator<
ASTVariableId
>
+with different types (and obviously with different names). They both implement Iterator<
ASTVariableId
>
though, so you should iterate on each declared variable. See #910.
-
@@ -5856,7 +5856,7 @@ data they might be accompanied.
- The following classes in package
net.sourceforge.pmd.benchmark
have been deprecated: Benchmark
, Benchmarker
,
BenchmarkReport
, BenchmarkResult
, RuleDuration
, StringBuilderCR
and TextReport
. Their API is not supported anymore
-and is disconnected from the internals of PMD. Use the newer API based around TimeTracker
instead, which can be found
+and is disconnected from the internals of PMD. Use the newer API based around TimeTracker
instead, which can be found
in the same package.
- The class
TypeOfFunction
has been deprecated. Use the newer TypeIsFunction
in the same package.
- The
typeof
methods in JavaFunctions
have been deprecated.
@@ -5882,7 +5882,7 @@ for removal in 7.0.0. The new instance method 6.1.0
- - The method
getXPathNodeName
is added to the Node
interface, which removes the
+ - The method
getXPathNodeName
is added to the Node
interface, which removes the
use of toString
of a node to get its XPath element name (see #569).
- The default implementation provided in
AbstractNode
, will be removed with 7.0.0
@@ -5905,7 +5905,7 @@ large projects, with many duplications, it was causing PMD#VERSION
has been deprecated and will be removed with PMD 7.0.0.
-Please use PMDVersion#VERSION
instead.
+Please use PMDVersion#VERSION
instead.
🐛 Fixed Issues
@@ -6426,7 +6426,7 @@ Please use
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex.html b/pmd_rules_apex.html
index 688716a737..a64b3ce0dd 100644
--- a/pmd_rules_apex.html
+++ b/pmd_rules_apex.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2016,7 +2016,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_bestpractices.html b/pmd_rules_apex_bestpractices.html
index f70f1dcd96..43590faafe 100644
--- a/pmd_rules_apex_bestpractices.html
+++ b/pmd_rules_apex_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2236,7 +2236,7 @@ Therefore delegate the triggers work to a regular class (often called Trigger ha
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_codestyle.html b/pmd_rules_apex_codestyle.html
index ca67ffa663..44b319a785 100644
--- a/pmd_rules_apex_codestyle.html
+++ b/pmd_rules_apex_codestyle.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2520,7 +2520,7 @@ controlled from the rest.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_design.html b/pmd_rules_apex_design.html
index 0231973178..00fbf62a8c 100644
--- a/pmd_rules_apex_design.html
+++ b/pmd_rules_apex_design.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2721,7 +2721,7 @@ well-formed sfdx-project.json
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_documentation.html b/pmd_rules_apex_documentation.html
index eea3940d51..2ea617aaa0 100644
--- a/pmd_rules_apex_documentation.html
+++ b/pmd_rules_apex_documentation.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1992,7 +1992,7 @@ By setting reportProperty
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_errorprone.html b/pmd_rules_apex_errorprone.html
index 8240cee1e7..ffc974c4a0 100644
--- a/pmd_rules_apex_errorprone.html
+++ b/pmd_rules_apex_errorprone.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2443,7 +2443,7 @@ dealing with legacy code.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_performance.html b/pmd_rules_apex_performance.html
index 332f71d6f2..a3f9d763ec 100644
--- a/pmd_rules_apex_performance.html
+++ b/pmd_rules_apex_performance.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2177,7 +2177,7 @@ a potential performance issue.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_apex_security.html b/pmd_rules_apex_security.html
index 291d41d248..246cd8fb12 100644
--- a/pmd_rules_apex_security.html
+++ b/pmd_rules_apex_security.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2323,7 +2323,7 @@ to avoid XSS attacks.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_ecmascript.html b/pmd_rules_ecmascript.html
index 74f9d3c7fc..1206c20756 100644
--- a/pmd_rules_ecmascript.html
+++ b/pmd_rules_ecmascript.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1930,7 +1930,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_ecmascript_bestpractices.html b/pmd_rules_ecmascript_bestpractices.html
index 26dc4090fc..be0217cf5f 100644
--- a/pmd_rules_ecmascript_bestpractices.html
+++ b/pmd_rules_ecmascript_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2071,7 +2071,7 @@ It also improves readability, if the base is given.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_ecmascript_codestyle.html b/pmd_rules_ecmascript_codestyle.html
index f22dc90da7..1f57a43d35 100644
--- a/pmd_rules_ecmascript_codestyle.html
+++ b/pmd_rules_ecmascript_codestyle.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2247,7 +2247,7 @@ will never execute. This is a bug, or extremely poor style.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_ecmascript_errorprone.html b/pmd_rules_ecmascript_errorprone.html
index bfd36e7704..d34e88f8b2 100644
--- a/pmd_rules_ecmascript_errorprone.html
+++ b/pmd_rules_ecmascript_errorprone.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2034,7 +2034,7 @@ precision in a floating point number. This may result in numeric calculations b
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_html.html b/pmd_rules_html.html
index f1913604db..692d262e2f 100644
--- a/pmd_rules_html.html
+++ b/pmd_rules_html.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1902,7 +1902,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_html_bestpractices.html b/pmd_rules_html_bestpractices.html
index c7fda3f973..68326a4f64 100644
--- a/pmd_rules_html_bestpractices.html
+++ b/pmd_rules_html_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1975,7 +1975,7 @@ by screen readers.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java.html b/pmd_rules_java.html
index 15d16d987a..f97bd4e215 100644
--- a/pmd_rules_java.html
+++ b/pmd_rules_java.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2235,7 +2235,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_bestpractices.html b/pmd_rules_java_bestpractices.html
index cb5c15f8a4..5ef7eb6f7a 100644
--- a/pmd_rules_java_bestpractices.html
+++ b/pmd_rules_java_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -4185,7 +4185,7 @@ a block {}
is sufficie
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_codestyle.html b/pmd_rules_java_codestyle.html
index 7931320bf2..634af557b3 100644
--- a/pmd_rules_java_codestyle.html
+++ b/pmd_rules_java_codestyle.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -4793,7 +4793,7 @@ that are misplaced (not making groups of 3 digits) are reported.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_design.html b/pmd_rules_java_design.html
index d694331455..23066f2109 100644
--- a/pmd_rules_java_design.html
+++ b/pmd_rules_java_design.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2400,7 +2400,7 @@ in a single method makes its behaviour hard to read and change.
Cyclomatic complexity assesses the complexity of a method by counting the number of decision points in a method,
plus one for the method entry. Decision points are places where the control flow jumps to another place in the
program. As such, they include all control flow statements, such as if
, while
, for
, and case
. For more
-details on the calculation, see the documentation CYCLO
.
+details on the calculation, see the documentation CYCLO
.
Generally, numbers ranging from 1-4 denote low complexity, 5-7 denote moderate complexity, 8-10 denote
high complexity, and 11+ is very high complexity. By default, this rule reports methods with a complexity >= 10.
@@ -2505,10 +2505,10 @@ into the former client classes.
The rule uses metrics to implement its detection strategy. The violation message
gives information about the values of these metrics:
- - WMC: a class complexity measure for a class, see
WEIGHED_METHOD_COUNT
- - WOC: a ‘non-triviality’ measure for a class, see
WEIGHT_OF_CLASS
- - NOPA: number of public attributes, see
NUMBER_OF_PUBLIC_FIELDS
- - NOAM: number of public accessor methods, see
NUMBER_OF_ACCESSORS
+ - WMC: a class complexity measure for a class, see
WEIGHED_METHOD_COUNT
+ - WOC: a ‘non-triviality’ measure for a class, see
WEIGHT_OF_CLASS
+ - NOPA: number of public attributes, see
NUMBER_OF_PUBLIC_FIELDS
+ - NOAM: number of public accessor methods, see
NUMBER_OF_ACCESSORS
The rule identifies a god class by looking for classes which have all of the following properties:
@@ -2813,9 +2813,9 @@ The violations are reported against the entire class.
The rule uses metrics to implement its detection strategy. The violation message
gives information about the values of these metrics:
- - WMC: a class complexity measure, see
WEIGHED_METHOD_COUNT
- - ATFD: a measure of how much data external data the class uses, see
ACCESS_TO_FOREIGN_DATA
- - TCC: a measure of how tightly related the methods are, see
TIGHT_CLASS_COHESION
+ - WMC: a class complexity measure, see
WEIGHED_METHOD_COUNT
+ - ATFD: a measure of how much data external data the class uses, see
ACCESS_TO_FOREIGN_DATA
+ - TCC: a measure of how tightly related the methods are, see
TIGHT_CLASS_COHESION
The rule identifies a god class by looking for classes which have all of the following properties:
@@ -3187,7 +3187,7 @@ rule This rule uses the NCSS (Non-Commenting Source Statements) metric to determine the number of lines
of code in a class, method or constructor. NCSS ignores comments, blank lines, and only counts actual
statements. For more details on the calculation, see the documentation
-NCSS
.
+NCSS
.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.java.rule.design.NcssCountRule
@@ -3273,7 +3273,7 @@ statements. For more details on the calculation, see the documentation
While cyclomatic complexity counts the number of decision points in a method, NPath counts the number of
full paths from the beginning to the end of the block of the method. That metric grows exponentially, as
it multiplies the complexity of statements in the same block. For more details on the calculation, see the
-documentation NPATH
.
+documentation NPATH
.
A threshold of 200 is generally considered the point where measures should be taken to reduce
complexity and increase readability.
@@ -3923,7 +3923,7 @@ remember to add a private constructor to prevent instantiation.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_documentation.html b/pmd_rules_java_documentation.html
index 821965aec6..808fa47ffc 100644
--- a/pmd_rules_java_documentation.html
+++ b/pmd_rules_java_documentation.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2200,7 +2200,7 @@ empty methods.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_errorprone.html b/pmd_rules_java_errorprone.html
index 6e35709cdf..01a27f0e5c 100644
--- a/pmd_rules_java_errorprone.html
+++ b/pmd_rules_java_errorprone.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -5257,7 +5257,7 @@ Thread.currentThread().getContextClassLoader() instead.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_multithreading.html b/pmd_rules_java_multithreading.html
index 254118f51a..44efbc477b 100644
--- a/pmd_rules_java_multithreading.html
+++ b/pmd_rules_java_multithreading.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2336,7 +2336,7 @@ one is chosen. The thread chosen is arbitrary; thus its usually safer to call n
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_performance.html b/pmd_rules_java_performance.html
index c8baa5c580..3195714ec0 100644
--- a/pmd_rules_java_performance.html
+++ b/pmd_rules_java_performance.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2833,7 +2833,7 @@ or StringBuffer.toString().length() == …
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_java_security.html b/pmd_rules_java_security.html
index b214b1b577..1af21eeda7 100644
--- a/pmd_rules_java_security.html
+++ b/pmd_rules_java_security.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1963,7 +1963,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp.html b/pmd_rules_jsp.html
index 97f3707db8..7cffcda1ee 100644
--- a/pmd_rules_jsp.html
+++ b/pmd_rules_jsp.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1939,7 +1939,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp_bestpractices.html b/pmd_rules_jsp_bestpractices.html
index 2eb885483d..291368e9a2 100644
--- a/pmd_rules_jsp_bestpractices.html
+++ b/pmd_rules_jsp_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2005,7 +2005,7 @@ little other purpose. Consider switching to JSP comments.
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp_codestyle.html b/pmd_rules_jsp_codestyle.html
index cb313dff4f..06448cb81c 100644
--- a/pmd_rules_jsp_codestyle.html
+++ b/pmd_rules_jsp_codestyle.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1922,7 +1922,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp_design.html b/pmd_rules_jsp_design.html
index 2586d4df5f..727b3b5bcd 100644
--- a/pmd_rules_jsp_design.html
+++ b/pmd_rules_jsp_design.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2013,7 +2013,7 @@ onload=calcDays;
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp_errorprone.html b/pmd_rules_jsp_errorprone.html
index 60b117f498..bf49cb90c2 100644
--- a/pmd_rules_jsp_errorprone.html
+++ b/pmd_rules_jsp_errorprone.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1934,7 +1934,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_jsp_security.html b/pmd_rules_jsp_security.html
index 5a6e99a479..b04e13a408 100644
--- a/pmd_rules_jsp_security.html
+++ b/pmd_rules_jsp_security.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1955,7 +1955,7 @@ ${fn:escapeXml(expression)} <!-- instead, escape it --&g
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_kotlin.html b/pmd_rules_kotlin.html
index 37e62338d4..4f0472a6c4 100644
--- a/pmd_rules_kotlin.html
+++ b/pmd_rules_kotlin.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1908,7 +1908,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_kotlin_bestpractices.html b/pmd_rules_kotlin_bestpractices.html
index 08f8e1f1b3..c4a4d8ae54 100644
--- a/pmd_rules_kotlin_bestpractices.html
+++ b/pmd_rules_kotlin_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1926,7 +1926,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_kotlin_errorprone.html b/pmd_rules_kotlin_errorprone.html
index b7388632d1..a1b6de124b 100644
--- a/pmd_rules_kotlin_errorprone.html
+++ b/pmd_rules_kotlin_errorprone.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1941,7 +1941,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_modelica.html b/pmd_rules_modelica.html
index 67a33eab86..6308ac376e 100644
--- a/pmd_rules_modelica.html
+++ b/pmd_rules_modelica.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1902,7 +1902,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_modelica_bestpractices.html b/pmd_rules_modelica_bestpractices.html
index df00f32611..4c11460340 100644
--- a/pmd_rules_modelica_bestpractices.html
+++ b/pmd_rules_modelica_bestpractices.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -2003,7 +2003,7 @@ end Example;
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024
diff --git a/pmd_rules_plsql.html b/pmd_rules_plsql.html
index 711fb817c3..e177ac2313 100644
--- a/pmd_rules_plsql.html
+++ b/pmd_rules_plsql.html
@@ -85,8 +85,8 @@
- - PMD 7.0.0-SNAPSHOT
- Release date: ??-?????-2023
+ - PMD 7.0.1-SNAPSHOT
+ Release date: 26-April-2024
@@ -1941,7 +1941,7 @@
©2024 PMD Open Source Project. All rights
reserved.
- Site last generated: Mar 21, 2024
+ Site last generated: Mar 22, 2024