From 96c30916873759cc9ac53c36c0c584fee00b5988 Mon Sep 17 00:00:00 2001 From: jborgers Date: Fri, 26 Jul 2024 18:03:17 +0200 Subject: [PATCH] Migrate java rules to pmd 7.x.x #309: 1 complex rule migrated, number 5: AvoidImplicitlyRecompilingRegex --- .../resources/category/java/common.xml | 4 +- src/main/resources/category/java/common.xml | 91 ++++++------------- .../AvoidImplicitlyRecompilingRegexTest.java | 0 .../xml/AvoidImplicitlyRecompilingRegex.xml | 8 +- 4 files changed, 34 insertions(+), 69 deletions(-) rename src/{test-todo => test/java/com/jpinpoint/perf/lang}/java/ruleset/common/AvoidImplicitlyRecompilingRegexTest.java (100%) rename src/{test-todo/resources-todo => test/resources/com/jpinpoint/perf}/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml (97%) diff --git a/src/main-todo/resources/category/java/common.xml b/src/main-todo/resources/category/java/common.xml index 594309d1..2559ea7a 100644 --- a/src/main-todo/resources/category/java/common.xml +++ b/src/main-todo/resources/category/java/common.xml @@ -133,7 +133,7 @@ or preceding-sibling::SwitchLabel[@Default=true()]) - A regular expression is compiled implicitly on every invocation. Problem: this can be expensive, depending on the length of the regular expression. @@ -224,7 +224,7 @@ String good_replaceInnerLineBreakBySpace() { } ]]> - + - + + + diff --git a/src/test-todo/java/ruleset/common/AvoidImplicitlyRecompilingRegexTest.java b/src/test/java/com/jpinpoint/perf/lang/java/ruleset/common/AvoidImplicitlyRecompilingRegexTest.java similarity index 100% rename from src/test-todo/java/ruleset/common/AvoidImplicitlyRecompilingRegexTest.java rename to src/test/java/com/jpinpoint/perf/lang/java/ruleset/common/AvoidImplicitlyRecompilingRegexTest.java diff --git a/src/test-todo/resources-todo/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml b/src/test/resources/com/jpinpoint/perf/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml similarity index 97% rename from src/test-todo/resources-todo/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml rename to src/test/resources/com/jpinpoint/perf/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml index cc7b0210..6de10712 100644 --- a/src/test-todo/resources-todo/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml +++ b/src/test/resources/com/jpinpoint/perf/lang/java/ruleset/common/xml/AvoidImplicitlyRecompilingRegex.xml @@ -5,8 +5,8 @@ xsi:schemaLocation="http://pmd.sourceforge.net/rule-tests http://pmd.sourceforge.net/rule-tests_1_0_0.xsd"> violation: Avoid implicit recompiling of regular expressions - 27 - 18,19,20, 24,25,27, 31,32,33, 39,40,41,43,45, 52,53,54, 59,60,61,61,64, 70, 76, 82,83,84 + 26 + 18,19,20, 24,25,27, 31,32,33, 39,40,41,43,45, 52,53,54, 59,60,61,64, 70, 76, 82,83,84 why 2x?, just once: The matches to violate is String.matches, not PathMatcher.matches. With pmd7 easy to get right. FileSystem fs = FileSystems.getDefault(); p = fs.getPathMatcher(PAT_STRING); // bad: violation @@ -303,7 +303,7 @@ class Foo { .stream() .findFirst() .toString() - .replaceAll("\\s+", "-"); // missing violation + .replaceAll("\\s+", "-"); // bad, missing violation } } ]]>