diff --git a/404.html b/404.html index 66791d0517..87eff1709b 100644 --- a/404.html +++ b/404.html @@ -1441,7 +1441,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
doTest
Signature<N>
diff --git a/pmd_devdocs_roadmap.html b/pmd_devdocs_roadmap.html
index 1b9fd19414..f75b173683 100644
--- a/pmd_devdocs_roadmap.html
+++ b/pmd_devdocs_roadmap.html
@@ -1584,7 +1584,7 @@ This should be configurable on per Rule basis similar to TR and SymbolTable.
diff --git a/pmd_devdocs_rule_deprecation_policy.html b/pmd_devdocs_rule_deprecation_policy.html
index 5bf21a98b1..6c55dceb29 100644
--- a/pmd_devdocs_rule_deprecation_policy.html
+++ b/pmd_devdocs_rule_deprecation_policy.html
@@ -1553,7 +1553,7 @@ major release of PMD.
diff --git a/pmd_devdocs_writing_documentation.html b/pmd_devdocs_writing_documentation.html
index c7801ee5f7..62ff059506 100644
--- a/pmd_devdocs_writing_documentation.html
+++ b/pmd_devdocs_writing_documentation.html
@@ -1700,7 +1700,7 @@ by specifying
-Dpmd.doc.check
diff --git a/pmd_java_metrics_index.html b/pmd_java_metrics_index.html
index 1455ef46ad..b39904e312 100644
--- a/pmd_java_metrics_index.html
+++ b/pmd_java_metrics_index.html
@@ -1794,7 +1794,7 @@ In Proceedings ACM Symposium on Software Reusability, 1995.
diff --git a/pmd_languages_jsp.html b/pmd_languages_jsp.html
index 8e70b9a926..7e04333f15 100644
--- a/pmd_languages_jsp.html
+++ b/pmd_languages_jsp.html
@@ -1494,7 +1494,7 @@ contains only “.java” files, JSP files obviously will not be checked.
diff --git a/pmd_languages_plsql.html b/pmd_languages_plsql.html
index 4978ca7892..5124928c54 100644
--- a/pmd_languages_plsql.html
+++ b/pmd_languages_plsql.html
@@ -1481,7 +1481,7 @@ a custom XPath rule with the following expression:
diff --git a/pmd_next_major_development.html b/pmd_next_major_development.html
index 2ca1aa26b1..39f9332376 100644
--- a/pmd_next_major_development.html
+++ b/pmd_next_major_development.html
@@ -2874,7 +2874,7 @@ which was introduced in PMD 6.26.0.
diff --git a/pmd_projectdocs_committers_infrastructure.html b/pmd_projectdocs_committers_infrastructure.html
index a1de6eb976..2dc9fe2369 100644
--- a/pmd_projectdocs_committers_infrastructure.html
+++ b/pmd_projectdocs_committers_infrastructure.html
@@ -1525,7 +1525,7 @@ Login is via github.
diff --git a/pmd_projectdocs_committers_main_landing_page.html b/pmd_projectdocs_committers_main_landing_page.html
index 1a2a8605a6..f49c7493e5 100644
--- a/pmd_projectdocs_committers_main_landing_page.html
+++ b/pmd_projectdocs_committers_main_landing_page.html
@@ -1533,7 +1533,7 @@ the new post is recognized and added to the news section and also on the news su
diff --git a/pmd_projectdocs_committers_merging_pull_requests.html b/pmd_projectdocs_committers_merging_pull_requests.html
index 764f8b0d51..26a2e39fb2 100644
--- a/pmd_projectdocs_committers_merging_pull_requests.html
+++ b/pmd_projectdocs_committers_merging_pull_requests.html
@@ -1612,7 +1612,7 @@ integrated (e.g. gitk and github show the branches, from which the specific comm
diff --git a/pmd_projectdocs_committers_releasing.html b/pmd_projectdocs_committers_releasing.html
index 8748040907..ffe08238a2 100644
--- a/pmd_projectdocs_committers_releasing.html
+++ b/pmd_projectdocs_committers_releasing.html
@@ -1841,7 +1841,7 @@ the maintenance branch needs to be set.
diff --git a/pmd_projectdocs_credits.html b/pmd_projectdocs_credits.html
index 05641e1292..f3229f0cc1 100644
--- a/pmd_projectdocs_credits.html
+++ b/pmd_projectdocs_credits.html
@@ -1955,7 +1955,7 @@ PMD scoreboard formulas, pmd-dcpd optimizations
diff --git a/pmd_projectdocs_faq.html b/pmd_projectdocs_faq.html
index 2998963760..23476195c2 100644
--- a/pmd_projectdocs_faq.html
+++ b/pmd_projectdocs_faq.html
@@ -1488,7 +1488,7 @@ You must take this into account for certain rules.
diff --git a/pmd_projectdocs_trivia_meaning.html b/pmd_projectdocs_trivia_meaning.html
index 1d429e5fc7..f1acdb08df 100644
--- a/pmd_projectdocs_trivia_meaning.html
+++ b/pmd_projectdocs_trivia_meaning.html
@@ -1457,7 +1457,7 @@ really know. We just think the letters sound good together.
diff --git a/pmd_projectdocs_trivia_news.html b/pmd_projectdocs_trivia_news.html
index 4f460b7dc4..b3c7d733be 100644
--- a/pmd_projectdocs_trivia_news.html
+++ b/pmd_projectdocs_trivia_news.html
@@ -1577,7 +1577,7 @@ interview with Ole-Martin and Tom
diff --git a/pmd_projectdocs_trivia_products.html b/pmd_projectdocs_trivia_products.html
index 0ccabd348b..3f7653cd15 100644
--- a/pmd_projectdocs_trivia_products.html
+++ b/pmd_projectdocs_trivia_products.html
@@ -1505,7 +1505,7 @@ to catch web app security problems. Thanks to Joseph Hemler for the props!
diff --git a/pmd_projectdocs_trivia_similarprojects.html b/pmd_projectdocs_trivia_similarprojects.html
index cef7499f49..40d111bbc8 100644
--- a/pmd_projectdocs_trivia_similarprojects.html
+++ b/pmd_projectdocs_trivia_similarprojects.html
@@ -1512,7 +1512,7 @@ only for maven project.
diff --git a/pmd_release_notes.html b/pmd_release_notes.html
index 84610e60a8..8faf05f64d 100644
--- a/pmd_release_notes.html
+++ b/pmd_release_notes.html
@@ -1430,6 +1430,17 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
New and noteworthy
+Modified rules
+
+
+ - The Java rule
CompareObjectsWithEquals
has now a new property
+typesThatCompareByReference
. With that property, you can configure types, that should be whitelisted
+for comparison by reference. By default, java.lang.Enum
and java.lang.Class
are allowed, but
+you could add custom types here.
+Additionally comparisons against constants are allowed now. This makes the rule less noisy when two constants
+are compared. Constants are identified by looking for an all-caps identifier.
+
+
Fixed Issues
@@ -1446,6 +1457,12 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
- #3266: [java] LocalVariableCouldBeFinal: false negatives with interfaces, anon classes
+ java-errorprone
+
+
API Changes
@@ -1468,7 +1485,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_release_notes_old.html b/pmd_release_notes_old.html
index 8235f22562..6c5ececa42 100644
--- a/pmd_release_notes_old.html
+++ b/pmd_release_notes_old.html
@@ -13707,7 +13707,7 @@ Added new HTML report format
diff --git a/pmd_rules_apex.html b/pmd_rules_apex.html
index 0c8f6507cf..061656ce28 100644
--- a/pmd_rules_apex.html
+++ b/pmd_rules_apex.html
@@ -1653,7 +1653,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_apex_bestpractices.html b/pmd_rules_apex_bestpractices.html
index 89d681196b..7ebc912e05 100644
--- a/pmd_rules_apex_bestpractices.html
+++ b/pmd_rules_apex_bestpractices.html
@@ -1953,7 +1953,7 @@ Therefore delegate the triggers work to a regular class (often called Trigger ha
diff --git a/pmd_rules_apex_codestyle.html b/pmd_rules_apex_codestyle.html
index 42d6240a42..3b4182c8e9 100644
--- a/pmd_rules_apex_codestyle.html
+++ b/pmd_rules_apex_codestyle.html
@@ -2526,7 +2526,7 @@ controlled from the rest.
diff --git a/pmd_rules_apex_design.html b/pmd_rules_apex_design.html
index f45dfd5838..e9294d72ca 100644
--- a/pmd_rules_apex_design.html
+++ b/pmd_rules_apex_design.html
@@ -2483,7 +2483,7 @@ city/state/zip fields could park them within a single Address field.
diff --git a/pmd_rules_apex_documentation.html b/pmd_rules_apex_documentation.html
index eebbdebc96..f50c488027 100644
--- a/pmd_rules_apex_documentation.html
+++ b/pmd_rules_apex_documentation.html
@@ -1537,7 +1537,7 @@ order as the method signature.
diff --git a/pmd_rules_apex_errorprone.html b/pmd_rules_apex_errorprone.html
index 17f2a9af27..c8ab488719 100644
--- a/pmd_rules_apex_errorprone.html
+++ b/pmd_rules_apex_errorprone.html
@@ -2240,7 +2240,7 @@ dealing with legacy code.
diff --git a/pmd_rules_apex_performance.html b/pmd_rules_apex_performance.html
index 16e79ec518..904b6d9599 100644
--- a/pmd_rules_apex_performance.html
+++ b/pmd_rules_apex_performance.html
@@ -1710,7 +1710,7 @@ by the more general rule
diff --git a/pmd_rules_apex_security.html b/pmd_rules_apex_security.html
index 5f25f2a0b0..eb964fb94f 100644
--- a/pmd_rules_apex_security.html
+++ b/pmd_rules_apex_security.html
@@ -2129,7 +2129,7 @@ to avoid XSS attacks.
diff --git a/pmd_rules_ecmascript.html b/pmd_rules_ecmascript.html
index ffa8d43870..14be4034f7 100644
--- a/pmd_rules_ecmascript.html
+++ b/pmd_rules_ecmascript.html
@@ -1528,7 +1528,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_ecmascript_bestpractices.html b/pmd_rules_ecmascript_bestpractices.html
index 0a2aa857c9..1f3ddab691 100644
--- a/pmd_rules_ecmascript_bestpractices.html
+++ b/pmd_rules_ecmascript_bestpractices.html
@@ -1652,7 +1652,7 @@ It also improves readability, if the base is given.
diff --git a/pmd_rules_ecmascript_codestyle.html b/pmd_rules_ecmascript_codestyle.html
index 757ec7bf1b..636a245d3a 100644
--- a/pmd_rules_ecmascript_codestyle.html
+++ b/pmd_rules_ecmascript_codestyle.html
@@ -1794,7 +1794,7 @@ will never execute. This is a bug, or extremely poor style.
diff --git a/pmd_rules_ecmascript_errorprone.html b/pmd_rules_ecmascript_errorprone.html
index 08cd779c2c..fceccde147 100644
--- a/pmd_rules_ecmascript_errorprone.html
+++ b/pmd_rules_ecmascript_errorprone.html
@@ -1575,7 +1575,7 @@ precision in a floating point number. This may result in numeric calculations b
diff --git a/pmd_rules_java.html b/pmd_rules_java.html
index 60379e7b6a..f19c80e80a 100644
--- a/pmd_rules_java.html
+++ b/pmd_rules_java.html
@@ -1655,7 +1655,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
CloneMethodReturnTypeMustMatchClassName: If a class implements cloneable the return type of the method clone() must be the class name. Tha…
CloneThrowsCloneNotSupportedException: The method clone() should throw a CloneNotSupportedException.
CloseResource: Ensure that resources (like ‘java.sql.Connection’, ‘java.sql.Statement’, and ‘java.sql.ResultSet’…
- CompareObjectsWithEquals: Use equals() to compare object references; avoid comparing them with ==.
+ CompareObjectsWithEquals: Use ‘equals()’ to compare object references; avoid comparing them with ‘==’. Since comparing obje…
ConstructorCallsOverridableMethod: Calling overridable methods during construction poses a risk of invoking methods on an incomplete…
DataflowAnomalyAnalysis: Deprecated The dataflow analysis tracks local definitions, undefinitions and references to variables on diff…
DetachedTestCase: The method appears to be a test case since it has public or default visibility, non-static access…
@@ -2092,7 +2092,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_java_bestpractices.html b/pmd_rules_java_bestpractices.html
index 837f43a012..fde6aca3fc 100644
--- a/pmd_rules_java_bestpractices.html
+++ b/pmd_rules_java_bestpractices.html
@@ -3796,7 +3796,7 @@ a block
{}
is sufficie
diff --git a/pmd_rules_java_codestyle.html b/pmd_rules_java_codestyle.html
index e79e832e46..eb3d8fb8b3 100644
--- a/pmd_rules_java_codestyle.html
+++ b/pmd_rules_java_codestyle.html
@@ -4697,7 +4697,7 @@ by the rule
diff --git a/pmd_rules_java_documentation.html b/pmd_rules_java_documentation.html
index 11d60c0eac..2898248974 100644
--- a/pmd_rules_java_documentation.html
+++ b/pmd_rules_java_documentation.html
@@ -1764,7 +1764,7 @@ empty methods.
diff --git a/pmd_rules_java_errorprone.html b/pmd_rules_java_errorprone.html
index ee696aaafa..b649521d4d 100644
--- a/pmd_rules_java_errorprone.html
+++ b/pmd_rules_java_errorprone.html
@@ -2773,19 +2773,30 @@ just remove "AutoCloseable" from the types.
Priority: Medium (3)
-Use equals() to compare object references; avoid comparing them with ==.
+Use equals()
to compare object references; avoid comparing them with ==
.
+
+Since comparing objects with named constants is useful in some cases (eg, when
+defining constants for sentinel values), the rule ignores comparisons against
+fields with all-caps name (eg this == SENTINEL
), which is a common naming
+convention for constant fields.
+
+You may allow some types to be compared by reference by listing the exceptions
+in the typesThatCompareByReference
property.
This rule is defined by the following XPath expression:
//EqualityExpression
- [count(PrimaryExpression
- [pmd-java:typeIs('java.lang.Object')]
- [not(pmd-java:typeIs('java.lang.Enum'))]
- [not(pmd-java:typeIs('java.lang.Class'))]) = 2
+ [count(
+ PrimaryExpression[pmd-java:typeIs('java.lang.Object')]
+ [not(some $t in $typesThatCompareByReference satisfies pmd-java:typeIs($t))]
+ ) = 2
]
[not(PrimaryExpression[PrimaryPrefix/@ThisModifier = true()]
[not(PrimarySuffix)]
[ancestor::MethodDeclaration[@Name = 'equals']])
]
+ (: Is not a field access with an all-caps identifier :)
+ [not(PrimaryExpression[not(PrimarySuffix) and PrimaryPrefix/Name[upper-case(@Image)=@Image]
+ or PrimaryExpression/PrimarySuffix[last()][upper-case(@Image)=@Image]])]
Example(s):
@@ -2797,10 +2808,39 @@ just remove "AutoCloseable" from the types.
}
-
diff --git a/pmd_rules_java_design.html b/pmd_rules_java_design.html
index 97da2a502f..7d4fa34c71 100644
--- a/pmd_rules_java_design.html
+++ b/pmd_rules_java_design.html
@@ -3988,7 +3988,7 @@ remember to add a private constructor to prevent instantiation.
Use this rule by referencing it:
+This rule has the following properties:
+
+
+
+
+ Name
+ Default Value
+ Description
+ Multivalued
+
+
+
+
+ typesThatCompareByReference
+ java.lang.Enum , java.lang.Class
+ List of canonical type names for which reference comparison is allowed.
+ yes. Delimiter is ‘,’.
+
+
+
+
+Use this rule with the default properties by just referencing it:
<rule ref="category/java/errorprone.xml/CompareObjectsWithEquals" />
+Use this rule and customize it:
+<rule ref="category/java/errorprone.xml/CompareObjectsWithEquals">
+ <properties>
+ <property name="typesThatCompareByReference" value="java.lang.Enum,java.lang.Class" />
+ </properties>
+</rule>
+
+
ConstructorCallsOverridableMethod
Since: PMD 1.04
@@ -5226,7 +5266,7 @@ Thread.currentThread().getContextClassLoader() instead.
diff --git a/pmd_rules_java_multithreading.html b/pmd_rules_java_multithreading.html
index 7238aac1d5..e79ac06b04 100644
--- a/pmd_rules_java_multithreading.html
+++ b/pmd_rules_java_multithreading.html
@@ -1950,7 +1950,7 @@ one is chosen. The thread chosen is arbitrary; thus its usually safer to call n
diff --git a/pmd_rules_java_performance.html b/pmd_rules_java_performance.html
index 649c06721f..e3bead56a2 100644
--- a/pmd_rules_java_performance.html
+++ b/pmd_rules_java_performance.html
@@ -2578,7 +2578,7 @@ or StringBuffer.toString().length() == …
diff --git a/pmd_rules_java_security.html b/pmd_rules_java_security.html
index 5df53b25a1..21d24f3241 100644
--- a/pmd_rules_java_security.html
+++ b/pmd_rules_java_security.html
@@ -1501,7 +1501,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp.html b/pmd_rules_jsp.html
index fc5897f7d6..b07c281ae9 100644
--- a/pmd_rules_jsp.html
+++ b/pmd_rules_jsp.html
@@ -1510,7 +1510,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_bestpractices.html b/pmd_rules_jsp_bestpractices.html
index 9b31b1a0a9..e49ae5ba6f 100644
--- a/pmd_rules_jsp_bestpractices.html
+++ b/pmd_rules_jsp_bestpractices.html
@@ -1543,7 +1543,7 @@ little other purpose. Consider switching to JSP comments.
diff --git a/pmd_rules_jsp_codestyle.html b/pmd_rules_jsp_codestyle.html
index 94a2dd6ee1..b873384c38 100644
--- a/pmd_rules_jsp_codestyle.html
+++ b/pmd_rules_jsp_codestyle.html
@@ -1460,7 +1460,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_design.html b/pmd_rules_jsp_design.html
index 492e0c88f2..64e1ee5e65 100644
--- a/pmd_rules_jsp_design.html
+++ b/pmd_rules_jsp_design.html
@@ -1551,7 +1551,7 @@ onload=calcDays;
diff --git a/pmd_rules_jsp_errorprone.html b/pmd_rules_jsp_errorprone.html
index 7302e0e2fb..ae120c5438 100644
--- a/pmd_rules_jsp_errorprone.html
+++ b/pmd_rules_jsp_errorprone.html
@@ -1472,7 +1472,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_jsp_security.html b/pmd_rules_jsp_security.html
index c4fbd112fe..ff6060378e 100644
--- a/pmd_rules_jsp_security.html
+++ b/pmd_rules_jsp_security.html
@@ -1493,7 +1493,7 @@ ${fn:escapeXml(expression)}
<!-- instead, escape it --&g
diff --git a/pmd_rules_modelica.html b/pmd_rules_modelica.html
index a5b8d9c14b..f7b3f10b24 100644
--- a/pmd_rules_modelica.html
+++ b/pmd_rules_modelica.html
@@ -1459,7 +1459,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_modelica_bestpractices.html b/pmd_rules_modelica_bestpractices.html
index 7967234784..cb3eb0c5f5 100644
--- a/pmd_rules_modelica_bestpractices.html
+++ b/pmd_rules_modelica_bestpractices.html
@@ -1535,7 +1535,7 @@ end Example;
diff --git a/pmd_rules_plsql.html b/pmd_rules_plsql.html
index 6604969b8b..df698c373c 100644
--- a/pmd_rules_plsql.html
+++ b/pmd_rules_plsql.html
@@ -1539,7 +1539,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_plsql_bestpractices.html b/pmd_rules_plsql_bestpractices.html
index 9569a99bf2..05d5c61800 100644
--- a/pmd_rules_plsql_bestpractices.html
+++ b/pmd_rules_plsql_bestpractices.html
@@ -1501,7 +1501,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_plsql_codestyle.html b/pmd_rules_plsql_codestyle.html
index 5a8d3baa5b..2a86f2d33d 100644
--- a/pmd_rules_plsql_codestyle.html
+++ b/pmd_rules_plsql_codestyle.html
@@ -1785,7 +1785,7 @@ https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#BABIIHBJ
diff --git a/pmd_rules_plsql_design.html b/pmd_rules_plsql_design.html
index 1a7f18047c..9aa0a85cd9 100644
--- a/pmd_rules_plsql_design.html
+++ b/pmd_rules_plsql_design.html
@@ -2425,7 +2425,7 @@ have more fine grained objects.
diff --git a/pmd_rules_plsql_errorprone.html b/pmd_rules_plsql_errorprone.html
index 015d4f8796..55ec2d7f41 100644
--- a/pmd_rules_plsql_errorprone.html
+++ b/pmd_rules_plsql_errorprone.html
@@ -1570,7 +1570,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_pom.html b/pmd_rules_pom.html
index 8b98a04125..c4eda48706 100644
--- a/pmd_rules_pom.html
+++ b/pmd_rules_pom.html
@@ -1472,7 +1472,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_pom_errorprone.html b/pmd_rules_pom_errorprone.html
index dc7f092179..7fd17cc88c 100644
--- a/pmd_rules_pom_errorprone.html
+++ b/pmd_rules_pom_errorprone.html
@@ -1541,7 +1541,7 @@ By far the most common problem is the use of ${project.version} in a BOM or pare
diff --git a/pmd_rules_scala.html b/pmd_rules_scala.html
index ebbfe8cf45..9099f17898 100644
--- a/pmd_rules_scala.html
+++ b/pmd_rules_scala.html
@@ -1454,7 +1454,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vf.html b/pmd_rules_vf.html
index 405df049d7..89c3b230d3 100644
--- a/pmd_rules_vf.html
+++ b/pmd_rules_vf.html
@@ -1473,7 +1473,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vf_security.html b/pmd_rules_vf_security.html
index f03625fa4b..1119c4f80e 100644
--- a/pmd_rules_vf_security.html
+++ b/pmd_rules_vf_security.html
@@ -1516,7 +1516,7 @@ on
diff --git a/pmd_rules_vm.html b/pmd_rules_vm.html
index 2d50544ba6..5b89a0df43 100644
--- a/pmd_rules_vm.html
+++ b/pmd_rules_vm.html
@@ -1493,7 +1493,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_bestpractices.html b/pmd_rules_vm_bestpractices.html
index 5ad0e2469e..8a7a2cbad3 100644
--- a/pmd_rules_vm_bestpractices.html
+++ b/pmd_rules_vm_bestpractices.html
@@ -1469,7 +1469,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_design.html b/pmd_rules_vm_design.html
index d9b713f268..c7a4ae45fc 100644
--- a/pmd_rules_vm_design.html
+++ b/pmd_rules_vm_design.html
@@ -1583,7 +1583,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm_errorprone.html b/pmd_rules_vm_errorprone.html
index a74f68dea4..ac180a3e35 100644
--- a/pmd_rules_vm_errorprone.html
+++ b/pmd_rules_vm_errorprone.html
@@ -1469,7 +1469,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xml.html b/pmd_rules_xml.html
index 9a66e99c29..db2582b53f 100644
--- a/pmd_rules_xml.html
+++ b/pmd_rules_xml.html
@@ -1471,7 +1471,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xml_errorprone.html b/pmd_rules_xml_errorprone.html
index 794c3c20c1..1e465a1194 100644
--- a/pmd_rules_xml_errorprone.html
+++ b/pmd_rules_xml_errorprone.html
@@ -1473,7 +1473,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl.html b/pmd_rules_xsl.html
index d1c50a14b9..492a0de6da 100644
--- a/pmd_rules_xsl.html
+++ b/pmd_rules_xsl.html
@@ -1479,7 +1479,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl_codestyle.html b/pmd_rules_xsl_codestyle.html
index 1cb94312ab..88e5923fdd 100644
--- a/pmd_rules_xsl_codestyle.html
+++ b/pmd_rules_xsl_codestyle.html
@@ -1464,7 +1464,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_xsl_performance.html b/pmd_rules_xsl_performance.html
index 1d29598980..7d348f42cc 100644
--- a/pmd_rules_xsl_performance.html
+++ b/pmd_rules_xsl_performance.html
@@ -1507,7 +1507,7 @@ cutting through 100% of the document.
diff --git a/pmd_userdocs_best_practices.html b/pmd_userdocs_best_practices.html
index a8d9a5c1ae..d3377c0247 100644
--- a/pmd_userdocs_best_practices.html
+++ b/pmd_userdocs_best_practices.html
@@ -1476,7 +1476,7 @@ and soon you’ll be fixing problems much faster.
diff --git a/pmd_userdocs_cli_reference.html b/pmd_userdocs_cli_reference.html
index 52c24f28cb..0591f5ecfe 100644
--- a/pmd_userdocs_cli_reference.html
+++ b/pmd_userdocs_cli_reference.html
@@ -2095,7 +2095,7 @@ All formats are described at PMD Repo
diff --git a/pmd_userdocs_configuring_rules.html b/pmd_userdocs_configuring_rules.html
index 2204f93425..ab8a402a05 100644
--- a/pmd_userdocs_configuring_rules.html
+++ b/pmd_userdocs_configuring_rules.html
@@ -1502,7 +1502,7 @@ will cause the rule to be ignored.
diff --git a/pmd_userdocs_cpd.html b/pmd_userdocs_cpd.html
index fbae24c777..fd1a2c6b35 100644
--- a/pmd_userdocs_cpd.html
+++ b/pmd_userdocs_cpd.html
@@ -2481,7 +2481,7 @@ the comment based approach will be extended to those of them that can support it
diff --git a/pmd_userdocs_cpd_report_formats.html b/pmd_userdocs_cpd_report_formats.html
index f555923230..0b8878fd50 100644
--- a/pmd_userdocs_cpd_report_formats.html
+++ b/pmd_userdocs_cpd_report_formats.html
@@ -1653,7 +1653,7 @@ is shown in the console. You can then click on the filenames to jump to the sour
diff --git a/pmd_userdocs_extending_defining_properties.html b/pmd_userdocs_extending_defining_properties.html
index 0be6f3e1cb..053439bd80 100644
--- a/pmd_userdocs_extending_defining_properties.html
+++ b/pmd_userdocs_extending_defining_properties.html
@@ -1652,7 +1652,7 @@ are supported.
diff --git a/pmd_userdocs_extending_designer_reference.html b/pmd_userdocs_extending_designer_reference.html
index 00744e4953..981301454d 100644
--- a/pmd_userdocs_extending_designer_reference.html
+++ b/pmd_userdocs_extending_designer_reference.html
@@ -1691,7 +1691,7 @@ The available language modules are those on the classpath of the app’s JVM. Th
diff --git a/pmd_userdocs_extending_metrics_howto.html b/pmd_userdocs_extending_metrics_howto.html
index a273504d0c..5b0ad4326e 100644
--- a/pmd_userdocs_extending_metrics_howto.html
+++ b/pmd_userdocs_extending_metrics_howto.html
@@ -1777,7 +1777,7 @@ classes. Here’s the default behaviour by language and type of metric:
diff --git a/pmd_userdocs_extending_rule_guidelines.html b/pmd_userdocs_extending_rule_guidelines.html
index 0d94396c88..a0951f0a53 100644
--- a/pmd_userdocs_extending_rule_guidelines.html
+++ b/pmd_userdocs_extending_rule_guidelines.html
@@ -1481,7 +1481,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_userdocs_extending_testing.html b/pmd_userdocs_extending_testing.html
index 158d9d87dc..72d3cffccc 100644
--- a/pmd_userdocs_extending_testing.html
+++ b/pmd_userdocs_extending_testing.html
@@ -1757,7 +1757,7 @@ will be executed twice.
diff --git a/pmd_userdocs_extending_writing_java_rules.html b/pmd_userdocs_extending_writing_java_rules.html
index 2122bc4411..eb47477a1f 100644
--- a/pmd_userdocs_extending_writing_java_rules.html
+++ b/pmd_userdocs_extending_writing_java_rules.html
@@ -1609,7 +1609,7 @@ the file
diff --git a/pmd_userdocs_extending_writing_pmd_rules.html b/pmd_userdocs_extending_writing_pmd_rules.html
index 856204890a..15d288c523 100644
--- a/pmd_userdocs_extending_writing_pmd_rules.html
+++ b/pmd_userdocs_extending_writing_pmd_rules.html
@@ -1473,7 +1473,7 @@ your rule
diff --git a/pmd_userdocs_extending_writing_rules_intro.html b/pmd_userdocs_extending_writing_rules_intro.html
index 95e114e691..295674adb3 100644
--- a/pmd_userdocs_extending_writing_rules_intro.html
+++ b/pmd_userdocs_extending_writing_rules_intro.html
@@ -1591,7 +1591,7 @@ your rule
diff --git a/pmd_userdocs_extending_writing_xpath_rules.html b/pmd_userdocs_extending_writing_xpath_rules.html
index b56df4b086..1c315cfa26 100644
--- a/pmd_userdocs_extending_writing_xpath_rules.html
+++ b/pmd_userdocs_extending_writing_xpath_rules.html
@@ -1871,7 +1871,7 @@ deprecated and whose usages should be replaced with uses of
diff --git a/pmd_userdocs_incremental_analysis.html b/pmd_userdocs_incremental_analysis.html
index 2019d04c84..454f42b81f 100644
--- a/pmd_userdocs_incremental_analysis.html
+++ b/pmd_userdocs_incremental_analysis.html
@@ -1556,7 +1556,7 @@ same execution classpath).
diff --git a/pmd_userdocs_installation.html b/pmd_userdocs_installation.html
index 76206973a3..d90e4f3450 100644
--- a/pmd_userdocs_installation.html
+++ b/pmd_userdocs_installation.html
@@ -1609,7 +1609,7 @@ directory or a jar or zip file containing the sources.
diff --git a/pmd_userdocs_making_rulesets.html b/pmd_userdocs_making_rulesets.html
index 6e075e06c9..cbedacb78e 100644
--- a/pmd_userdocs_making_rulesets.html
+++ b/pmd_userdocs_making_rulesets.html
@@ -1559,7 +1559,7 @@ a single rule reference.
diff --git a/pmd_userdocs_report_formats.html b/pmd_userdocs_report_formats.html
index 0d616106ff..90ce4aa8a2 100644
--- a/pmd_userdocs_report_formats.html
+++ b/pmd_userdocs_report_formats.html
@@ -1822,7 +1822,7 @@ The output directory must exist. If not specified, the html files are created in
diff --git a/pmd_userdocs_suppressing_warnings.html b/pmd_userdocs_suppressing_warnings.html
index c0dbb7a9a7..359103229b 100644
--- a/pmd_userdocs_suppressing_warnings.html
+++ b/pmd_userdocs_suppressing_warnings.html
@@ -1660,7 +1660,7 @@ violations you wish to suppress. XPath queries are explained in
diff --git a/pmd_userdocs_tools.html b/pmd_userdocs_tools.html
index 2a29793d00..9cbda5d42c 100644
--- a/pmd_userdocs_tools.html
+++ b/pmd_userdocs_tools.html
@@ -1900,7 +1900,7 @@ the (blank Command Results) document, and then confirming that, “yes, I do rea
diff --git a/pmd_userdocs_tools_ant.html b/pmd_userdocs_tools_ant.html
index 98471f1d6f..ca0f4a498c 100644
--- a/pmd_userdocs_tools_ant.html
+++ b/pmd_userdocs_tools_ant.html
@@ -1879,7 +1879,7 @@ To prevent this from happening, increase the maximum memory usable by ant using
diff --git a/pmd_userdocs_tools_ci.html b/pmd_userdocs_tools_ci.html
index 3b39cbd680..7e61f03850 100644
--- a/pmd_userdocs_tools_ci.html
+++ b/pmd_userdocs_tools_ci.html
@@ -1466,7 +1466,7 @@ result of the PMD maven plugin.
diff --git a/pmd_userdocs_tools_gradle.html b/pmd_userdocs_tools_gradle.html
index 822deb1bb1..fb03ba2197 100644
--- a/pmd_userdocs_tools_gradle.html
+++ b/pmd_userdocs_tools_gradle.html
@@ -1509,7 +1509,7 @@ with the property
toolVersion
diff --git a/pmd_userdocs_tools_java_api.html b/pmd_userdocs_tools_java_api.html
index 832ce3c978..b57f75c155 100644
--- a/pmd_userdocs_tools_java_api.html
+++ b/pmd_userdocs_tools_java_api.html
@@ -1725,7 +1725,7 @@ Then you can check the rendered output.
diff --git a/pmd_userdocs_tools_maven.html b/pmd_userdocs_tools_maven.html
index 652ca7fa7c..3a29cead68 100644
--- a/pmd_userdocs_tools_maven.html
+++ b/pmd_userdocs_tools_maven.html
@@ -1724,7 +1724,7 @@ the previous paragraph. Add the following property to your project now:
diff --git a/tag_devdocs.html b/tag_devdocs.html
index 658988c574..a8d8f4e75a 100644
--- a/tag_devdocs.html
+++ b/tag_devdocs.html
@@ -1954,7 +1954,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_extending.html b/tag_extending.html
index b088788f06..19143d4203 100644
--- a/tag_extending.html
+++ b/tag_extending.html
@@ -1978,7 +1978,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_getting_started.html b/tag_getting_started.html
index 9276352749..36b9a39986 100644
--- a/tag_getting_started.html
+++ b/tag_getting_started.html
@@ -1912,7 +1912,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_languages.html b/tag_languages.html
index c076d6c2d8..685b42a715 100644
--- a/tag_languages.html
+++ b/tag_languages.html
@@ -1888,7 +1888,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_metrics.html b/tag_metrics.html
index 44621fcb15..5724422a47 100644
--- a/tag_metrics.html
+++ b/tag_metrics.html
@@ -1912,7 +1912,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_release_notes.html b/tag_release_notes.html
index c6eb129cbf..1f99408ffd 100644
--- a/tag_release_notes.html
+++ b/tag_release_notes.html
@@ -1888,7 +1888,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_rule_references.html b/tag_rule_references.html
index ebd7362203..b0e87e61b6 100644
--- a/tag_rule_references.html
+++ b/tag_rule_references.html
@@ -1960,7 +1960,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_tools.html b/tag_tools.html
index 2f3c669dc5..ec87462331 100644
--- a/tag_tools.html
+++ b/tag_tools.html
@@ -1924,7 +1924,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_troubleshooting.html b/tag_troubleshooting.html
index 0e0059dba7..b42ad7a9bf 100644
--- a/tag_troubleshooting.html
+++ b/tag_troubleshooting.html
@@ -1888,7 +1888,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_userdocs.html b/tag_userdocs.html
index ab0129e380..5db08e090e 100644
--- a/tag_userdocs.html
+++ b/tag_userdocs.html
@@ -2044,7 +2044,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_userdocs_extending_your_first_rule.html b/pmd_userdocs_extending_your_first_rule.html
index 13238e9be2..493ad94043 100644
--- a/pmd_userdocs_extending_your_first_rule.html
+++ b/pmd_userdocs_extending_your_first_rule.html
@@ -1580,7 +1580,7 @@ of a rule of type XPathRule, which is how XPath rules are implemented.
diff --git a/pmd_devdocs_pmdtester.html b/pmd_devdocs_pmdtester.html
index 9f1c2b8bf2..aa6b4a1c0c 100644
--- a/pmd_devdocs_pmdtester.html
+++ b/pmd_devdocs_pmdtester.html
@@ -1463,7 +1463,7 @@ Regression difference reports are commented back to the PR for the reviewer’s