diff --git a/feed.xml b/feed.xml
index e921c54947..490d3f2866 100644
--- a/feed.xml
+++ b/feed.xml
@@ -5,8 +5,8 @@
Intended as a documentation theme based on Jekyll for technical writers documenting software and other technical products, this theme has all the elements you would need to handle multiple products with both multi-level sidebar navigation, tags, and other documentation features.
https://pmd.github.io/pmd/
- Fri, 26 Jun 2020 16:29:10 +0000
- Fri, 26 Jun 2020 16:29:10 +0000
+ Sat, 27 Jun 2020 09:58:18 +0000
+ Sat, 27 Jun 2020 09:58:18 +0000Jekyll v3.8.7
diff --git a/index.html b/index.html
index 5356fb8577..9f87426c41 100644
--- a/index.html
+++ b/index.html
@@ -173,7 +173,7 @@
[tom@hal building]$ ls -l
total 5716
--rw-rw-r-- 1 tom tom 5837216 Jul 17 13:09 pmd-src-6.25.0-SNAPSHOT.zip
-[tom@hal building]$ unzip -q pmd-src-6.25.0-SNAPSHOT.zip
+-rw-rw-r-- 1 tom tom 5837216 Jul 17 13:09 pmd-src-6.26.0-SNAPSHOT.zip
+[tom@hal building]$ unzip -q pmd-src-6.26.0-SNAPSHOT.zip
[tom@hal building]$
Now cd down into the pmd directory:
-
[tom@hal building]$ cd pmd-src-6.25.0-SNAPSHOT
-[tom@hal pmd-src-6.25.0-SNAPSHOT]$ ls -l | grep pom.xml
+
[tom@hal building]$ cd pmd-src-6.26.0-SNAPSHOT
+[tom@hal pmd-src-6.26.0-SNAPSHOT]$ ls -l | grep pom.xml
-rw-rw-r-- 1 tom tom 36482 14\. Nov 17:36 pom.xml
-[tom@hal pmd-src-6.25.0-SNAPSHOT]$
+[tom@hal pmd-src-6.26.0-SNAPSHOT]$
That’s the project configuration for maven… let’s compile!
The framework is pretty simple. On a high level, a Metric<N> describes some numeric computation on a node of type N.
-You should wrap it into a MetricKey<N>, so that it can be cached on nodes (implemented by MetricsUtil).
+You should wrap it into a MetricKey<N>, so that it can be cached on nodes (implemented by MetricsUtil).
At the very least, a metrics framework has those two components and is just a convenient way to compute and memoize
metrics on a single file. The expressive power of metrics can be improved by implementing signature matching capabilities,
@@ -1421,8 +1421,8 @@ harder than it looks, and has been rescheduled to another project.
Implement metrics (typically in an internal package)
Create some public enums/ utility classes to expose metric keys
@@ -1523,41 +1523,101 @@ the breaking API changes will be performed in 7.0.0.
an API is tagged as @Deprecated or not in the latest minor release. During the development of 7.0.0,
we may decide to remove some APIs that were not tagged as deprecated, though we’ll try to avoid it.
-
6.24.0
+
6.25.0
+
+
+
+
The maven module net.sourceforge.pmd:pmd-scala is deprecated. Use net.sourceforge.pmd:pmd-scala_2.13
+or net.sourceforge.pmd:pmd-scala_2.12 instead.
+
+
+
Rule implementation classes are internal API and should not be used by clients directly.
+The rules should only be referenced via their entry in the corresponding category ruleset
+(e.g. <rule ref="category/java/bestpractices.xml/AbstractClassWithoutAbstractMethod" />).
+
+
While we definitely won’t move or rename the rule classes in PMD 6.x, we might consider changes
+in PMD 7.0.0 and onwards.
Note: Experimental APIs are identified with the annotation Experimental,
-see its javadoc for details
-
-
-
The experimental methods in BaseLanguageModule have been replaced by a
-definitive API.
-
-
-
6.23.0
-
-
Deprecated APIs
-
Internal API
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
Note: Experimental APIs are identified with the annotation Experimental,
+see its javadoc for details
+
+
+
The experimental methods in BaseLanguageModule have been replaced by a
+definitive API.
+
+
+
6.23.0
+
+
Deprecated APIs
+
+
Internal API
+
+
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
+You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
@@ -1568,179 +1628,179 @@ 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 TokenManager (eg VfTokenManager) are deprecated and should not be used outside of our implementation.
This also affects CPD-only modules.
These deprecations are added to the following language modules in this release.
Please look at the package documentation to find out the full list of deprecations.
Outside of these packages, these changes also concern the following TokenManager
implementations, and their corresponding Parser if it exists (in the same package):
Multiple fields, constructors and methods in XPathRule. See javadoc for details.
-
-
-
6.22.0
-
-
Deprecated APIs
-
-
Internal API
-
-
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
-You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
Multiple fields, constructors and methods in XPathRule. See javadoc for details.
+
+
+
6.22.0
+
+
Deprecated APIs
+
+
Internal API
+
+
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
+You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
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
a replacement for the language-specific façades too.
Several methods of ASTTryStatement, replacements with other names
have been added. This includes the XPath attribute @Finally, replace it with a test for child::FinallyStatement.
Several methods named getGuardExpressionNode are replaced with getCondition. This affects the
following nodes: WhileStatement, DoStatement, ForStatement, IfStatement, AssertStatement, ConditionalExpression.
@@ -1753,25 +1813,25 @@ 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.
@@ -1781,28 +1841,28 @@ 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 VmNode or
-Node, or the other published interfaces in this package,
+
In the meantime you should use interfaces like VmNode 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.
@@ -1811,90 +1871,90 @@ parsed as ASTCursorSpecification.
6.21.0
-
Deprecated APIs
+
Deprecated APIs
-
Internal API
+
Internal API
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
CharStream, JavaCharStream,
+SimpleCharStream: these are APIs used by our JavaCC
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.
-
For removal
+
For removal
pmd-core
-
Many methods on the Node interface
-and AbstractNode base class. See their javadoc for details.
Several methods of ASTTryStatement, replacements with other names
have been added. This includes the XPath attribute @Finally, replace it with a test for child::FinallyStatement.
Several methods named getGuardExpressionNode are replaced with getCondition. This affects the
following nodes: WhileStatement, DoStatement, ForStatement, IfStatement, AssertStatement, ConditionalExpression.
Each renderer has now a new method Renderer#setUseShortNames which
is used for implementing the “shortnames” CLI option. The method is automatically called by PMD, if this
CLI option is in use. When rendering filenames to the report, the new helper method
-AbstractRenderer#determineFileName should be used. This will change
+AbstractRenderer#determineFileName should be used. This will change
the filename to a short name, if the CLI option “shortnames” is used.
Not adjusting custom renderers will make them render always the full file names and not honoring the
@@ -1981,24 +2041,24 @@ CLI option “shortnames”.
The method AbstractPMDProcessor#filenameFrom has been
deprecated. It was used to determine a “short name” of the file being analyzed, so that the report
can use short names. However, this logic has been moved to the renderers.
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.
In ASTs
@@ -2040,41 +2100,41 @@ hide some methods and constructors that rule writers should not have access to.
The following usages are now deprecated in the Java AST (with other languages to come):
-
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 that never need to instantiate node themselves. Those constructors will be made package private with 7.0.0.
+
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 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.
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 DumpFacades in all languages, that could be used to transform a AST into a textual representation,
will be removed with PMD 7. The rule designer is a better way to inspect nodes.
@@ -2095,7 +2155,7 @@ or enable preview language features (e.g. PMD_JA
-
CodeClimateRule is deprecated in 7.0.0 because it was unused for 2 years and
+
CodeClimateRule is deprecated in 7.0.0 because it was unused for 2 years and
created an unwanted dependency.
Properties “cc_categories”, “cc_remediation_points_multiplier”, “cc_block_highlighting” will also be removed.
See #1702 for more.
@@ -2134,59 +2194,59 @@ 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.
+construction through builders. The builder hierarchy, currently found in the package net.sourceforge.pmd.properties.builders,
+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
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:
MethodProperty, FileProperty, TypeProperty and their multi-valued counterparts
are discontinued for lack of a use-case, and have no planned replacement in 7.0.0 for now.
@@ -2208,19 +2268,19 @@ are discontinued for lack of a use-case, and have no planned replacement in 7.0.
preferredRowCount is deprecated with no intended replacement. It was never implemented, and does not belong
-in this interface. The methods uiOrder and compareTo(PropertyDescriptor) are deprecated for the
+
preferredRowCount is deprecated with no intended replacement. It was never implemented, and does not belong
+in this interface. The methods uiOrder and compareTo(PropertyDescriptor) are deprecated for the
same reason. These methods mix presentation logic with business logic and are not necessary for PropertyDescriptors to work.
PropertyDescriptor will not extend Comparable<PropertyDescriptor> anymore come 7.0.0.
-
The method propertyErrorFor is deprecated and will be removed with no intended
+
The method propertyErrorFor is deprecated and will be removed with no intended
replacement. It’s really just a shortcut for prop.errorFor(rule.getProperty(prop)).
T valueFrom(String) and String asDelimitedString(T) are deprecated and will be removed. These were
used to serialize and deserialize properties to/from a string, but 7.0.0 will introduce a more flexible
XML syntax which will make them obsolete.
-
isMultiValue and type are deprecated and won’t be replaced. The new XML syntax will remove the need
+
isMultiValue and type are deprecated and won’t be replaced. The new XML syntax will remove the need
for a divide between multi- and single-value properties, and will allow arbitrary types to be represented.
Since arbitrary types may be represented, type will become obsolete as it can’t represent generic types,
which will nevertheless be representable with the XML syntax. It was only used for documentation, but a
new way to document these properties exhaustively will be added with 7.0.0.
-
errorFor is deprecated as its return type will be changed to Optional<String> with the shift to Java 8.
+
errorFor is deprecated as its return type will be changed to Optional<String> with the shift to Java 8.
-
Deprecated APIs
+
Deprecated APIs
For internalization
-
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.
+
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.
The method getVariableName on those two nodes will be removed, too.
@@ -2301,7 +2361,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<ASTVariableDeclaratorId>
+with different types (and obviously with different names). They both implement Iterator<ASTVariableDeclaratorId>
though, so you should iterate on each declared variable. See #910.
@@ -2319,25 +2379,25 @@ are not fully supported by PMD, so having a language module does not make sense.
not affected by this change. The following classes have been deprecated and will be removed with PMD 7.0.0:
@@ -2346,12 +2406,12 @@ in 7.0.0 to factorise common logic and make them extensible. Further explanation
found on #1426. Consequently, the following APIs are deprecated for
removal:
The PMD team is pleased to announce PMD 6.25.0-SNAPSHOT.
+
The PMD team is pleased to announce PMD 6.26.0-SNAPSHOT.
This is a minor release.
New and noteworthy
-
Scala cross compilation
-
-
Up until now the PMD Scala module has been compiled against scala 2.13 only by default.
-However, this makes it impossible to use pmd as a library in scala projects,
-that use scala 2.12, e.g. in sbt plugins. Therefore PMD now provides cross compiled pmd-scala
-modules for both versions: scala 2.12 and scala 2.13.
-
-
The new modules have new maven artifactIds. The old artifactId net.sourceforge.pmd:pmd-scala:6.25.0-SNAPSHOT
-is still available, but is deprecated from now on. It has been demoted to be just a delegation to the new
-pmd-scala_2.13 module and will be removed eventually.
The command line version of PMD continues to use scala 2.13.
-
-
New Rules
-
-
-
-
The new Java Rule UnnecessaryCast (java-codestyle)
-finds casts that are unnecessary while accessing collection elements.
-
-
-
The new Java Rule AvoidCalendarDateCreation (java-performance)
-finds usages of java.util.Calendar whose purpose is just to get the current date. This
-can be done in a more lightweight way.
-
-
-
The new Java Rule UseIOStreamsWithApacheCommonsFileItem (java-performance)
-finds usage of FileItem.get() and FileItem.getString(). These two methods are problematic since
-they load the whole uploaded file into memory.
-
-
-
-
Modified rules
-
-
-
-
The Java rule UseDiamondOperator (java-codestyle) now by default
-finds unnecessary usages of type parameters, which are nested, involve wildcards and are used
-within a ternary operator. These usages are usually only unnecessary with Java8 and later, when
-the type inference in Java has been improved.
-
-
In order to avoid false positives when checking Java7 only code, the rule has the new property
-java7Compatibility, which is disabled by default. Settings this to “true” retains
-the old rule behaviour.
-
-
-
Fixed Issues
-
-
apex-bestpractices
-
-
#2554: [apex] Exception applying rule UnusedLocalVariable on trigger
-
-
-
core
-
-
#971: [apex][plsql][java] Deprecate overly specific base rule classes
-
#2451: [core] Deprecate support for List attributes with XPath 2.0
-
#2599: [core] Fix XPath 2.0 Rule Chain Analyzer with Unions
-
#2483: [lang-test] Support cpd tests based on text comparison.
-For details see
-Testing your implementation
-in the developer documentation.
-
-
-
c#
-
-
#2551: [c#] CPD suppression with comments doesn’t work
#2573: [java] DefaultPackage: Allow package default JUnit 5 Test methods
-
-
-
java-design
-
-
#2563: [java] UselessOverridingMethod false negative with already public methods
-
#2570: [java] NPathComplexity should mention the expected NPath complexity
-
-
-
java-errorprone
-
-
#2544: [java] UseProperClassLoader can not detect the case with method call on intermediate variable
-
-
-
java-performance
-
-
#2591: [java] InefficientStringBuffering/AppendCharacterWithChar: Fix false negatives with concats in appends
-
#2600: [java] UseStringBufferForStringAppends: fix false negative with fields
-
-
-
scala
-
-
#2547: [scala] Add cross compilation for scala 2.12 and 2.13
-
-
-
-
API Changes
-
-
-
The maven module net.sourceforge.pmd:pmd-scala is deprecated. Use net.sourceforge.pmd:pmd-scala_2.13
-or net.sourceforge.pmd:pmd-scala_2.12 instead.
-
-
-
Rule implementation classes are internal API and should not be used by clients directly.
-The rules should only be referenced via their entry in the corresponding category ruleset
-(e.g. <rule ref="category/java/bestpractices.xml/AbstractClassWithoutAbstractMethod" />).
-
-
While we definitely won’t move or rename the rule classes in PMD 6.x, we might consider changes
-in PMD 7.0.0 and onwards.
-
-
-
-
Deprecated APIs
-
-
Internal API
-
-
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
-You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
Up until now the PMD Scala module has been compiled against scala 2.13 only by default.
+However, this makes it impossible to use pmd as a library in scala projects,
+that use scala 2.12, e.g. in sbt plugins. Therefore PMD now provides cross compiled pmd-scala
+modules for both versions: scala 2.12 and scala 2.13.
+
+
The new modules have new maven artifactIds. The old artifactId net.sourceforge.pmd:pmd-scala:6.25.0
+is still available, but is deprecated from now on. It has been demoted to be just a delegation to the new
+pmd-scala_2.13 module and will be removed eventually.
The command line version of PMD continues to use scala 2.13.
+
+
New Rules
+
+
+
+
The new Java Rule UnnecessaryCast (java-codestyle)
+finds casts that are unnecessary while accessing collection elements.
+
+
+
The new Java Rule AvoidCalendarDateCreation (java-performance)
+finds usages of java.util.Calendar whose purpose is just to get the current date. This
+can be done in a more lightweight way.
+
+
+
The new Java Rule UseIOStreamsWithApacheCommonsFileItem (java-performance)
+finds usage of FileItem.get() and FileItem.getString(). These two methods are problematic since
+they load the whole uploaded file into memory.
+
+
+
+
Modified rules
+
+
+
+
The Java rule UseDiamondOperator (java-codestyle) now by default
+finds unnecessary usages of type parameters, which are nested, involve wildcards and are used
+within a ternary operator. These usages are usually only unnecessary with Java8 and later, when
+the type inference in Java has been improved.
+
+
In order to avoid false positives when checking Java7 only code, the rule has the new property
+java7Compatibility, which is disabled by default. Settings this to “true” retains
+the old rule behaviour.
+
+
+
+
Fixed Issues
+
+
+
apex-bestpractices
+
+
#2554: [apex] Exception applying rule UnusedLocalVariable on trigger
+
+
+
core
+
+
#971: [apex][plsql][java] Deprecate overly specific base rule classes
+
#2451: [core] Deprecate support for List attributes with XPath 2.0
+
#2599: [core] Fix XPath 2.0 Rule Chain Analyzer with Unions
+
#2483: [lang-test] Support cpd tests based on text comparison.
+For details see
+Testing your implementation
+in the developer documentation.
+
+
+
c#
+
+
#2551: [c#] CPD suppression with comments doesn’t work
#2573: [java] DefaultPackage: Allow package default JUnit 5 Test methods
+
+
+
java-design
+
+
#2563: [java] UselessOverridingMethod false negative with already public methods
+
#2570: [java] NPathComplexity should mention the expected NPath complexity
+
+
+
java-errorprone
+
+
#2544: [java] UseProperClassLoader can not detect the case with method call on intermediate variable
+
+
+
java-performance
+
+
#2591: [java] InefficientStringBuffering/AppendCharacterWithChar: Fix false negatives with concats in appends
+
#2600: [java] UseStringBufferForStringAppends: fix false negative with fields
+
+
+
scala
+
+
#2547: [scala] Add cross compilation for scala 2.12 and 2.13
+
+
+
+
+
API Changes
+
+
+
+
The maven module net.sourceforge.pmd:pmd-scala is deprecated. Use net.sourceforge.pmd:pmd-scala_2.13
+or net.sourceforge.pmd:pmd-scala_2.12 instead.
+
+
+
Rule implementation classes are internal API and should not be used by clients directly.
+The rules should only be referenced via their entry in the corresponding category ruleset
+(e.g. <rule ref="category/java/bestpractices.xml/AbstractClassWithoutAbstractMethod" />).
+
+
While we definitely won’t move or rename the rule classes in PMD 6.x, we might consider changes
+in PMD 7.0.0 and onwards.
+
+
+
+
Deprecated APIs
+
+
Internal API
+
+
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
+You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
apex-design
@@ -1729,11 +1966,11 @@ local variables.
-
API Changes
+
API Changes
-
Deprecated APIs
+
Deprecated APIs
-
Internal API
+
Internal API
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
@@ -1816,7 +2053,7 @@ implementations, and their corresponding Parser if it exists (in the same packag
@@ -1944,7 +2181,7 @@ XPath 2.0 is superior in many ways, for example for its support for type checkin
or quantified expressions. For a detailed but approachable review of the features of XPath 2.0 and above,
see the Saxon documentation.
-
New Rules
+
New Rules
@@ -1961,7 +2198,7 @@ that violate this rule fail compile-time. This rule is however useful when deali
-
Fixed Issues
+
Fixed Issues
apex
@@ -2030,11 +2267,11 @@ that violate this rule fail compile-time. This rule is however useful when deali
-
API Changes
+
API Changes
-
Deprecated APIs
+
Deprecated APIs
-
Internal API
+
Internal API
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
@@ -2063,7 +2300,7 @@ methods on ApexNode instead, now considers comments too.
attribute endcolumn (if there is column information available)
-
Modified Rules
+
Modified Rules
@@ -2317,7 +2554,7 @@ the name was misleading. (File) header comments are not checked, but class comme
-
Fixed Issues
+
Fixed Issues
apex
@@ -2377,11 +2614,11 @@ the name was misleading. (File) header comments are not checked, but class comme
-
API Changes
+
API Changes
-
Deprecated APIs
+
Deprecated APIs
-
Internal API
+
Internal API
Those APIs are not intended to be used by clients, and will be hidden or removed with PMD 7.0.0.
You can identify them with the @InternalApi annotation. You’ll also get a deprecation warning.
@@ -2834,7 +3071,7 @@ contributions are welcome.
Rule Designer Reference. Check it out to learn
about the usage and features of the rule designer.
-
New rules
+
New rules
@@ -2851,7 +3088,7 @@ level specified provides a cleaner log, and improves readability of it.
-
Modified Rules
+
Modified Rules
The Java rule CloseResource (java-errorprone) now ignores by default instances
@@ -2861,7 +3098,7 @@ The stream returned by Files::lines(Path)
won’t be found by default by the rule anymore.
-
Fixed Issues
+
Fixed Issues
all
@@ -2916,7 +3153,7 @@ won’t be found by default by the rule anymore.
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.
@@ -3308,7 +3545,7 @@ The following usages are now deprecated in the Java AST (with o
@@ -3950,7 +4187,7 @@ support for UPDATE statements and subqueries and hierarchical queries in SELECT
Conditions in WHERE clauses support now REGEX_LIKE and multiset conditions.
-
New Rules
+
New Rules
The new Java rule UseTryWithResources (java-bestpractices) searches
@@ -3958,7 +4195,7 @@ for try-blocks, that could be changed to a try-with-resources statement. This st
each resource is closed at the end of the statement and is available since Java 7.
-
Modified Rules
+
Modified Rules
The Apex rule MethodNamingConventions (apex-codestyle) has a new
@@ -3966,7 +4203,7 @@ property skipTestMethodUnderscores, which
all test methods, either using the testMethod modifier or simply annotating them @isTest.
-
Fixed Issues
+
Fixed Issues
all
@@ -4026,11 +4263,11 @@ all test methods, either using the testMethod
Thanks to Maikel Steneker, CPD now supports Kotlin.
This means, you can use CPD to find duplicated code in your Kotlin projects.
-
New Rules
+
New Rules
The new Java rule UseUnderscoresInNumericLiterals (java-codestyle)
@@ -4285,7 +4522,7 @@ verifies that numeric literals over a given length (4 chars by default, but conf
underscores every 3 digits for readability. The rule only applies to Java 7+ codebases.
-
Modified Rules
+
Modified Rules
@@ -4298,7 +4535,7 @@ has been deprecated and will be removed with 7.0.0. Please use Fixed Issues
+
Fixed Issues
all
@@ -4347,7 +4584,7 @@ has been deprecated and will be removed with 7.0.0. Please use API Changes
+
API Changes
Properties framework
@@ -4470,7 +4707,7 @@ new way to document these properties exhaustively will be added with 7.0.0.
errorFor is deprecated as its return type will be changed to Optional<String> with the shift to Java 8.
-
Deprecated APIs
+
Deprecated APIs
For internalization
@@ -4500,7 +4737,7 @@ and will be moved into an internal package with 7.0.0. To implement your own met
-
For removal
+
For removal
@@ -4581,7 +4818,7 @@ respective setters.
-
External Contributions
+
External Contributions
#1384: [java] New Rule - UseUnderscoresInNumericLiterals - RajeshR
@@ -4629,7 +4866,7 @@ respective setters.
Golang is now backed by a proper Antlr Grammar. This means CPD is now better at detecting duplicates,
as comments are recognized as such and ignored.
-
New Rules
+
New Rules
The new PLSQL rule CodeFormat (plsql-codestyle) verifies that
@@ -4637,7 +4874,7 @@ PLSQL code is properly formatted. It checks e.g. for correct indentation in sele
that each parameter is defined on a separate line.
-
Fixed Issues
+
Fixed Issues
all
@@ -4691,7 +4928,7 @@ that each parameter is defined on a separate line.
-
API Changes
+
API Changes
PMD has a new CLI option -ignorelist. With that, you can provide a file containing a comma-delimit list of files,
@@ -4701,7 +4938,7 @@ Note: there is no corresponding option for the Ant task, since the feature is al
Ant’s FileSet include/exclude filters.
@@ -4811,7 +5048,7 @@ references only rules, that are most likely to apply everywhere.
Any feedback would be greatly appreciated.
-
New Rules
+
New Rules
The new Apex rule ApexDoc (apex-documentation)
@@ -4820,7 +5057,7 @@ sanity rules for such docs (no missing parameters, parameters’ order, and retu
method overrides and test classes are allowed to not include ApexDoc.
-
Modified Rules
+
Modified Rules
The rule MissingSerialVersionUID (java-errorprone) has been modified
@@ -4836,7 +5073,7 @@ statements. Previously such statements have been simply skipped ahead, now PMD i
to the individual parts of a SELECT-statement, such as the Where-Clause. This might produce new parsing errors
where PMD previously could successfully parse PLSQL code. If this happens, please report a new issue to get this problem fixed.
-
Fixed Issues
+
Fixed Issues
apex-bestpractices
@@ -4868,7 +5105,7 @@ where PMD previously could successfully parse PLSQL code. If this happens, pleas
-
API Changes
+
API Changes
@@ -4894,7 +5131,7 @@ a RuleSetReference. Furthermore the following methods are deprecated:
-
External Contributions
+
External Contributions
#1309: [core] [CPD] Decouple Antlr Tokenizer implementation from any CPD language supported with Antlr - Matías Fraga
@@ -4910,7 +5147,7 @@ a RuleSetReference. Furthermore the following methods are deprecated: This is a minor release.
-
The Java rule OneDeclarationPerLine (java-bestpractices) has been revamped to
consider not only local variable declarations, but field declarations too.
-
New Rules
+
New Rules
@@ -4970,7 +5207,7 @@ now deprecated, and will be removed with version 7.0.0. They are replaced by the
LocalVariableNamingConventions.
-
Fixed Issues
+
Fixed Issues
core
@@ -5020,7 +5257,7 @@ now deprecated, and will be removed with version 7.0.0. They are replaced by the
@@ -5099,7 +5336,7 @@ parameters and lambda parameters (considering whether they are explicitly typed
-
Modified Rules
+
Modified Rules
The Java rules AccessorClassGeneration and
@@ -5109,7 +5346,7 @@ parameters and lambda parameters (considering whether they are explicitly typed
accessor classes / methods altogether.
The findDescendantsOfType methods in net.sourceforge.pmd.lang.ast.AbstractNode no longer search for
@@ -5157,7 +5394,7 @@ exact type matches, but will match subclasses, too. That means, it’s now possi
types such as AbstractJavaTypeNode and not only for it’s concrete subtypes.
The new Apex rule AvoidNonExistentAnnotations (apex-errorprone)
@@ -5196,7 +5433,7 @@ In the future, use of such non-existent annotations could result in broken Apex
A full list of supported annotations can be found here
-
Modified Rules
+
Modified Rules
The Java rule UnnecessaryModifier (java-codestyle)
@@ -5204,7 +5441,7 @@ now detects enum constrcutors with explicit priv
letting you know exactly which modifiers are redundant at each declaration.
-
Fixed Issues
+
Fixed Issues
all
@@ -5251,7 +5488,7 @@ letting you know exactly which modifiers are redundant at each declaration.
-
API Changes
+
API Changes
@@ -5271,7 +5508,7 @@ data they might be accompanied.
-
External Contributions
+
External Contributions
#836: [apex] Add a rule to prevent use of non-existent annotations - anand13s
@@ -5287,7 +5524,7 @@ data they might be accompanied.
This is a minor release.
-
Table Of Contents
+
Table Of Contents
New and noteworthy
@@ -5303,7 +5540,7 @@ data they might be accompanied.
@@ -5352,7 +5589,7 @@ but checks for exact type matches, without considering the type hierarchy. That
not if it’s an instance of a subclass of TestCase. Be aware then, that using that method with abstract types will
never match.
-
New Rules
+
New Rules
@@ -5367,7 +5604,7 @@ multi-catch try statement.
-
Modified Rules
+
Modified Rules
@@ -5382,7 +5619,7 @@ still be adjusted by setting the property regex<
-
Fixed Issues
+
Fixed Issues
all
@@ -5444,7 +5681,7 @@ still be adjusted by setting the property regex<
-
API Changes
+
API Changes
The following classes in package net.sourceforge.pmd.benchmark have been deprecated: Benchmark, Benchmarker,
@@ -5458,7 +5695,7 @@ Use the newer typeIs method in the same c
Use the new isExactlyAny and isExactlyNone methods in the same class instead.
-
External Contributions
+
External Contributions
#966: [java] Issue #955: add new rule to detect identical catch statement - Clément Fournier and BBG
@@ -5476,7 +5713,7 @@ Use the new isExactlyAny and This is a minor release.
-
@@ -5582,7 +5819,7 @@ the same Swift version, we felt strongly this change was both safe and necessary
We had great feedback from the community during the process but if you have a legitimate use case for older Swift
versions, please let us know on our Issue Tracker.
-
New Rules
+
New Rules
The new Java rule InsecureCryptoIv (java-security)
@@ -5590,7 +5827,7 @@ detects hard coded initialization vectors used in cryptographic operations. It i
a randomly generated IV.
@@ -6315,7 +6552,7 @@ ruleset “java-basic” has now been moved to the “Error Prone” category. T
The old rulesets like “java-basic” are still kept for backwards-compatibility but will be removed eventually.
The rule reference documentation has been updated to reflect these changes.
-
New Rules
+
New Rules
@@ -6370,7 +6607,7 @@ The 5 rules are migrated for Apex from the equivalent Java rules and include:
loops, to avoid governor issues, and hitting the database too often.
-
Modified Rules
+
Modified Rules
@@ -6544,7 +6781,7 @@ This is now very well documented in Fixed Issues
+
#368: [vf] Adding proper AST support for negation expressions
@@ -7145,7 +7382,7 @@ will still indicate whether violations were found.
This is a bug fixing release.
-
Fixed Issues
+
Fixed Issues
General
@@ -7183,7 +7420,7 @@ than PMD 5.5.1, when we first started working on it.
Java developers will also appreciate the revamp of CloneMethodMustImplementCloneable,
making it over 500X faster, and PreserveStackTrace which is now 7X faster.
-
New and noteworthy
+
New and noteworthy
Incremental Analysis
@@ -7453,7 +7690,7 @@ for (int i = 0; i < 42; i++) { // preferred approach
}
-
New Rules
+
New Rules
AccessorMethodGeneration (java-design)
@@ -7481,7 +7718,7 @@ be avoided by changing the visibility of the field / method from private to pack
This new rule is part of the java-design ruleset.
-
Modified Rules
+
Modified Rules
@@ -7551,7 +7788,7 @@ See PR #250.
contains the names and paths of the files, that should be analyzed. This is similar to PMD’s filelist option.
You need to use this, if you have a large project with many files, and you hit the command line length limit.
-
Fixed Issues
+
Fixed Issues
General
@@ -7687,7 +7924,7 @@ You need to use this, if you have a large project with many files, and you hit t
-
API Changes
+
API Changes
net.sourceforge.pmd.RuleSetFactory is now immutable and its behavior cannot be changed anymore.
@@ -7702,7 +7939,7 @@ Therefore, the methods getSynchronizedListeners(
replaced by getListeners() and addListeners(...). See PR #193.
-
External Contributions
+
External Contributions
#123: [apex] Changing method names to lowercase so casing doesn’t matter
@@ -7774,7 +8011,7 @@ replaced by getListeners() and This is a bug fixing release.
-
Fixed Issues
+
Fixed Issues
General
@@ -7790,7 +8027,7 @@ replaced by getListeners() and This is a bug fixing release.
-
Fixed Issues
+
Fixed Issues
General
@@ -7805,7 +8042,7 @@ replaced by getListeners() and The PMD team is pleased to announce PMD 5.5.5.
-
Fixed Issues
+
Fixed Issues
general:
@@ -7843,7 +8080,7 @@ replaced by getListeners() and
-
External Contributions
+
External Contributions
#280: [apex] Support for Aggregate Result in CRUD rules
@@ -7858,9 +8095,9 @@ replaced by getListeners() and The PMD team is pleased to announce PMD 5.5.4
-
New and noteworthy
+
New and noteworthy
-
New Rules
+
New Rules
AccessorMethodGeneration (java-design)
@@ -7888,7 +8125,7 @@ be avoided by changing the visibility of the field / method from private to pack
This new rule is part of the java-design ruleset.
-
Modified Rules
+
Modified Rules
The Java rule UnusedModifier (ruleset java-unusedcode) has been expanded to consider more redundant modifiers.
@@ -7905,7 +8142,7 @@ and return statement to be on consecutive lines. Any variable that is used solel
reported.
@@ -7990,7 +8227,7 @@ than PMD 5.5.1, when we first started working on it.
Java developers will also appreciate the revamp of CloneMethodMustImplementCloneable,
making it over 500X faster, and PreserveStackTrace which is now 7X faster.
-
New and noteworthy
+
New and noteworthy
Apex Security Rule Set
@@ -8135,14 +8372,14 @@ attacks if unescaped.
Makes sure that all values obtained from URL parameters are properly escaped / sanitized
to avoid XSS attacks.
-
Modified Rules
+
Modified Rules
The Java rule “UseLocaleWithCaseConversions” (ruleset java-design) has been modified, to detect calls
to toLowerCase and to toUpperCase also within method call chains. This leads to more detected cases
and potentially new false positives.
See also bugfix #1556.
-
Fixed Issues
+
Fixed Issues
General
@@ -8220,7 +8457,7 @@ See also bugfix #1556.
-
API Changes
+
API Changes
net.sourceforge.pmd.RuleSetFactory is now immutable and its behavior cannot be changed anymore.
@@ -8228,7 +8465,7 @@ It provides constructors to create new adjusted instances. This allows to avoid
See PR #131.
-
External Contributions
+
External Contributions
#123: [apex] Changing method names to lowercase so casing doesn’t matter
The Java rule UnusedModifier (ruleset java-unusedcode) has been expanded to consider more redundant modifiers.
@@ -8739,7 +8976,7 @@ hides member variable
-
Fixed Issues
+
Fixed Issues
general
@@ -8779,7 +9016,7 @@ hides member variable
-
External Contributions
+
External Contributions
#266: [java] corrected invalid reporting of LoD violation
@@ -8805,18 +9042,18 @@ than PMD 5.4.2, when we first started working on it.
Java developers will also appreciate the revamp of CloneMethodMustImplementCloneable,
making it over 500X faster, and PreserveStackTrace which is now 7X faster.
-
New and noteworthy
+
New and noteworthy
This is a bug fixing release, no major changes were introduced.
-
Modified Rules
+
Modified Rules
The Java rule “UseLocaleWithCaseConversions” (ruleset java-design) has been modified, to detect calls
to toLowerCase and to toUpperCase also within method call chains. This leads to more detected cases
and potentially new false positives.
See also bugfix #1556.
Properties can be built using type-specific builders, which can be obtained
-from the factory methods of PropertyFactory. For example, to build a
+from the factory methods of PropertyFactory. For example, to build a
string property, you’d call
PropertyFactory.stringProperty("myProperty").desc("This is my property")
@@ -1463,8 +1463,8 @@ information about how to migrate.
The positive method is part of
+the NumericConstraints class, which provides some
other constraints. The constraint mechanism will be completely unlocked with 7.0.0,
since we’ll be migrating our API to Java 8.
@@ -1495,7 +1495,7 @@ There are several things to notice here:
The property descriptors are declared static final, which should generally be
the case, as descriptors are immutable and can be shared between instances of the same rule;
The property is declared using definePropertyDescriptor` in the constructor,
which ensures the property gets recognised by PMD at the time the properties
are overridden (which happens before rule execution);
The value of the property is not retrieved in the constructor, but in one of
@@ -1633,7 +1633,7 @@ are supported.
@@ -1416,8 +1416,8 @@ a numeric result. In the Java framework, metrics can be computed on operation de
method declaration), and type declaration nodes (class, interface, enum, and annotation declarations). A metric
object in the framework can only handle either types or operations, but not both.
-
PMD ships with a library of already implemented metrics. These metrics are referenced by MetricKey objects,
+which are listed in two public enums: JavaClassMetricKey and JavaOperationMetricKey.
Metric keys wrap a metric, and know which type of node their metric can be computed on. That way, you cannot compute an operation metric on a class
declaration node. Metrics that can be computed on both operation and type declarations (e.g. NCSS) have one metric key in
each enum.
The metric key does not exist (the name is case insensitive) or is not defined for the type of the context node.
@@ -1450,7 +1450,7 @@ CYCLO’s only defined for methods and constructors.
For Java Rules
-
The static façade class JavaMetrics is the single entry point to compute metrics in the Java framework.
+
The static façade class JavaMetrics is the single entry point to compute metrics in the Java framework.
This class provides the method get and its overloads. The following sections describes the interface of this class.
@@ -1478,7 +1478,7 @@ to JavaMetrics.get.
Capability checking
Metrics are not necessarily computable on any node of the type they handle. For example, Cyclo cannot be computed on
-abstract methods. Metric keys provides a supports(Node) boolean method
+abstract methods. Metric keys provides a supports(Node) boolean method
to find out if the metric can be computed on
the specified node. If the metric cannot be computed on the given node, JavaMetrics.get will return Double.NaN .
If you’re concerned about that, you can condition your call on whether the node is supported or not:
@@ -1499,7 +1499,7 @@ If you’re concerned about that, you can condition your call on whether the nod
gathered inside an enum in the implementation class of the metric, for example CycloMetric.CycloOption. They’re
also documented on the index of metrics.
-
To use options with a metric, you must first bundle them into a MetricOptions object. MetricOptions provides the
+
To use options with a metric, you must first bundle them into a MetricOptions object. MetricOptions provides the
utility method ofOptions to get a MetricOptions bundle from a collection or with varargs parameters. You can then
pass this bundle as a parameter to JavaMetrics.get:
publicObjectvisit(ASTMethodDeclarationmethod,Objectdata){
@@ -1758,7 +1758,7 @@ classes. Here’s the default behaviour by language and type of metric:
@@ -1425,9 +1425,9 @@ very similar for other languages.
To write a rule in Java you’ll have to:
-
write a Java class that implements the interface Rule. Each
+
write a Java class that implements the interface Rule. Each
language implementation provides a base rule class to ease your pain,
-e.g. AbstractJavaRule.
compile this class, linking it to PMD APIs (eg using PMD as a maven dependency)
bundle this into a JAR and add it to the execution classpath of PMD
declare the rule in your ruleset XML
@@ -1455,7 +1455,7 @@ by default just visits the children.
Generally, a rule wants to check for only some node types. In our XPath example
in Your First Rule,
we wanted to check for some VariableDeclaratorId nodes. That’s the XPath name,
-but in Java, you’ll get access to the ASTVariableDeclaratorId
+but in Java, you’ll get access to the ASTVariableDeclaratorId
full API.
If you want to check for some specific node types, you can override the
@@ -1503,7 +1503,7 @@ speed-up your rule by using the rulechain.
That mechanism doesn’t recurse on all the tree, instead, your rule will only be
passed the nodes it is interested in. To use the rulechain correctly:
-
Your rule must register those node types by calling addRuleChainVisit
+
Your rule must register those node types by calling addRuleChainVisit
in its constructor.
Your visit methods must not recurse! In effect, you should call never
call super.visit in the methods.
@@ -1520,7 +1520,7 @@ by multiple threads.
However, for performance reasons, the rule instances are used for multiple files.
This means, that the constructor of the rule is only executed once (per thread)
and the rule instance is reused. If you rely on a proper initialization of instance
-properties, you can do the initialization e.g. in the visit-method of the ASTCompilationUnit
+properties, you can do the initialization e.g. in the visit-method of the ASTCompilationUnit
node - which is visited first and only once per file. However, this
solution would only work for rules written for the Java language. A language
independent way is to override the method start of the rule.
@@ -1555,11 +1555,11 @@ a different set of files to analyse. Then, for each such file, for each
rule copy:
apply is called with the root
of the AST. That method performs the AST traversal that ultimately calls visit methods.
It’s not called for RuleChain rules.
@@ -1463,10 +1463,10 @@ of the specific thing the rule is trying to flag. Rules then report a violation
Discovering the AST
-
ASTs are represented by Java classes deriving from Node.
+
ASTs are represented by Java classes deriving from Node.
Each PMD language has its own set of such classes, and its own rules about how
these classes relate to one another, based on the grammar of the language. For
-example, all Java AST nodes extend JavaNode.
The element has for local name the value of getXPathNodeName
for the given node
@@ -1445,7 +1445,7 @@ for the given node
This means, that documentation for attributes can be found in our Javadocs. For
example, the attribute @SimpleName of the Java node EnumDeclaration is backed
-by the Java getter getSimpleName.
Returns true if the context node's static Java type is a subtype of the given type. This tests for the resolved type of the Java construct, not the type of the AST node. For example, the AST node for a literal (e.g. 5d) has type ASTLiteral, however this function will compare the type of the literal (eg here, double) against the argument.
Returns true if the context node's static type is exactly the given type. In particular, returns false if the context node's type is a subtype of the given type.
@@ -1478,7 +1478,7 @@ require it to function properly.
-
-
C:\ > cd C:\pmd-bin-6.25.0-SNAPSHOT\bin
+
C:\ > cd C:\pmd-bin-6.26.0-SNAPSHOT\bin
C:\...\bin > .\pmd.bat -d ..\..\src\main\java\ -f text -R rulesets/java/quickstart.xml
.../src/main/java/com/me/RuleSet.java:123 These nested if statements could be combined
@@ -1529,7 +1529,7 @@ directory or a jar or zip file containing the sources.
-
~ $ cd ~/bin/pmd-bin-6.25.0-SNAPSHOT/bin
+
~ $ cd ~/bin/pmd-bin-6.26.0-SNAPSHOT/bin
~/.../bin $ ./run.sh cpd --minimum-tokens 100 --files /home/me/src
Found a 7 line (110 tokens) duplication in the following files:
@@ -1545,7 +1545,7 @@ directory or a jar or zip file containing the sources.
assertEquals(Boolean.TYPE, expressions.get(index++).getType());
-
C:\ > cd C:\pmd-bin-6.25.0-SNAPSHOT\bin
+
C:\ > cd C:\pmd-bin-6.26.0-SNAPSHOT\bin
C:\...\bin > .\cpd.bat --minimum-tokens 100 --files c:\temp\src
Found a 7 line (110 tokens) duplication in the following files:
@@ -1590,7 +1590,7 @@ directory or a jar or zip file containing the sources.
@@ -1419,12 +1419,12 @@ Then you can either copy all “*.jar” files from PMD’s lib folder into one
(ANT_HOME/lib, ${user.home}/.ant/lib) or using the -lib command line parameter.
However, the preferred way is to define a <classpath> for pmd itself and use this classpath when
-adding the PMD Task. Assuming, you have extracted the PMD zip file to /home/joe/pmd-bin-6.25.0-SNAPSHOT,
+adding the PMD Task. Assuming, you have extracted the PMD zip file to /home/joe/pmd-bin-6.26.0-SNAPSHOT,
then you can make use of the PMD Task like this:
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask">
<classpath>
- <fileset dir="/home/joe/pmd-bin-6.25.0-SNAPSHOT/lib">
+ <fileset dir="/home/joe/pmd-bin-6.26.0-SNAPSHOT/lib">
<include name="*.jar"/>
</fileset>
</classpath>
@@ -1434,7 +1434,7 @@ then you can make use of the PMD Task like this:
Alternatively, a path can be defined and used via classpathref:
<path id="pmd.classpath">
- <fileset dir="/home/joe/pmd-bin-6.25.0-SNAPSHOT/lib">
+ <fileset dir="/home/joe/pmd-bin-6.26.0-SNAPSHOT/lib">
<include name="*.jar"/>
</fileset>
</path>
@@ -1690,7 +1690,7 @@ make sure you use the XML formatter in the PMD task invocation, i.e.:
need to be configured when defining the task:
<path id="pmd.classpath">
- <fileset dir="/home/joe/pmd-bin-6.25.0-SNAPSHOT/lib">
+ <fileset dir="/home/joe/pmd-bin-6.26.0-SNAPSHOT/lib">
<include name="*.jar"/>
</fileset>
<!-- the custom renderer is expected to be in /home/joe/pmd-addons/com/company/MyRenderer.class -->
@@ -1721,7 +1721,7 @@ Your project needs to be compiled first which happens in the target “compile
<pathelement location="lib/xyz.jar"/>
</path>
<path id="pmd.classpath">
- <fileset dir="/home/joe/pmd-bin-6.25.0-SNAPSHOT/lib">
+ <fileset dir="/home/joe/pmd-bin-6.26.0-SNAPSHOT/lib">
<include name="*.jar"/>
</fileset>
</path>
@@ -1860,7 +1860,7 @@ To prevent this from happening, increase the maximum memory usable by ant using