Skip to content

Commit 01310e6

Browse files
authored
[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...)
1 parent 5a21037 commit 01310e6

File tree

5 files changed

+45
-38
lines changed

5 files changed

+45
-38
lines changed

src/it/MPMD-296-rulesetsTargetDirectory/verify.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ File buildLog = new File( basedir, 'build.log' )
2222
assert buildLog.exists()
2323

2424
// default configuration
25-
File defaultRuleset = new File( basedir, 'target/pmd/rulesets/maven-pmd-plugin-default.xml' )
25+
File defaultRuleset = new File( basedir, 'target/pmd/rulesets/001-maven-pmd-plugin-default.xml' )
2626
assert defaultRuleset.exists()
2727

2828
// backwards compatible configuration (profile customTargetOld)
29-
File customTargetOld = new File( basedir, 'target/maven-pmd-plugin-default.xml' )
29+
File customTargetOld = new File( basedir, 'target/001-maven-pmd-plugin-default.xml' )
3030
assert customTargetOld.exists()
3131

3232
// custom configuration (profile customTarget)
33-
File customTarget = new File( basedir, 'target/pmd-custom/maven-pmd-plugin-default.xml' )
33+
File customTarget = new File( basedir, 'target/pmd-custom/001-maven-pmd-plugin-default.xml' )
3434
assert customTarget.exists()

src/it/MPMD-323-multi-module-basedir/verify.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
* under the License.
1818
*/
1919

20-
String[] files = [ "module-a/target/pmd.xml", "module-a/target/pmd/rulesets/ruleset.xml",
21-
"module-b/target/pmd.xml", "module-b/target/pmd/rulesets/ruleset.xml" ]
20+
String[] files = [ "module-a/target/pmd.xml", "module-a/target/pmd/rulesets/001-ruleset.xml",
21+
"module-b/target/pmd.xml", "module-b/target/pmd/rulesets/001-ruleset.xml" ]
2222

2323
files.each
2424
{

src/it/multi-module/verify.bsh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ for ( String path : paths )
5959

6060

6161
// check PMD rulesets target copy
62-
File rule = new File( basedir, "mod-1/target/pmd/rulesets/latin-1.xml" );
62+
File rule = new File( basedir, "mod-1/target/pmd/rulesets/002-latin-1.xml" );
6363
String nonascii = "-CHARS: \u00C4\u00D6\u00DC\u00E4\u00F6\u00FC\u00DF\u00BC\u00BD\u00BE\u00A4";
6464
String content = FileUtils.fileRead( rule, "ISO-8859-1" );
6565
if ( content.indexOf( nonascii ) < 0 )
6666
{
6767
throw new IOException( "non-ascii content corrupted in Latin1." );
6868
}
69-
rule = new File( basedir, "mod-1/target/pmd/rulesets/utf-8.xml" );
69+
rule = new File( basedir, "mod-1/target/pmd/rulesets/001-utf-8.xml" );
7070
content = FileUtils.fileRead( rule, "UTF-8" );
7171
if ( content.indexOf( nonascii ) < 0 )
7272
{

src/main/java/org/apache/maven/plugins/pmd/PmdReport.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ private List<String> resolveRulesets() throws MavenReportException {
410410
String set = rulesets[idx];
411411
getLog().debug("Preparing ruleset: " + set);
412412
String rulesetFilename = determineRulesetFilename(set);
413-
File ruleset = locator.getResourceAsFile(rulesetFilename, getLocationTemp(set));
413+
File ruleset = locator.getResourceAsFile(rulesetFilename, getLocationTemp(set, idx + 1));
414414
if (null == ruleset) {
415415
throw new MavenReportException("Could not resolve " + set);
416416
}
@@ -451,9 +451,10 @@ private String determineRulesetFilename(String ruleset) {
451451
* Convenience method to get the location of the specified file name.
452452
*
453453
* @param name the name of the file whose location is to be resolved
454+
* @param position position in the list of rulesets (1-based)
454455
* @return a String that contains the absolute file name of the file
455456
*/
456-
protected String getLocationTemp(String name) {
457+
protected String getLocationTemp(String name, int position) {
457458
String loc = name;
458459
if (loc.indexOf('/') != -1) {
459460
loc = loc.substring(loc.lastIndexOf('/') + 1);
@@ -468,9 +469,10 @@ protected String getLocationTemp(String name) {
468469
// replace all occurrences of the following characters: ? : & = %
469470
loc = loc.replaceAll("[\\?\\:\\&\\=\\%]", "_");
470471

471-
if (!loc.endsWith(".xml")) {
472-
loc = loc + ".xml";
472+
if (loc.endsWith(".xml")) {
473+
loc = loc.substring(0, loc.length() - 4);
473474
}
475+
loc = String.format("%03d-%s.xml", position, loc);
474476

475477
getLog().debug("Before: " + name + " After: " + loc);
476478
return loc;

src/test/java/org/apache/maven/plugins/pmd/PmdReportTest.java

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void testDefaultConfiguration() throws Exception {
6767
// check if the rulesets, that have been applied, have been copied
6868
generatedFile = new File(
6969
getBasedir(),
70-
"target/test/unit/default-configuration/target/pmd/rulesets/maven-pmd-plugin-default.xml");
70+
"target/test/unit/default-configuration/target/pmd/rulesets/001-maven-pmd-plugin-default.xml");
7171
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
7272

7373
// check if there's a link to the JXR files
@@ -159,16 +159,16 @@ public void testJavascriptConfiguration() throws Exception {
159159
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
160160

161161
// these are the rulesets, that have been applied...
162-
generatedFile =
163-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml");
162+
generatedFile = new File(
163+
getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-bestpractices.xml");
164164
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
165165

166166
generatedFile =
167-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/codestyle.xml");
167+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-codestyle.xml");
168168
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
169169

170170
generatedFile =
171-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/errorprone.xml");
171+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-errorprone.xml");
172172
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
173173

174174
String str = readFile(generatedReport);
@@ -231,20 +231,21 @@ public void testFileURL() throws Exception {
231231
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
232232

233233
// the resolved and extracted rulesets
234-
generatedFile = new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/basic.xml");
234+
generatedFile =
235+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-basic.xml");
235236
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
236237

237238
generatedFile =
238-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/imports.xml");
239+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-unusedcode.xml");
239240
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
240241

241242
generatedFile =
242-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/unusedcode.xml");
243+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-imports.xml");
243244
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
244245

245246
generatedFile = new File(
246247
getBasedir(),
247-
"target/test/unit/default-configuration/target/pmd/rulesets/export_format_pmd_language_java_name_Sonar_2520way.xml");
248+
"target/test/unit/default-configuration/target/pmd/rulesets/004-export_format_pmd_language_java_name_Sonar_2520way.xml");
248249
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
249250

250251
// check if there's a link to the JXR files
@@ -278,7 +279,9 @@ public void testCustomConfiguration() throws Exception {
278279
File generatedFile = new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd.csv");
279280
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
280281

281-
generatedFile = new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd/rulesets/custom.xml");
282+
// 001-maven-pmd-plugin-default.xml is also generated, so we get 002-custom.xml
283+
generatedFile =
284+
new File(getBasedir(), "target/test/unit/custom-configuration/target/pmd/rulesets/002-custom.xml");
282285
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
283286

284287
// check if custom ruleset was applied
@@ -419,9 +422,10 @@ public void testLocationTemp() throws Exception {
419422

420423
assertEquals(
421424
"locationTemp is not correctly encoding filename",
422-
"export_format_pmd_language_java_name_some_2520name.xml",
425+
"001-export_format_pmd_language_java_name_some_2520name.xml",
423426
mojo.getLocationTemp(
424-
"http://nemo.sonarsource.org/sonar/profiles/export?format=pmd&language=java&name=some%2520name"));
427+
"http://nemo.sonarsource.org/sonar/profiles/export?format=pmd&language=java&name=some%2520name",
428+
1));
425429
}
426430

427431
/**
@@ -485,23 +489,24 @@ public void testJspConfiguration() throws Exception {
485489
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
486490

487491
// these are the rulesets, that have been applied...
488-
generatedFile =
489-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml");
492+
generatedFile = new File(
493+
getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-bestpractices.xml");
490494
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
491495

492496
generatedFile =
493-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/codestyle.xml");
497+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-codestyle.xml");
494498
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
495499

496-
generatedFile = new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/design.xml");
500+
generatedFile =
501+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-design.xml");
497502
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
498503

499504
generatedFile =
500-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/errorprone.xml");
505+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/004-errorprone.xml");
501506
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
502507

503508
generatedFile =
504-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/security.xml");
509+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/005-security.xml");
505510
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
506511

507512
String str = readFile(generatedReport);
@@ -659,30 +664,30 @@ public void testPmdReportResolveRulesets() throws Exception {
659664
generateReport(mojo, testPom);
660665

661666
// these are the rulesets, that have been copied to target/pmd/rulesets
662-
File generatedFile =
663-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/custom-rules.xml");
667+
File generatedFile = new File(
668+
getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/001-custom-rules.xml");
664669
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
665670

666-
generatedFile =
667-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/bestpractices.xml");
671+
generatedFile = new File(
672+
getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/002-bestpractices.xml");
668673
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
669674

670-
generatedFile =
671-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/java-design.xml");
675+
generatedFile = new File(
676+
getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/003-java-design.xml");
672677
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
673678

674679
generatedFile = new File(
675680
getBasedir(),
676-
"target/test/unit/default-configuration/target/pmd/rulesets/export_format_pmd_language_java_name_Sonar_2520way.xml");
681+
"target/test/unit/default-configuration/target/pmd/rulesets/004-export_format_pmd_language_java_name_Sonar_2520way.xml");
677682
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
678683

679684
generatedFile =
680-
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/my-ruleset.xml");
685+
new File(getBasedir(), "target/test/unit/default-configuration/target/pmd/rulesets/005-my-ruleset.xml");
681686
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
682687

683688
generatedFile = new File(
684689
getBasedir(),
685-
"target/test/unit/default-configuration/target/pmd/rulesets/InProgressRuleset.xml_at_refs_2Fheads_2Fmaster.xml");
690+
"target/test/unit/default-configuration/target/pmd/rulesets/006-InProgressRuleset.xml_at_refs_2Fheads_2Fmaster.xml");
686691
assertTrue(FileUtils.fileExists(generatedFile.getAbsolutePath()));
687692

688693
mockServer.stop();

0 commit comments

Comments
 (0)