Skip to content

Commit fd69fe3

Browse files
committed
Remove deprecated rule references from standard rulesets
1 parent 08901a5 commit fd69fe3

File tree

1 file changed

+20
-0
lines changed
  • net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/plugin

1 file changed

+20
-0
lines changed

net.sourceforge.pmd.eclipse.plugin/src/main/java/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.HashMap;
1313
import java.util.HashSet;
1414
import java.util.Iterator;
15+
import java.util.List;
1516
import java.util.Map;
1617
import java.util.Set;
1718

@@ -54,6 +55,7 @@
5455
import org.slf4j.LoggerFactory;
5556

5657
import net.sourceforge.pmd.PMDConfiguration;
58+
import net.sourceforge.pmd.Rule;
5759
import net.sourceforge.pmd.RuleSet;
5860
import net.sourceforge.pmd.RuleSetFactory;
5961
import net.sourceforge.pmd.RuleSetNotFoundException;
@@ -76,6 +78,7 @@
7678
import net.sourceforge.pmd.eclipse.runtime.writer.impl.WriterFactoryImpl;
7779
import net.sourceforge.pmd.eclipse.ui.RuleLabelDecorator;
7880
import net.sourceforge.pmd.eclipse.ui.ShapePainter;
81+
import net.sourceforge.pmd.eclipse.ui.actions.RuleSetUtil;
7982
import net.sourceforge.pmd.eclipse.ui.nls.StringKeys;
8083
import net.sourceforge.pmd.eclipse.ui.nls.StringTable;
8184
import net.sourceforge.pmd.eclipse.ui.priority.PriorityDescriptorCache;
@@ -84,6 +87,7 @@
8487
import net.sourceforge.pmd.lang.LanguageRegistry;
8588
import net.sourceforge.pmd.lang.LanguageVersion;
8689
import net.sourceforge.pmd.lang.java.JavaLanguageModule;
90+
import net.sourceforge.pmd.lang.rule.RuleReference;
8791

8892
/**
8993
* The activator class controls the plug-in life cycle
@@ -594,6 +598,7 @@ private void registerStandardRuleSets() {
594598
RuleSet ruleSet;
595599
while (iterator.hasNext()) {
596600
ruleSet = iterator.next();
601+
ruleSet = removeDeprecatedRuleReferences(ruleSet);
597602
manager.registerRuleSet(ruleSet);
598603
manager.registerDefaultRuleSet(ruleSet);
599604
}
@@ -602,6 +607,21 @@ private void registerStandardRuleSets() {
602607
}
603608
}
604609

610+
private RuleSet removeDeprecatedRuleReferences(RuleSet ruleSet) {
611+
List<Rule> rules = new ArrayList<>(ruleSet.getRules());
612+
Iterator<Rule> it = rules.iterator();
613+
while (it.hasNext()) {
614+
Rule rule = it.next();
615+
if (rule.isDeprecated() && rule instanceof RuleReference) {
616+
LOG.debug("Removed deprecated rule reference {} from ruleset {}", rule.getName(), ruleSet.getName());
617+
it.remove();
618+
}
619+
}
620+
RuleSet result = RuleSetUtil.clearRules(ruleSet);
621+
result = RuleSetUtil.addRules(result, rules);
622+
return result;
623+
}
624+
605625
/**
606626
* Register additional rulesets that may be provided by a fragment. Find extension points implementation and call
607627
* them

0 commit comments

Comments
 (0)