[MPMD-371] Using two ruleset files with same name in different directories #127
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
https://issues.apache.org/jira/browse/MPMD-371
Problem
In version 3.20.0 (without this patch), two PMD rulesets that have the same filename will overwrite each other when staged into the
${project.build.directory}/pmd/rulesets/
directory.In the following example, the two distinct
pmd-ruleset.xml
files will both be copied as${project.build.directory}/pmd/rulesets/pmd-ruleset.xml
, so the last copied will overwrite the first: only one of those files will be taken into account.Proposed solution
This patch prefixes the target filename with a counter, based on the position in the ruleset element.
For example:
This would create 3 files in
${project.build.directory}/pmd/rulesets/
:001-pmd-ruleset.xml
(copy of${project.basedir}/pmd-ruleset.xml
)002-other-pmd-ruleset.xml
(copy of${project.basedir}/otherfolder/other-pmd-ruleset.xml
)003-pmd-ruleset.xml
(copy of${project.basedir}/otherfolder/pmd-ruleset.xml
, now not overwriting the first one)This only required changes a few lines in
PmdReport#getLocationTemp(...)
andPmdReport.resolveRulesets(...)
.The rest of the changes is just about adapting the expected locations in those tests . (The expected filename is dependent on the order specified in the POM's
<rulesets />
element.)The number format is
%03d
, so we assume we'll have fewer than 1000 ruleset files. (This may help if ruleset ordering ever mattered. An alternative would be to remove zero-padding.)Following this checklist to help us incorporate your
contribution quickly and easily:
for the change (usually before you start working on it). Trivial changes like typos do not
require a JIRA issue. Your pull request should address just this issue, without
pulling in other changes.
[MPMD-XXX] - Subject of the JIRA Ticket
,where you replace
MPMD-XXX
with the appropriate JIRA issue. Best practiceis to use the JIRA issue title in the pull request title and in the first line of the
commit message.
mvn clean verify
to make sure basic checks pass. A more thorough check willbe performed on your pull request automatically.
mvn -Prun-its clean verify
).If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.