From ecbe614a705f8257f21c4d0ee36454c28d40bbf9 Mon Sep 17 00:00:00 2001
From: "Travis CI (pmd-bot)"
Signature<N>
from a
diff --git a/pmd_devdocs_roadmap.html b/pmd_devdocs_roadmap.html
index 5f6b5d00c6..fcf7209d5e 100644
--- a/pmd_devdocs_roadmap.html
+++ b/pmd_devdocs_roadmap.html
@@ -1440,7 +1440,7 @@ This should be configurable on per Rule basis similar to TR and SymbolTable.
diff --git a/pmd_devdocs_writing_documentation.html b/pmd_devdocs_writing_documentation.html
index dbc016998f..feb5241e50 100644
--- a/pmd_devdocs_writing_documentation.html
+++ b/pmd_devdocs_writing_documentation.html
@@ -1556,7 +1556,7 @@ by specifying
-Dpmd.doc.checkExternalLinks=true<
diff --git a/pmd_java_metrics_index.html b/pmd_java_metrics_index.html
index fa46f3e973..299f804020 100644
--- a/pmd_java_metrics_index.html
+++ b/pmd_java_metrics_index.html
@@ -1610,7 +1610,7 @@ In Proceedings ACM Symposium on Software Reusability, 1995.
diff --git a/pmd_languages_jsp.html b/pmd_languages_jsp.html
index a2f1bca40a..d5e4435951 100644
--- a/pmd_languages_jsp.html
+++ b/pmd_languages_jsp.html
@@ -1350,7 +1350,7 @@ contains only “.java” files, JSP files obviously will not be checked.
diff --git a/pmd_next_major_development.html b/pmd_next_major_development.html
index 52d953aea7..0ef9406076 100644
--- a/pmd_next_major_development.html
+++ b/pmd_next_major_development.html
@@ -1785,7 +1785,7 @@ will be removed with PMD 7.0.0. The rule is replaced by the more general
diff --git a/pmd_projectdocs_committers_merging_pull_requests.html b/pmd_projectdocs_committers_merging_pull_requests.html
index a9765aa66f..72996bacbb 100644
--- a/pmd_projectdocs_committers_merging_pull_requests.html
+++ b/pmd_projectdocs_committers_merging_pull_requests.html
@@ -1468,7 +1468,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 08f56d272b..308ff18e12 100644
--- a/pmd_projectdocs_committers_releasing.html
+++ b/pmd_projectdocs_committers_releasing.html
@@ -1500,7 +1500,7 @@ and
mvn versions:set -DnewVersion=5.7.0-SNAPSHOT
diff --git a/pmd_projectdocs_credits.html b/pmd_projectdocs_credits.html
index b7bdf59064..a97b4468a5 100644
--- a/pmd_projectdocs_credits.html
+++ b/pmd_projectdocs_credits.html
@@ -1811,7 +1811,7 @@ PMD scoreboard formulas, pmd-dcpd optimizations
diff --git a/pmd_projectdocs_faq.html b/pmd_projectdocs_faq.html
index 12c595f66c..607ec31d68 100644
--- a/pmd_projectdocs_faq.html
+++ b/pmd_projectdocs_faq.html
@@ -1344,7 +1344,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 2b626cfb0a..e933929fff 100644
--- a/pmd_projectdocs_trivia_meaning.html
+++ b/pmd_projectdocs_trivia_meaning.html
@@ -1313,7 +1313,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 66d17846ac..0eb9121b83 100644
--- a/pmd_projectdocs_trivia_news.html
+++ b/pmd_projectdocs_trivia_news.html
@@ -1400,7 +1400,7 @@ interview with Ole-Martin and Tom
diff --git a/pmd_projectdocs_trivia_products.html b/pmd_projectdocs_trivia_products.html
index 79ea3f39ee..009fc2f573 100644
--- a/pmd_projectdocs_trivia_products.html
+++ b/pmd_projectdocs_trivia_products.html
@@ -1360,7 +1360,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 55e2dbde76..77aa97a189 100644
--- a/pmd_projectdocs_trivia_similarprojects.html
+++ b/pmd_projectdocs_trivia_similarprojects.html
@@ -1368,7 +1368,7 @@ only for maven project.
diff --git a/pmd_release_notes.html b/pmd_release_notes.html
index 6eaaa1ca32..c15e88a43f 100644
--- a/pmd_release_notes.html
+++ b/pmd_release_notes.html
@@ -1323,6 +1323,14 @@ the annotation has been forgotten. Because of that those test cases are never ex
Do-While-Loops and While-Loops that can be simplified since they use simply
true
or false
as their
loop condition.
+
+ The new Apex rule ApexAssertionsShouldIncludeMessage
(apex-bestpractices
)
+searches for assertions in unit tests and checks, whether they use a message argument.
+
+
+ The new Apex rule ApexUnitTestMethodShouldHaveIsTestAnnotation
(apex-bestpractices
)
+searches for methods in test classes, which are missing the @IsTest
annotation.
+
Fixed Issues
@@ -1360,6 +1368,7 @@ quickstart ruleset rulesets/apex/quickstart.xml<
External Contributions
+ - #1694: [apex] New rules for test method and assert statements - triandicAnt
- #1697: [doc] Update CPD documentation - Matías Fraga
- #1704: [java] Added AvoidUncheckedExceptionsInSignatures Rule - Bhanu Prakash Pamidi
- #1706: [java] Add DetachedTestCase rule - David Burström
@@ -1384,7 +1393,7 @@ quickstart ruleset rulesets/apex/quickstart.xml<
diff --git a/pmd_release_notes_old.html b/pmd_release_notes_old.html
index 18a2f191db..8c82283e5d 100644
--- a/pmd_release_notes_old.html
+++ b/pmd_release_notes_old.html
@@ -9526,7 +9526,7 @@ Added new HTML report format
diff --git a/pmd_rules_apex.html b/pmd_rules_apex.html
index a4dc621d18..acd0dfdfa7 100644
--- a/pmd_rules_apex.html
+++ b/pmd_rules_apex.html
@@ -1287,6 +1287,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
- ApexUnitTestClassShouldHaveAsserts: Apex unit tests should include at least one assertion. This makes the tests more robust, and usi…
+ - ApexUnitTestMethodShouldHaveIsTestAnnotation: Apex test methods should have @isTest annotation. As testMethod keyword is deprecated,…
- ApexUnitTestShouldNotUseSeeAllDataTrue: Apex unit tests should not use @isTest(seeAllData=true) because it opens up the existing database…
- AvoidGlobalModifier: Global classes should be avoided (especially in managed packages) as they can never be deleted or…
- AvoidLogicInTrigger: As triggers do not allow methods like regular classes they are less flexible and suited to apply …
@@ -1497,7 +1498,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 1a433bbe47..e2d578b2fc 100644
--- a/pmd_rules_apex_bestpractices.html
+++ b/pmd_rules_apex_bestpractices.html
@@ -5,7 +5,7 @@
-
+
Best Practices | PMD Source Code Analyzer
@@ -1281,6 +1281,68 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
+ApexUnitTestAssertStatement
+
+Since: PMD 6.13.0
+
+Priority: Medium (3)
+
+The second parameter of System.assert/third parameter of System.assertEquals/System.assertNotEquals is a message.
+Having a second/third parameter provides more information and makes it easier to debug the test failure and improves the readability of test output.
+
+This rule is defined by the following Java class: net.sourceforge.pmd.lang.apex.rule.bestpractices.ApexAssertionsShouldIncludeMessageRule
+
+Example(s):
+
+@isTest
+public class Foo {
+ @isTest
+ static void methodATest() {
+ System.assertNotEquals('123', o.StageName); // not good
+ System.assertEquals('123', o.StageName, 'Opportunity stageName is wrong.'); // good
+ System.assert(o.isClosed); // not good
+ System.assert(o.isClosed, 'Opportunity is not closed.'); // good
+ }
+}
+
+
+This rule has the following properties:
+
+
+
+
+ Name
+ Default Value
+ Description
+ Multivalued
+
+
+
+
+ cc_categories
+ Style
+ Code Climate Categories
+ yes. Delimiter is ‘|’.
+
+
+ cc_remediation_points_multiplier
+ 1
+ Code Climate Remediation Points multiplier
+ no
+
+
+ cc_block_highlighting
+ false
+ Code Climate Block Highlighting
+ no
+
+
+
+
+Use this rule by referencing it:
+<rule ref="category/apex/bestpractices.xml/ApexUnitTestAssertStatement" />
+
+
ApexUnitTestClassShouldHaveAsserts
Since: PMD 5.5.1
@@ -1342,6 +1404,70 @@ with messages provide the developer a clearer idea of what the test does.
<rule ref="category/apex/bestpractices.xml/ApexUnitTestClassShouldHaveAsserts" />
+ApexUnitTestMethodShouldHaveIsTestAnnotation
+
+Since: PMD 6.13.0
+
+Priority: Medium (3)
+
+Apex test methods should have @isTest annotation.
+As testMethod keyword is deprecated, Salesforce advices to use @isTest annotation for test class/methods.
+
+This rule is defined by the following Java class: net.sourceforge.pmd.lang.apex.rule.bestpractices.ApexUnitTestMethodShouldHaveIsTestAnnotationRule
+
+Example(s):
+
+@isTest
+private class ATest {
+ @isTest
+ static void methodATest() {
+ }
+ static void methodBTest() {
+ }
+ @isTest static void methodCTest() {
+ }
+ private void fetchData() {
+ }
+}
+
+
+This rule has the following properties:
+
+
+
+
+ Name
+ Default Value
+ Description
+ Multivalued
+
+
+
+
+ cc_categories
+ Style
+ Code Climate Categories
+ yes. Delimiter is ‘|’.
+
+
+ cc_remediation_points_multiplier
+ 1
+ Code Climate Remediation Points multiplier
+ no
+
+
+ cc_block_highlighting
+ false
+ Code Climate Block Highlighting
+ no
+
+
+
+
+Use this rule by referencing it:
+<rule ref="category/apex/bestpractices.xml/ApexUnitTestMethodShouldHaveIsTestAnnotation" />
+
+
ApexUnitTestShouldNotUseSeeAllDataTrue
Since: PMD 5.5.1
@@ -1542,7 +1668,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 ad8ea48d21..3388a5bbcf 100644
--- a/pmd_rules_apex_codestyle.html
+++ b/pmd_rules_apex_codestyle.html
@@ -1891,7 +1891,7 @@ controlled from the rest.
diff --git a/pmd_rules_apex_design.html b/pmd_rules_apex_design.html
index a875ead446..e48023d40e 100644
--- a/pmd_rules_apex_design.html
+++ b/pmd_rules_apex_design.html
@@ -2220,7 +2220,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 bc62407084..cb155276eb 100644
--- a/pmd_rules_apex_documentation.html
+++ b/pmd_rules_apex_documentation.html
@@ -1370,7 +1370,7 @@ order as the method signature.
diff --git a/pmd_rules_apex_errorprone.html b/pmd_rules_apex_errorprone.html
index 998a793192..748dfc8897 100644
--- a/pmd_rules_apex_errorprone.html
+++ b/pmd_rules_apex_errorprone.html
@@ -1855,7 +1855,7 @@ a while loop that does a lot in the exit expression, rewrite it to make it clear
diff --git a/pmd_rules_apex_performance.html b/pmd_rules_apex_performance.html
index ac41f7294a..f4c1bffec1 100644
--- a/pmd_rules_apex_performance.html
+++ b/pmd_rules_apex_performance.html
@@ -1473,7 +1473,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_apex_security.html b/pmd_rules_apex_security.html
index c8975df0b3..2d4f45fa77 100644
--- a/pmd_rules_apex_security.html
+++ b/pmd_rules_apex_security.html
@@ -1959,7 +1959,7 @@ to avoid XSS attacks.
diff --git a/pmd_rules_ecmascript.html b/pmd_rules_ecmascript.html
index 55d00b9027..cf733063ab 100644
--- a/pmd_rules_ecmascript.html
+++ b/pmd_rules_ecmascript.html
@@ -1386,7 +1386,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 be65b22056..a078c6cbe7 100644
--- a/pmd_rules_ecmascript_bestpractices.html
+++ b/pmd_rules_ecmascript_bestpractices.html
@@ -1508,7 +1508,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 5b24ff8005..8b5109901d 100644
--- a/pmd_rules_ecmascript_codestyle.html
+++ b/pmd_rules_ecmascript_codestyle.html
@@ -1650,7 +1650,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 08dc873283..c443f61407 100644
--- a/pmd_rules_ecmascript_errorprone.html
+++ b/pmd_rules_ecmascript_errorprone.html
@@ -1432,7 +1432,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 b50fa0f716..feecbccdde 100644
--- a/pmd_rules_java.html
+++ b/pmd_rules_java.html
@@ -1939,7 +1939,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 cbec8157dd..71316797a7 100644
--- a/pmd_rules_java_bestpractices.html
+++ b/pmd_rules_java_bestpractices.html
@@ -3246,7 +3246,7 @@ a block
{}
is sufficient.
diff --git a/pmd_rules_java_codestyle.html b/pmd_rules_java_codestyle.html
index a79b2401c5..14533ec901 100644
--- a/pmd_rules_java_codestyle.html
+++ b/pmd_rules_java_codestyle.html
@@ -4378,7 +4378,7 @@ by the rule
diff --git a/pmd_rules_java_documentation.html b/pmd_rules_java_documentation.html
index 9f57700a68..4850bf50c6 100644
--- a/pmd_rules_java_documentation.html
+++ b/pmd_rules_java_documentation.html
@@ -1605,7 +1605,7 @@ empty methods.
diff --git a/pmd_rules_java_errorprone.html b/pmd_rules_java_errorprone.html
index c5a9f3ca87..49c270efd1 100644
--- a/pmd_rules_java_errorprone.html
+++ b/pmd_rules_java_errorprone.html
@@ -4928,7 +4928,7 @@ Thread.currentThread().getContextClassLoader() instead.
diff --git a/pmd_rules_java_multithreading.html b/pmd_rules_java_multithreading.html
index 517c8b1a4a..fd18fd1a0a 100644
--- a/pmd_rules_java_multithreading.html
+++ b/pmd_rules_java_multithreading.html
@@ -1702,7 +1702,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 82517eb791..56b75c6c5f 100644
--- a/pmd_rules_java_performance.html
+++ b/pmd_rules_java_performance.html
@@ -2312,7 +2312,7 @@ or StringBuffer.toString().length() == …
diff --git a/pmd_rules_java_security.html b/pmd_rules_java_security.html
index 848cc18ba3..11f582f173 100644
--- a/pmd_rules_java_security.html
+++ b/pmd_rules_java_security.html
@@ -1357,7 +1357,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 b2127341d2..3c28d27099 100644
--- a/pmd_rules_jsp.html
+++ b/pmd_rules_jsp.html
@@ -1368,7 +1368,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 6033b95a52..57dfb60359 100644
--- a/pmd_rules_jsp_bestpractices.html
+++ b/pmd_rules_jsp_bestpractices.html
@@ -1399,7 +1399,7 @@ little other purpose. Consider switching to JSP comments.
diff --git a/pmd_rules_jsp_codestyle.html b/pmd_rules_jsp_codestyle.html
index 0faf32e23d..da9d296c27 100644
--- a/pmd_rules_jsp_codestyle.html
+++ b/pmd_rules_jsp_codestyle.html
@@ -1316,7 +1316,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 cf8e0ddeb6..6215d04d0b 100644
--- a/pmd_rules_jsp_design.html
+++ b/pmd_rules_jsp_design.html
@@ -1407,7 +1407,7 @@ response.setHeader("Pragma", "No-cache");
diff --git a/pmd_rules_jsp_errorprone.html b/pmd_rules_jsp_errorprone.html
index 36b122152f..d8b621485f 100644
--- a/pmd_rules_jsp_errorprone.html
+++ b/pmd_rules_jsp_errorprone.html
@@ -1328,7 +1328,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 8c9813f3a9..bfcfeceb87 100644
--- a/pmd_rules_jsp_security.html
+++ b/pmd_rules_jsp_security.html
@@ -1349,7 +1349,7 @@ ${fn:escapeXml(expression)} <!-- instead, escape it -->
diff --git a/pmd_rules_plsql.html b/pmd_rules_plsql.html
index 36a1ed9eda..7b2204d105 100644
--- a/pmd_rules_plsql.html
+++ b/pmd_rules_plsql.html
@@ -1395,7 +1395,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 22a9f0d7a9..b2ab90e557 100644
--- a/pmd_rules_plsql_bestpractices.html
+++ b/pmd_rules_plsql_bestpractices.html
@@ -1357,7 +1357,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 4e1f6725ab..f3a2042621 100644
--- a/pmd_rules_plsql_codestyle.html
+++ b/pmd_rules_plsql_codestyle.html
@@ -1540,7 +1540,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 58aef072d1..4866e5061b 100644
--- a/pmd_rules_plsql_design.html
+++ b/pmd_rules_plsql_design.html
@@ -2281,7 +2281,7 @@ have more fine grained objects.
diff --git a/pmd_rules_plsql_errorprone.html b/pmd_rules_plsql_errorprone.html
index c509710b10..e7c77215d7 100644
--- a/pmd_rules_plsql_errorprone.html
+++ b/pmd_rules_plsql_errorprone.html
@@ -1428,7 +1428,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 df9487f6ea..2ee014cee5 100644
--- a/pmd_rules_pom.html
+++ b/pmd_rules_pom.html
@@ -1330,7 +1330,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 28600336d4..b84ab03dfb 100644
--- a/pmd_rules_pom_errorprone.html
+++ b/pmd_rules_pom_errorprone.html
@@ -1397,7 +1397,7 @@ By far the most common problem is the use of ${project.version} in a BOM or pare
diff --git a/pmd_rules_vf.html b/pmd_rules_vf.html
index 46edde1bc5..8832181383 100644
--- a/pmd_rules_vf.html
+++ b/pmd_rules_vf.html
@@ -1330,7 +1330,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 88d11df82a..7d9df73b3e 100644
--- a/pmd_rules_vf_security.html
+++ b/pmd_rules_vf_security.html
@@ -1335,7 +1335,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_rules_vm.html b/pmd_rules_vm.html
index 8331adefc6..b0bfd43bd0 100644
--- a/pmd_rules_vm.html
+++ b/pmd_rules_vm.html
@@ -1351,7 +1351,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 6bc5fcf3d1..dc4ebfa163 100644
--- a/pmd_rules_vm_bestpractices.html
+++ b/pmd_rules_vm_bestpractices.html
@@ -1325,7 +1325,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 3c6690c37f..0aa4a9acf4 100644
--- a/pmd_rules_vm_design.html
+++ b/pmd_rules_vm_design.html
@@ -1439,7 +1439,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 5368130e9f..00b7236eb7 100644
--- a/pmd_rules_vm_errorprone.html
+++ b/pmd_rules_vm_errorprone.html
@@ -1325,7 +1325,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 a232efec2b..520af09ae5 100644
--- a/pmd_rules_xml.html
+++ b/pmd_rules_xml.html
@@ -1329,7 +1329,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 b01536ec82..c5727b51c8 100644
--- a/pmd_rules_xml_errorprone.html
+++ b/pmd_rules_xml_errorprone.html
@@ -1318,7 +1318,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 ebe789bccd..04fc4cb508 100644
--- a/pmd_rules_xsl.html
+++ b/pmd_rules_xsl.html
@@ -1337,7 +1337,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 eb8e8750e5..12cb944bec 100644
--- a/pmd_rules_xsl_codestyle.html
+++ b/pmd_rules_xsl_codestyle.html
@@ -1320,7 +1320,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 5adf6124a3..cbccb9a71c 100644
--- a/pmd_rules_xsl_performance.html
+++ b/pmd_rules_xsl_performance.html
@@ -1363,7 +1363,7 @@ cutting through 100% of the document.
diff --git a/pmd_userdocs_best_practices.html b/pmd_userdocs_best_practices.html
index d1261272a5..6c02a0d153 100644
--- a/pmd_userdocs_best_practices.html
+++ b/pmd_userdocs_best_practices.html
@@ -1332,7 +1332,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 2df6600cdd..fea5b3d340 100644
--- a/pmd_userdocs_cli_reference.html
+++ b/pmd_userdocs_cli_reference.html
@@ -2017,7 +2017,7 @@ which can be specified with the
-property
diff --git a/pmd_userdocs_configuring_rules.html b/pmd_userdocs_configuring_rules.html
index d034f88a66..ecf1345aea 100644
--- a/pmd_userdocs_configuring_rules.html
+++ b/pmd_userdocs_configuring_rules.html
@@ -1358,7 +1358,7 @@ will cause the rule to be ignored.
diff --git a/pmd_userdocs_cpd.html b/pmd_userdocs_cpd.html
index f2f684885a..1bc9d55105 100644
--- a/pmd_userdocs_cpd.html
+++ b/pmd_userdocs_cpd.html
@@ -2303,7 +2303,7 @@ the comment based approach will be extended to those of them that can support it
diff --git a/pmd_userdocs_extending_defining_properties.html b/pmd_userdocs_extending_defining_properties.html
index b0247a7d20..1f00732570 100644
--- a/pmd_userdocs_extending_defining_properties.html
+++ b/pmd_userdocs_extending_defining_properties.html
@@ -1561,7 +1561,7 @@ There are several things to notice here:
diff --git a/pmd_userdocs_extending_metrics_howto.html b/pmd_userdocs_extending_metrics_howto.html
index c20fa3441b..91502af837 100644
--- a/pmd_userdocs_extending_metrics_howto.html
+++ b/pmd_userdocs_extending_metrics_howto.html
@@ -1633,7 +1633,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 255a58b903..caace8bc1a 100644
--- a/pmd_userdocs_extending_rule_guidelines.html
+++ b/pmd_userdocs_extending_rule_guidelines.html
@@ -1375,7 +1375,7 @@ the category and add the XML test data in the correct xml subpackage.
diff --git a/pmd_userdocs_extending_testing.html b/pmd_userdocs_extending_testing.html
index 336a075b84..8a219a74b1 100644
--- a/pmd_userdocs_extending_testing.html
+++ b/pmd_userdocs_extending_testing.html
@@ -1604,7 +1604,7 @@ will be executed twice.
diff --git a/pmd_userdocs_extending_writing_pmd_rules.html b/pmd_userdocs_extending_writing_pmd_rules.html
index 528b8f4df4..d2dad16e32 100644
--- a/pmd_userdocs_extending_writing_pmd_rules.html
+++ b/pmd_userdocs_extending_writing_pmd_rules.html
@@ -1623,7 +1623,7 @@ of the component type. These can be repeated for arrays of arrays
diff --git a/pmd_userdocs_extending_writing_xpath_rules.html b/pmd_userdocs_extending_writing_xpath_rules.html
index 742223f6f5..a1aed0f469 100644
--- a/pmd_userdocs_extending_writing_xpath_rules.html
+++ b/pmd_userdocs_extending_writing_xpath_rules.html
@@ -1491,7 +1491,7 @@ public class ExampleCode {
diff --git a/pmd_userdocs_incremental_analysis.html b/pmd_userdocs_incremental_analysis.html
index 387f845ce5..1dbc2d8630 100644
--- a/pmd_userdocs_incremental_analysis.html
+++ b/pmd_userdocs_incremental_analysis.html
@@ -1327,7 +1327,7 @@ few runs, you can use the
diff --git a/pmd_userdocs_making_rulesets.html b/pmd_userdocs_making_rulesets.html
index 0173d4d2b3..c284181bf1 100644
--- a/pmd_userdocs_making_rulesets.html
+++ b/pmd_userdocs_making_rulesets.html
@@ -1405,7 +1405,7 @@ category, then PMD would fail before starting the analysis.
diff --git a/pmd_userdocs_suppressing_warnings.html b/pmd_userdocs_suppressing_warnings.html
index b964cc3a56..cceb2ceace 100644
--- a/pmd_userdocs_suppressing_warnings.html
+++ b/pmd_userdocs_suppressing_warnings.html
@@ -1495,7 +1495,7 @@ violations you wish to suppress. XPath queries are explained in
diff --git a/pmd_userdocs_tools.html b/pmd_userdocs_tools.html
index 46eaf26437..7feedc3705 100644
--- a/pmd_userdocs_tools.html
+++ b/pmd_userdocs_tools.html
@@ -1756,7 +1756,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 adc56983db..6d537dd4bd 100644
--- a/pmd_userdocs_tools_ant.html
+++ b/pmd_userdocs_tools_ant.html
@@ -1641,7 +1641,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 2b67a477d1..08d2811328 100644
--- a/pmd_userdocs_tools_ci.html
+++ b/pmd_userdocs_tools_ci.html
@@ -1322,7 +1322,7 @@ result of the PMD maven plugin.
diff --git a/pmd_userdocs_tools_maven.html b/pmd_userdocs_tools_maven.html
index 21c4b3b059..20cf396b87 100644
--- a/pmd_userdocs_tools_maven.html
+++ b/pmd_userdocs_tools_maven.html
@@ -1543,7 +1543,7 @@ the previous paragraph. Add the following property to your project now:
diff --git a/search.json b/search.json
index b95e931393..8682636225 100644
--- a/search.json
+++ b/search.json
@@ -247,6 +247,24 @@
"url": "pmd_rules_apex_bestpractices.html#avoidlogicintrigger",
"summary": "Rules which enforce generally accepted best practices."
}
+,
+
+{
+"title": "ApexUnitTestAssertStatement (Apex, Best Practices)",
+"tags": "",
+"keywords": "ApexUnitTestAssertStatement",
+"url": "pmd_rules_apex_bestpractices.html#apexunittestassertstatement",
+"summary": "Rules which enforce generally accepted best practices."
+}
+,
+
+{
+"title": "ApexUnitTestMethodShouldHaveIsTestAnnotation (Apex, Best Practices)",
+"tags": "",
+"keywords": "ApexUnitTestMethodShouldHaveIsTestAnnotation",
+"url": "pmd_rules_apex_bestpractices.html#apexunittestmethodshouldhaveistestannotation",
+"summary": "Rules which enforce generally accepted best practices."
+}
diff --git a/tag_devdocs.html b/tag_devdocs.html
index 1f6f2f63fd..73eb0d61ff 100644
--- a/tag_devdocs.html
+++ b/tag_devdocs.html
@@ -1724,7 +1724,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_extending.html b/tag_extending.html
index b067a39729..b3278a1c88 100644
--- a/tag_extending.html
+++ b/tag_extending.html
@@ -1736,7 +1736,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 83eb31fc4b..236c729d6c 100644
--- a/tag_getting_started.html
+++ b/tag_getting_started.html
@@ -1688,7 +1688,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_languages.html b/tag_languages.html
index 38a173be50..d3958ace5c 100644
--- a/tag_languages.html
+++ b/tag_languages.html
@@ -1670,7 +1670,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_metrics.html b/tag_metrics.html
index ee806f954a..0d4490e9a1 100644
--- a/tag_metrics.html
+++ b/tag_metrics.html
@@ -1694,7 +1694,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 b2e612d2b7..68b938aea0 100644
--- a/tag_release_notes.html
+++ b/tag_release_notes.html
@@ -1670,7 +1670,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 103e2c11a8..78f307e252 100644
--- a/tag_rule_references.html
+++ b/tag_rule_references.html
@@ -1730,7 +1730,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_tools.html b/tag_tools.html
index a383569cb1..8c62173b9c 100644
--- a/tag_tools.html
+++ b/tag_tools.html
@@ -1694,7 +1694,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_troubleshooting.html b/tag_troubleshooting.html
index c9c89192d9..27a4957159 100644
--- a/tag_troubleshooting.html
+++ b/tag_troubleshooting.html
@@ -1670,7 +1670,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tag_userdocs.html b/tag_userdocs.html
index 418858acef..8cfdd05256 100644
--- a/tag_userdocs.html
+++ b/tag_userdocs.html
@@ -1778,7 +1778,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/titlepage/index.html b/titlepage/index.html
index 5b9ea59ffd..64098ba9ae 100644
--- a/titlepage/index.html
+++ b/titlepage/index.html
@@ -1281,7 +1281,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
- Last generated: March 22, 2019
+ Last generated: March 25, 2019
@@ -1311,7 +1311,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/tocpage/index.html b/tocpage/index.html
index 46078f5765..6b4a9bb749 100644
--- a/tocpage/index.html
+++ b/tocpage/index.html
@@ -1311,7 +1311,7 @@ $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3
diff --git a/pmd_userdocs_installation.html b/pmd_userdocs_installation.html
index 64007657b3..d86d880574 100644
--- a/pmd_userdocs_installation.html
+++ b/pmd_userdocs_installation.html
@@ -1465,7 +1465,7 @@ directory or a jar or zip file containing the sources.
diff --git a/pmd_rules_java_design.html b/pmd_rules_java_design.html
index 8e4a46cd09..2fa1c284b5 100644
--- a/pmd_rules_java_design.html
+++ b/pmd_rules_java_design.html
@@ -3808,7 +3808,7 @@ remember to add a private constructor to prevent instantiation.
diff --git a/pmd_devdocs_pmdtester.html b/pmd_devdocs_pmdtester.html
index 2cb78f0fe2..68a5f8519a 100644
--- a/pmd_devdocs_pmdtester.html
+++ b/pmd_devdocs_pmdtester.html
@@ -1319,7 +1319,7 @@ Regression difference reports are commented back to the PR for the reviewer’s