This is an automated email from the ASF dual-hosted git repository. adangel pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-pmd-plugin.git
The following commit(s) were added to refs/heads/master by this push: new 01310e6 [MPMD-371] Using two ruleset files with same name in different directories (#127) 01310e6 is described below commit 01310e673a8ce0bb80084aa147998a801bb24e8f Author: Bruno Harbulot <br...@distributedmatter.net> AuthorDate: Fri May 26 08:15:56 2023 +0100 [MPMD-371] Using two ruleset files with same name in different directories (#127) To avoid this problem, we can prefix each target filename with its position in the list of rulesets (e.g. 001-filename.xml, 002-filename.xml, 003-other-filename.xml...) --- .../MPMD-296-rulesetsTargetDirectory/verify.groovy | 6 +-- src/it/MPMD-323-multi-module-basedir/verify.groovy | 4 +- src/it/multi-module/verify.bsh | 4 +- .../org/apache/maven/plugins/pmd/PmdReport.java | 10 ++-- .../apache/maven/plugins/pmd/PmdReportTest.java | 59 ++++++++++++---------- 5 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/it/MPMD-296-rulesetsTargetDirectory/verify.groovy b/src/it/MPMD-296-rulesetsTargetDirectory/verify.groovy index f14b837..5435ee0 100644 --- a/src/it/MPMD-296-rulesetsTargetDirectory/verify.groovy +++ b/src/it/MPMD-296-rulesetsTargetDirectory/verify.groovy @@ -22,13 +22,13 @@ File buildLog = new File( basedir, 'build.log' ) assert buildLog.exists() // default configuration -File defaultRuleset = new File( basedir, 'target/pmd/rulesets/maven-pmd-plugin-default.xml' ) +File defaultRuleset = new File( basedir, 'target/pmd/rulesets/001-maven-pmd-plugin-default.xml' ) assert defaultRuleset.exists() // backwards compatible configuration (profile customTargetOld) -File customTargetOld = new File( basedir, 'target/maven-pmd-plugin-default.xml' ) +File customTargetOld = new File( basedir, 'target/001-maven-pmd-plugin-default.xml' ) assert customTargetOld.exists() // custom configuration (profile customTarget) -File customTarget = new File( basedir, 'target/pmd-custom/maven-pmd-plugin-default.xml' ) +File customTarget = new File( basedir, 'target/pmd-custom/001-maven-pmd-plugin-default.xml' ) assert customTarget.exists() diff --git a/src/it/MPMD-323-multi-module-basedir/verify.groovy b/src/it/MPMD-323-multi-module-basedir/verify.groovy index 81c034e..998f44c 100644 --- a/src/it/MPMD-323-multi-module-basedir/verify.groovy +++ b/src/it/MPMD-323-multi-module-basedir/verify.groovy @@ -17,8 +17,8 @@ * under the License. */ -String[] files = [ "module-a/target/pmd.xml", "module-a/target/pmd/rulesets/ruleset.xml", - "module-b/target/pmd.xml", "module-b/target/pmd/rulesets/ruleset.xml" ] +String[] files = [ "module-a/target/pmd.xml", "module-a/target/pmd/rulesets/001-ruleset.xml", + "module-b/target/pmd.xml", "module-b/target/pmd/rulesets/001-ruleset.xml" ] files.each { diff --git a/src/it/multi-module/verify.bsh b/src/it/multi-module/verify.bsh index fbede4e..16e644d 100644 --- a/src/it/multi-module/verify.bsh +++ b/src/it/multi-module/verify.bsh @@ -59,14 +59,14 @@ for ( String path : paths ) // check PMD rulesets target copy -File rule = new File( basedir, "mod-1/target/pmd/rulesets/latin-1.xml" ); +File rule = new File( basedir, "mod-1/target/pmd/rulesets/002-latin-1.xml" ); String nonascii = "-CHARS: \u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF\u00BC\u00BD\u00BE\u00A4"; String content = FileUtils.fileRead( rule, "ISO-8859-1" ); if ( content.indexOf( nonascii ) < 0 ) { throw new IOException( "non-ascii content corrupted in Latin1." ); } -rule = new File( basedir, "mod-1/target/pmd/rulesets/utf-8.xml" ); +rule = new File( basedir, "mod-1/target/pmd/rulesets/001-utf-8.xml" ); content = FileUtils.fileRead( rule, "UTF-8" ); if ( content.indexOf( nonascii ) < 0 ) { diff --git a/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java b/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java index dab00bb..168b454 100644 --- a/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java +++ b/src/main/java/org/apache/maven/plugins/pmd/PmdReport.java @@ -410,7 +410,7 @@ public class PmdReport extends AbstractPmdReport { String set = rulesets[idx]; getLog().debug("Preparing ruleset: " + set); String rulesetFilename = determineRulesetFilename(set); - File ruleset = locator.getResourceAsFile(rulesetFilename, getLocationTemp(set)); + File ruleset = locator.getResourceAsFile(rulesetFilename, getLocationTemp(set, idx + 1)); if (null == ruleset) { throw new MavenReportException("Could not resolve " + set); } @@ -451,9 +451,10 @@ public class PmdReport extends AbstractPmdReport { * Convenience method to get the location of the specified file name. * * @param name the name of the file whose location is to be resolved + * @param position position in the list of rulesets (1-based) * @return a String that contains the absolute file name of the file */ - protected String getLocationTemp(String name) { + protected String getLocationTemp(String name, int position) { String loc = name; if (loc.indexOf('/') != -1) { loc = loc.substring(loc.lastIndexOf('/') + 1); @@ -468,9 +469,10 @@ public class PmdReport extends AbstractPmdReport { // replace all occurrences of the following characters: ? : & = % loc = loc.replaceAll("[\\?\\:\\&\\=\\%]", "_"); - if (!loc.endsWith(".xml")) { - loc = loc + ".xml"; + if (loc.endsWith(".xml")) { + loc = loc.substring(0, loc.length() - 4); } + loc = String.format("%03d-%s.xml", position, loc); getLog().debug("Before: " + name + " After: " + loc); return loc; diff --git a/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java b/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java index 7bde404..e3f4b3e 100644 --- a/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java +++ b/src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java @@ -67,7 +67,7 @@ public class PmdReportTest extends AbstractPmdReportTestCase { // check if the rulesets, that have been applied, have been copied generatedFile = new File( getBasedir(), - "target/test/unit/default-configuration/target/pmd/rulesets/maven-pmd-plugin-default.xml"); + "target/test/unit/default-configuration/target/pmd/rulesets/001-maven-pmd-plugin-default.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // check if there's a link to the JXR files @@ -159,16 +159,16 @@ public class PmdReportTest extends AbstractPmdReportTestCase { assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // these are the rulesets, that have been applied... - generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml"); + generatedFile = new File( + getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-bestpractices.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/codestyle.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-codestyle.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/errorprone.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-errorprone.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); String str = readFile(generatedReport); @@ -231,20 +231,21 @@ public class PmdReportTest extends AbstractPmdReportTestCase { assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // the resolved and extracted rulesets - generatedFile = new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/basic.xml"); + generatedFile = + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-basic.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/imports.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-unusedcode.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/unusedcode.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-imports.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = new File( getBasedir(), - "target/test/unit/default-configuration/target/pmd/rulesets/export_format_pmd_language_java_name_Sonar_2520way.xml"); + "target/test/unit/default-configuration/target/pmd/rulesets/004-export_format_pmd_language_java_name_Sonar_2520way.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // check if there's a link to the JXR files @@ -278,7 +279,9 @@ public class PmdReportTest extends AbstractPmdReportTestCase { File generatedFile = new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd.csv"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); - generatedFile = new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd/rulesets/custom.xml"); + // 001-maven-pmd-plugin-default.xml is also generated, so we get 002-custom.xml + generatedFile = + new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd/rulesets/002-custom.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // check if custom ruleset was applied @@ -419,9 +422,10 @@ public class PmdReportTest extends AbstractPmdReportTestCase { assertEquals( "locationTemp is not correctly encoding filename", - "export_format_pmd_language_java_name_some_2520name.xml", + "001-export_format_pmd_language_java_name_some_2520name.xml", mojo.getLocationTemp( - "http://nemo.sonarsource.org/sonar/profiles/export?format=pmd&language=java&name=some%2520name")); + "http://nemo.sonarsource.org/sonar/profiles/export?format=pmd&language=java&name=some%2520name", + 1)); } /** @@ -485,23 +489,24 @@ public class PmdReportTest extends AbstractPmdReportTestCase { assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); // these are the rulesets, that have been applied... - generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml"); + generatedFile = new File( + getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-bestpractices.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/codestyle.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-codestyle.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); - generatedFile = new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/design.xml"); + generatedFile = + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-design.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/errorprone.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/004-errorprone.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/security.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/005-security.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); String str = readFile(generatedReport); @@ -659,30 +664,30 @@ public class PmdReportTest extends AbstractPmdReportTestCase { generateReport(mojo, testPom); // these are the rulesets, that have been copied to target/pmd/rulesets - File generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/custom-rules.xml"); + File generatedFile = new File( + getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-custom-rules.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); - generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml"); + generatedFile = new File( + getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-bestpractices.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); - generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/java-design.xml"); + generatedFile = new File( + getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-java-design.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = new File( getBasedir(), - "target/test/unit/default-configuration/target/pmd/rulesets/export_format_pmd_language_java_name_Sonar_2520way.xml"); + "target/test/unit/default-configuration/target/pmd/rulesets/004-export_format_pmd_language_java_name_Sonar_2520way.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = - new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/my-ruleset.xml"); + new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/005-my-ruleset.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); generatedFile = new File( getBasedir(), - "target/test/unit/default-configuration/target/pmd/rulesets/InProgressRuleset.xml_at_refs_2Fheads_2Fmaster.xml"); + "target/test/unit/default-configuration/target/pmd/rulesets/006-InProgressRuleset.xml_at_refs_2Fheads_2Fmaster.xml"); assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath())); mockServer.stop();