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();

Reply via email to