diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java index c8774fa28d..87a4f71f7b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java @@ -54,6 +54,8 @@ import net.sourceforge.pmd.util.IOUtil; *
*
true
if the feature should be enabled
+ *
+ * @see RuleSetFactoryCompatibility
+ */
+ public void setRuleSetFactoryCompatibilityEnabled(boolean ruleSetFactoryCompatibilityEnabled) {
+ this.ruleSetFactoryCompatibilityEnabled = ruleSetFactoryCompatibilityEnabled;
+ }
}
\ No newline at end of file
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RulesetsFactoryUtils.java b/pmd-core/src/main/java/net/sourceforge/pmd/RulesetsFactoryUtils.java
index 1ba017e78d..7a13d8fe8f 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/RulesetsFactoryUtils.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/RulesetsFactoryUtils.java
@@ -67,6 +67,9 @@ public final class RulesetsFactoryUtils {
public static RuleSetFactory getRulesetFactory(PMDConfiguration configuration) {
RuleSetFactory ruleSetFactory = new RuleSetFactory();
ruleSetFactory.setMinimumPriority(configuration.getMinimumPriority());
+ if (!configuration.isRuleSetFactoryCompatibilityEnabled()) {
+ ruleSetFactory.disableCompatibilityFilter();
+ }
return ruleSetFactory;
}
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/ant/PMDTask.java b/pmd-core/src/main/java/net/sourceforge/pmd/ant/PMDTask.java
index a6e3a6fee0..ba55fa1d7f 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/ant/PMDTask.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/ant/PMDTask.java
@@ -27,6 +27,7 @@ public class PMDTask extends Task {
private boolean shortFilenames;
private String suppressMarker;
private String rulesetFiles;
+ private boolean noRuleSetCompatibility;
private String encoding;
private int threads;
private int minimumPriority;
@@ -236,4 +237,11 @@ public class PMDTask extends Task {
return nestedRules;
}
+ public boolean isNoRuleSetCompatibility() {
+ return noRuleSetCompatibility;
+ }
+
+ public void setNoRuleSetCompatibility(boolean noRuleSetCompatibility) {
+ this.noRuleSetCompatibility = noRuleSetCompatibility;
+ }
}
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java b/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java
index 0ae5ba0344..e7319b1859 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/ant/internal/PMDTaskImpl.java
@@ -68,6 +68,7 @@ public class PMDTaskImpl {
this.failOnRuleViolation = true;
}
configuration.setRuleSets(task.getRulesetFiles());
+ configuration.setRuleSetFactoryCompatibilityEnabled(!task.isNoRuleSetCompatibility());
if (task.getEncoding() != null) {
configuration.setSourceEncoding(task.getEncoding());
}
@@ -100,6 +101,9 @@ public class PMDTaskImpl {
// Setup RuleSetFactory and validate RuleSets
RuleSetFactory ruleSetFactory = new RuleSetFactory();
ruleSetFactory.setClassLoader(configuration.getClassLoader());
+ if (!configuration.isRuleSetFactoryCompatibilityEnabled()) {
+ ruleSetFactory.disableCompatibilityFilter();
+ }
try {
// This is just used to validate and display rules. Each thread will
// create its own ruleset
diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDParameters.java b/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDParameters.java
index 3ed3bbec2c..104c0295db 100644
--- a/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDParameters.java
+++ b/pmd-core/src/main/java/net/sourceforge/pmd/cli/PMDParameters.java
@@ -81,6 +81,9 @@ public class PMDParameters {
@Parameter(names = {"-failOnViolation", "--failOnViolation"}, arity = 1, description = "By default PMD exits with status 4 if violations are found. Disable this option with '-failOnViolation false' to exit with 0 instead and just write the report.")
private boolean failOnViolation = true;
+ @Parameter(names = "-norulesetcompatibility", description = "Disable the ruleset compatibility filter. The filter is active by default and tries automatically 'fix' old ruleset files with old rule names")
+ private boolean noRuleSetCompatibility = false;
+
// this has to be a public static class, so that JCommander can use it!
public static class PropertyConverter implements IStringConverter