From 60d276c2a00e765c4a7fb8c26d7824c4bbd0c1fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Thu, 29 Aug 2019 04:19:07 +0200 Subject: [PATCH] Remove old rulechain impl --- .../pmd/lang/apex/ApexLanguageModule.java | 3 +- .../lang/apex/rule/ApexRuleChainVisitor.java | 45 ---- .../java/net/sourceforge/pmd/RuleChain.java | 85 ------- .../java/net/sourceforge/pmd/RuleSets.java | 5 - .../pmd/lang/BaseLanguageModule.java | 10 +- .../net/sourceforge/pmd/lang/Language.java | 8 - .../impl/antlr4/AntlrRuleChainVisitor.java | 40 ---- .../lang/rule/AbstractRuleChainVisitor.java | 210 ------------------ .../pmd/lang/rule/RuleChainVisitor.java | 39 ---- .../sourceforge/pmd/lang/rule/XPathRule.java | 15 ++ .../pmd/lang/Dummy2LanguageModule.java | 2 +- .../pmd/lang/DummyLanguageModule.java | 25 +-- .../pmd/lang/java/JavaLanguageModule.java | 3 +- .../lang/java/rule/JavaRuleChainVisitor.java | 47 ---- .../ecmascript/EcmascriptLanguageModule.java | 6 +- .../rule/EcmascriptRuleChainVisitor.java | 47 ---- .../pmd/lang/jsp/JspLanguageModule.java | 3 +- .../lang/jsp/rule/JspRuleChainVisitor.java | 47 ---- .../pmd/lang/plsql/PLSQLLanguageModule.java | 5 +- .../plsql/rule/PLSQLRuleChainVisitor.java | 62 ------ .../pmd/lang/scala/ScalaLanguageModule.java | 3 +- .../pmd/lang/swift/SwiftLanguageModule.java | 3 +- .../pmd/test/lang/DummyLanguageModule.java | 25 +-- .../pmd/lang/vf/VfLanguageModule.java | 3 +- .../pmd/lang/vf/rule/VfRuleChainVisitor.java | 39 ---- .../pmd/lang/vm/VmLanguageModule.java | 3 +- .../pmd/lang/vm/rule/VmRuleChainVisitor.java | 47 ---- .../pmd/lang/pom/PomLanguageModule.java | 3 +- .../pmd/lang/wsdl/WsdlLanguageModule.java | 3 +- .../pmd/lang/xml/XmlLanguageModule.java | 3 +- .../lang/xml/rule/XmlRuleChainVisitor.java | 41 ---- .../pmd/lang/xsl/XslLanguageModule.java | 3 +- 32 files changed, 34 insertions(+), 849 deletions(-) delete mode 100644 pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/ApexRuleChainVisitor.java delete mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/RuleChain.java delete mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/AntlrRuleChainVisitor.java delete mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java delete mode 100644 pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleChainVisitor.java delete mode 100644 pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/JavaRuleChainVisitor.java delete mode 100644 pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/EcmascriptRuleChainVisitor.java delete mode 100644 pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/JspRuleChainVisitor.java delete mode 100644 pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/PLSQLRuleChainVisitor.java delete mode 100644 pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/VfRuleChainVisitor.java delete mode 100644 pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/VmRuleChainVisitor.java delete mode 100644 pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/XmlRuleChainVisitor.java diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java index 2ec8899f8a..0825ba9a4a 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.apex; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.apex.rule.ApexRuleChainVisitor; import apex.jorje.services.Version; @@ -16,7 +15,7 @@ public class ApexLanguageModule extends BaseLanguageModule { public static final String[] EXTENSIONS = { "cls", "trigger" }; public ApexLanguageModule() { - super(NAME, null, TERSE_NAME, ApexRuleChainVisitor.class, EXTENSIONS); + super(NAME, null, TERSE_NAME, EXTENSIONS); addVersion(String.valueOf((int) Version.CURRENT.getExternal()), new ApexHandler(), true); } } diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/ApexRuleChainVisitor.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/ApexRuleChainVisitor.java deleted file mode 100644 index f08298d699..0000000000 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/ApexRuleChainVisitor.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.apex.rule; - -import java.util.Collections; -import java.util.List; -import java.util.Stack; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.apex.ast.ApexNode; -import net.sourceforge.pmd.lang.apex.ast.ApexParserVisitor; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class ApexRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - Stack stack = new Stack<>(); - stack.addAll(nodes); - Collections.reverse(stack); - while (!stack.isEmpty()) { - Node node = stack.pop(); - indexNode(node); - if (node.getNumChildren() > 0) { - for (int i = node.getNumChildren() - 1; i >= 0; i--) { - stack.push(node.getChild(i)); - } - } - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - if (rule instanceof XPathRule) { - ((XPathRule) rule).evaluate(node, ctx); - } else { - ((ApexNode) node).jjtAccept((ApexParserVisitor) rule, ctx); - } - } -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleChain.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleChain.java deleted file mode 100644 index 6348783ad6..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleChain.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.RuleChainVisitor; - -/** - * The RuleChain is a means by which Rules can participate in a uniform - * visitation of the AST, and not need perform their own independent visitation. - * The RuleChain exists as a means to improve the speed of PMD when there are - * many Rules. - */ -public class RuleChain { - // Mapping from Language to RuleChainVisitor - private final Map languageToRuleChainVisitor = new HashMap<>(); - - /** - * Add all Rules from the given RuleSet which want to participate in the - * RuleChain. - * - * @param ruleSet - * The RuleSet to add Rules from. - */ - public void add(RuleSet ruleSet) { - for (Rule r : ruleSet.getRules()) { - add(ruleSet, r); - } - } - - /** - * Add the given Rule if it wants to participate in the RuleChain. - * - * @param ruleSet - * The RuleSet to which the rule belongs. - * @param rule - * The Rule to add. - */ - private void add(RuleSet ruleSet, Rule rule) { - RuleChainVisitor visitor = getRuleChainVisitor(rule.getLanguage()); - if (visitor != null) { - visitor.add(ruleSet, rule); - } - } - - /** - * Apply the RuleChain to the given Nodes using the given RuleContext, for - * those rules using the given Language. - * - * @param nodes - * The Nodes. - * @param ctx - * The RuleContext. - * @param language - * The Language. - */ - public void apply(List nodes, RuleContext ctx, Language language) { - RuleChainVisitor visitor = getRuleChainVisitor(language); - if (visitor != null) { - visitor.visitAll(nodes, ctx); - } - } - - // Get the RuleChainVisitor for the appropriate Language. - private RuleChainVisitor getRuleChainVisitor(Language language) { - RuleChainVisitor visitor = languageToRuleChainVisitor.get(language); - if (visitor == null) { - try { - visitor = (RuleChainVisitor) language.getRuleChainVisitorClass().getConstructor().newInstance(); - } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) { - throw new IllegalStateException( - "Failure to created RuleChainVisitor: " + language.getRuleChainVisitorClass(), e); - } - languageToRuleChainVisitor.put(language, visitor); - } - return visitor; - } -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java index 0902928a0e..8e4b41e70d 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSets.java @@ -30,11 +30,6 @@ public class RuleSets { private List filtered; - /** - * RuleChain for efficient AST visitation. - */ - private RuleChain ruleChain = new RuleChain(); - private final RuleApplicator ruleApplicator = new RuleApplicator(); /** diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/BaseLanguageModule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/BaseLanguageModule.java index 207b5b0b6d..a1152baeae 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/BaseLanguageModule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/BaseLanguageModule.java @@ -21,18 +21,15 @@ public abstract class BaseLanguageModule implements Language { protected String name; protected String shortName; protected String terseName; - protected Class ruleChainVisitorClass; protected List extensions; private final List distinctVersions = new ArrayList<>(); protected Map versions; protected LanguageVersion defaultVersion; - public BaseLanguageModule(String name, String shortName, String terseName, Class ruleChainVisitorClass, - String... extensions) { + public BaseLanguageModule(String name, String shortName, String terseName, String... extensions) { this.name = name; this.shortName = shortName; this.terseName = terseName; - this.ruleChainVisitorClass = ruleChainVisitorClass; this.extensions = Arrays.asList(extensions); } @@ -115,11 +112,6 @@ public abstract class BaseLanguageModule implements Language { } @NonNull - @Override - public Class getRuleChainVisitorClass() { - return ruleChainVisitorClass; - } - @Override public List getExtensions() { return Collections.unmodifiableList(extensions); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java index 96682ac03f..d3c2cd8a75 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/Language.java @@ -73,14 +73,6 @@ public interface Language extends Comparable { */ boolean hasExtension(String extension); - /** - * Get the RuleChainVisitor implementation class used when visiting the AST - * structure for this Rules for this Language. - * - * @return The RuleChainVisitor class. - * @see net.sourceforge.pmd.lang.rule.RuleChainVisitor - */ - @NonNull Class getRuleChainVisitorClass(); /** * Gets the list of supported LanguageVersion for this Language. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/AntlrRuleChainVisitor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/AntlrRuleChainVisitor.java deleted file mode 100644 index 720d1db0db..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/AntlrRuleChainVisitor.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ast.impl.antlr4; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class AntlrRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - if (rule instanceof AntlrBaseRule) { - AntlrBaseRule rule1 = (AntlrBaseRule) rule; - ((AntlrBaseNode) node).accept(rule1.buildVisitor(ctx)); - } else { - ((XPathRule) rule).evaluate(node, ctx); - } - } - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - for (final Node node : nodes) { - indexSubtree(node); - } - } - - private void indexSubtree(Node node) { - indexNode(node); - for (Node child : node.children()) { - indexSubtree(child); - } - } -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java deleted file mode 100644 index 94a73ab478..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/AbstractRuleChainVisitor.java +++ /dev/null @@ -1,210 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.rule; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.benchmark.TimeTracker; -import net.sourceforge.pmd.benchmark.TimedOperation; -import net.sourceforge.pmd.benchmark.TimedOperationCategory; -import net.sourceforge.pmd.lang.ast.Node; - -/** - * This is a base class for RuleChainVisitor implementations which extracts - * interesting nodes from an AST, and lets each Rule visit the nodes it has - * expressed interest in. - */ -public abstract class AbstractRuleChainVisitor implements RuleChainVisitor { - private static final Logger LOG = Logger.getLogger(AbstractRuleChainVisitor.class.getName()); - - /** - * These are all the rules participating in the RuleChain, grouped by - * RuleSet. - */ - protected Map> ruleSetRules = new LinkedHashMap<>(); - - /** - * This is a mapping from node names to nodes instances for the current AST. - */ - protected Map> nodeNameToNodes; - - /** - * @see RuleChainVisitor#add(RuleSet, Rule) - */ - @Override - public void add(RuleSet ruleSet, Rule rule) { - - if (!ruleSetRules.containsKey(ruleSet)) { - ruleSetRules.put(ruleSet, new ArrayList()); - } - ruleSetRules.get(ruleSet).add(rule); - } - - /** - * @see RuleChainVisitor#visitAll(List, RuleContext) - */ - @Override - public void visitAll(List nodes, RuleContext ctx) { - initialize(); - clear(); - - // Perform a visitation of the AST to index nodes which need visiting by - // type - try (TimedOperation to = TimeTracker.startOperation(TimedOperationCategory.RULECHAIN_AST_INDEXATION)) { - indexNodes(nodes, ctx); - } - - // For each RuleSet, only if this source file applies - try (TimedOperation to = TimeTracker.startOperation(TimedOperationCategory.RULECHAIN_RULE)) { - for (Map.Entry> entry : ruleSetRules.entrySet()) { - RuleSet ruleSet = entry.getKey(); - if (!ruleSet.applies(ctx.getSourceCodeFile())) { - continue; - } - - // For each rule, allow it to visit the nodes it desires - for (Rule rule : entry.getValue()) { - int visits = 0; - if (!RuleSet.applies(rule, ctx.getLanguageVersion())) { - continue; - } - try (TimedOperation rcto = TimeTracker.startOperation(TimedOperationCategory.RULECHAIN_RULE, rule.getName())) { - for (String nodeName : rule.getRuleChainVisits()) { - List ns = nodeNameToNodes.get(nodeName); - for (Node node : ns) { - // Visit with underlying Rule, not the RuleReference - Rule actualRule = rule; - while (actualRule instanceof RuleReference) { - actualRule = ((RuleReference) actualRule).getRule(); - } - visit(actualRule, node, ctx); - } - visits += ns.size(); - } - rcto.close(visits); - } catch (RuntimeException e) { - if (ctx.isIgnoreExceptions()) { - ctx.getReport().addError(new Report.ProcessingError(e, String.valueOf(ctx.getSourceCodeFile()))); - - if (LOG.isLoggable(Level.WARNING)) { - LOG.log(Level.WARNING, "Exception applying rule " + rule.getName() + " on file " - + ctx.getSourceCodeFile() + ", continuing with next rule", e); - } - } else { - throw e; - } - } - } - } - } - } - - /** - * Visit the given rule to the given node. - */ - protected abstract void visit(Rule rule, Node node, RuleContext ctx); - - /** - * Index all nodes for visitation by rules. - */ - protected abstract void indexNodes(List nodes, RuleContext ctx); - - /** - * Index a single node for visitation by rules. - */ - protected void indexNode(Node node) { - List nodes = nodeNameToNodes.get(node.getXPathNodeName()); - if (nodes != null) { - nodes.add(node); - } - } - - /** - * Initialize the RuleChainVisitor to be ready to perform visitations. This - * method should not be called until it is known that all Rules - * participating in the RuleChain are ready to be initialized themselves. - * Some rules may require full initialization to determine if they will - * participate in the RuleChain, so this has been delayed as long as - * possible to ensure that manipulation of the Rules is no longer occurring. - */ - protected void initialize() { - if (nodeNameToNodes != null) { - return; - } - - // Determine all node types that need visiting - Set visitedNodes = new HashSet<>(); - for (Iterator>> entryIterator = ruleSetRules.entrySet().iterator(); entryIterator - .hasNext();) { - Map.Entry> entry = entryIterator.next(); - for (Iterator ruleIterator = entry.getValue().iterator(); ruleIterator.hasNext();) { - Rule rule = ruleIterator.next(); - if (rule.isRuleChain()) { - visitedNodes.addAll(rule.getRuleChainVisits()); - - logXPathRuleChainUsage(true, rule); - } else { - // Drop rules which do not participate in the rule chain. - ruleIterator.remove(); - - logXPathRuleChainUsage(false, rule); - } - } - // Drop RuleSets in which all Rules have been dropped. - if (entry.getValue().isEmpty()) { - entryIterator.remove(); - } - } - - // Setup the data structure to manage mapping node names to node - // instances. We intend to reuse this data structure between - // visits to different ASTs. - nodeNameToNodes = new HashMap<>(); - for (String s : visitedNodes) { - List nodes = new ArrayList<>(100); - nodeNameToNodes.put(s, nodes); - } - } - - private void logXPathRuleChainUsage(boolean usesRuleChain, Rule rule) { - if (LOG.isLoggable(Level.FINE)) { - Rule r; - if (rule instanceof RuleReference) { - r = ((RuleReference) rule).getRule(); - } else { - r = rule; - } - if (r instanceof XPathRule) { - String message = (usesRuleChain ? "Using " : "no ") - + "rule chain for XPath " + rule.getProperty(XPathRule.VERSION_DESCRIPTOR) - + " rule: " + rule.getName() + " (" + rule.getRuleSetName() + ")"; - LOG.fine(message); - } - } - } - - /** - * Clears the internal data structure used to manage the nodes visited - * between visiting different ASTs. - */ - protected void clear() { - for (List l : nodeNameToNodes.values()) { - l.clear(); - } - } -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleChainVisitor.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleChainVisitor.java deleted file mode 100644 index f2425dbbcc..0000000000 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/RuleChainVisitor.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.rule; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.RuleSet; -import net.sourceforge.pmd.lang.ast.Node; - -/** - * The RuleChainVisitor understands how to visit an AST for a particular - * Language. - */ -public interface RuleChainVisitor { - /** - * Add the given rule to the visitor. - * - * @param ruleSet - * The RuleSet to which the rule belongs. - * @param rule - * The rule to add. - */ - void add(RuleSet ruleSet, Rule rule); - - /** - * Visit all the given Nodes provided using the given RuleContext. Every - * Rule added will visit the AST as appropriate. - * - * @param nodes - * The Nodes to visit. - * @param ctx - * The RuleContext. - */ - void visitAll(List nodes, RuleContext ctx); -} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java index 648fedd9ec..f790c0874f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/rule/XPathRule.java @@ -14,6 +14,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; @@ -34,6 +36,8 @@ import net.sourceforge.pmd.properties.StringProperty; */ public class XPathRule extends AbstractRule { + private static final Logger LOG = Logger.getLogger(XPathRule.class.getName()); + /** * @deprecated Use {@link #XPathRule(XPathVersion, String)} */ @@ -219,10 +223,21 @@ public class XPathRule extends AbstractRule { for (String nodeName : xpathRuleQuery.getRuleChainVisits()) { super.addRuleChainVisit(nodeName); } + logXPathRuleChainUsage(!xpathRuleQuery.getRuleChainVisits().isEmpty()); } return super.getRuleChainVisits(); } + + private void logXPathRuleChainUsage(boolean usesRuleChain) { + if (LOG.isLoggable(Level.FINE)) { + String message = (usesRuleChain ? "Using " : "no ") + + "rule chain for XPath " + getProperty(XPathRule.VERSION_DESCRIPTOR) + + " rule: " + getName() + " (" + getRuleSetName() + ")"; + LOG.fine(message); + } + } + @Override public String dysfunctionReason() { if (getVersion() == null) { diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/Dummy2LanguageModule.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/Dummy2LanguageModule.java index fc819c7df2..e5a8de77cb 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/Dummy2LanguageModule.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/Dummy2LanguageModule.java @@ -13,7 +13,7 @@ public class Dummy2LanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "dummy2"; public Dummy2LanguageModule() { - super(NAME, null, TERSE_NAME, null, "dummy2"); + super(NAME, null, TERSE_NAME, "dummy2"); addVersion("1.0", new DummyLanguageModule.Handler(), true); } } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java index f700c527d9..a144f0fea0 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/lang/DummyLanguageModule.java @@ -5,9 +5,6 @@ package net.sourceforge.pmd.lang; import java.io.Reader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; @@ -17,7 +14,6 @@ import net.sourceforge.pmd.lang.ast.DummyRoot; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.xpath.DefaultASTXPathHandler; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; import net.sourceforge.pmd.lang.rule.impl.DefaultRuleViolationFactory; @@ -33,7 +29,7 @@ public class DummyLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "dummy"; public DummyLanguageModule() { - super(NAME, null, TERSE_NAME, DummyRuleChainVisitor.class, "dummy"); + super(NAME, null, TERSE_NAME, "dummy"); addVersion("1.0", new Handler()); addVersion("1.1", new Handler()); addVersion("1.2", new Handler()); @@ -45,25 +41,6 @@ public class DummyLanguageModule extends BaseLanguageModule { addVersion("1.8", new Handler(), "8"); } - public static class DummyRuleChainVisitor extends AbstractRuleChainVisitor { - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - rule.apply(Arrays.asList(node), ctx); - } - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - for (Node n : nodes) { - indexNode(n); - List childs = new ArrayList<>(); - for (int i = 0; i < n.getNumChildren(); i++) { - childs.add(n.getChild(i)); - } - indexNodes(childs, ctx); - } - } - } - public static class Handler extends AbstractPmdLanguageVersionHandler { public Handler() { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java index 12f5ea4cc1..1da8afecd5 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.java; import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.java.internal.JavaLanguageHandler; -import net.sourceforge.pmd.lang.java.rule.JavaRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -17,7 +16,7 @@ public class JavaLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "java"; public JavaLanguageModule() { - super(NAME, null, TERSE_NAME, JavaRuleChainVisitor.class, "java"); + super(NAME, null, TERSE_NAME, "java"); addVersion("1.3", new JavaLanguageHandler(3)); addVersion("1.4", new JavaLanguageHandler(4)); addVersion("1.5", new JavaLanguageHandler(5), "5"); diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/JavaRuleChainVisitor.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/JavaRuleChainVisitor.java deleted file mode 100644 index 386335289a..0000000000 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/JavaRuleChainVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.java.rule; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit; -import net.sourceforge.pmd.lang.java.ast.JavaNode; -import net.sourceforge.pmd.lang.java.ast.JavaParserVisitor; -import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class JavaRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - JavaParserVisitor javaParserVistor = new JavaParserVisitorAdapter() { - // Perform a visitation of the AST to index nodes which need - // visiting by type - @Override - public Object visit(JavaNode node, Object data) { - indexNode(node); - return super.visit(node, data); - } - }; - - for (final Node node : nodes) { - javaParserVistor.visit((ASTCompilationUnit) node, ctx); - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - // Rule better either be a JavaParserVisitor, or a XPathRule - if (rule instanceof XPathRule) { - ((XPathRule) rule).evaluate(node, ctx); - } else { - ((JavaNode) node).jjtAccept((JavaParserVisitor) rule, ctx); - } - } -} diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java index d3786e9a8b..ddb4fd5076 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java @@ -6,20 +6,18 @@ package net.sourceforge.pmd.lang.ecmascript; import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.LanguageVersionHandler; -import net.sourceforge.pmd.lang.ecmascript.rule.EcmascriptRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. */ public class EcmascriptLanguageModule extends BaseLanguageModule { - private static final Ecmascript3Handler DEFAULT = new Ecmascript3Handler(); - public static final String NAME = "Ecmascript"; public static final String TERSE_NAME = "ecmascript"; + private static final Ecmascript3Handler DEFAULT = new Ecmascript3Handler(); public EcmascriptLanguageModule() { - super(NAME, null, TERSE_NAME, EcmascriptRuleChainVisitor.class, "js"); + super(NAME, null, TERSE_NAME, "js"); addVersion("3", DEFAULT, true); } diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/EcmascriptRuleChainVisitor.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/EcmascriptRuleChainVisitor.java deleted file mode 100644 index d86e3f664a..0000000000 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/EcmascriptRuleChainVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.ecmascript.rule; - -import java.util.Collections; -import java.util.List; -import java.util.Stack; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptNode; -import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class EcmascriptRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - // Visit Nodes in DFS order - Stack stack = new Stack<>(); - stack.addAll(nodes); - Collections.reverse(stack); - while (!stack.isEmpty()) { - Node node = stack.pop(); - indexNode(node); - if (node.getNumChildren() > 0) { - for (int i = node.getNumChildren() - 1; i >= 0; i--) { - stack.push(node.getChild(i)); - } - } - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - // Rule better either be a EcmascriptParserVisitor, or a XPathRule - if (rule instanceof XPathRule) { - ((XPathRule) rule).evaluate(node, ctx); - } else { - ((EcmascriptNode) node).jjtAccept((EcmascriptParserVisitor) rule, ctx); - } - } -} diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java index 549762e523..f8570f15b9 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.jsp; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.jsp.rule.JspRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -16,7 +15,7 @@ public class JspLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "jsp"; public JspLanguageModule() { - super(NAME, "JSP", TERSE_NAME, JspRuleChainVisitor.class, "jsp", "jspx", "jspf", "tag"); + super(NAME, "JSP", TERSE_NAME, "jsp", "jspx", "jspf", "tag"); addVersion("", new JspHandler(), true); } } diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/JspRuleChainVisitor.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/JspRuleChainVisitor.java deleted file mode 100644 index a9f76d1c32..0000000000 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/JspRuleChainVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.jsp.rule; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.jsp.ast.ASTCompilationUnit; -import net.sourceforge.pmd.lang.jsp.ast.JspNode; -import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor; -import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitorAdapter; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class JspRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - JspParserVisitor jspParserVisitor = new JspParserVisitorAdapter() { - // Perform a visitation of the AST to index nodes which need - // visiting by type - @Override - public Object visit(JspNode node, Object data) { - indexNode(node); - return super.visit(node, data); - } - }; - - for (int i = 0; i < nodes.size(); i++) { - jspParserVisitor.visit((ASTCompilationUnit) nodes.get(i), ctx); - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - // Rule better either be a JspParserVisitor, or a XPathRule - if (rule instanceof JspParserVisitor) { - ((JspNode) node).jjtAccept((JspParserVisitor) rule, ctx); - } else { - ((XPathRule) rule).evaluate(node, ctx); - } - } -} diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java index 2f165815af..328b28ff32 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.plsql; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.plsql.rule.PLSQLRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -16,8 +15,8 @@ public class PLSQLLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "plsql"; public PLSQLLanguageModule() { - super(NAME, null, TERSE_NAME, PLSQLRuleChainVisitor.class, - "sql", + super(NAME, null, TERSE_NAME, + "sql", "trg", // Triggers "prc", "fnc", // Standalone Procedures and Functions "pld", // Oracle*Forms diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/PLSQLRuleChainVisitor.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/PLSQLRuleChainVisitor.java deleted file mode 100644 index e12bdf5d4d..0000000000 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/PLSQLRuleChainVisitor.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.plsql.rule; - -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.plsql.ast.ASTInput; -import net.sourceforge.pmd.lang.plsql.ast.PLSQLNode; -import net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitor; -import net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitorAdapter; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class PLSQLRuleChainVisitor extends AbstractRuleChainVisitor { - private static final Logger LOGGER = Logger.getLogger(PLSQLRuleChainVisitor.class.getName()); - private static final String CLASS_NAME = PLSQLRuleChainVisitor.class.getName(); - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - LOGGER.entering(CLASS_NAME, "indexNodes"); - PLSQLParserVisitor plsqlParserVistor = new PLSQLParserVisitorAdapter() { - // Perform a visitation of the AST to index nodes which need - // visiting by type - @Override - public Object visit(PLSQLNode node, Object data) { - indexNode(node); - return super.visit(node, data); - } - }; - - for (int i = 0; i < nodes.size(); i++) { - plsqlParserVistor.visit((ASTInput) nodes.get(i), ctx); - } - LOGGER.exiting(CLASS_NAME, "indexNodes"); - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - LOGGER.entering(CLASS_NAME, "visit"); - // Rule better either be a PLSQLParserVisitor, or a XPathRule# - if (LOGGER.isLoggable(Level.FINE)) { - LOGGER.fine("Rule=" + rule); - LOGGER.fine("Node=" + node); - LOGGER.fine("RuleContext=" + ctx); - LOGGER.fine("Rule Classname=" + rule.getClass().getCanonicalName()); - LOGGER.fine("Rule Name=" + rule.getName()); - } - if (rule instanceof XPathRule) { - ((XPathRule) rule).evaluate(node, ctx); - } else { - ((PLSQLNode) node).jjtAccept((PLSQLParserVisitor) rule, ctx); - } - LOGGER.exiting(CLASS_NAME, "visit"); - } -} diff --git a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java index 0e845ded66..a121da801d 100644 --- a/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java +++ b/pmd-scala/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.scala; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.scala.rule.ScalaRuleChainVisitor; /** * Language Module for Scala. @@ -22,7 +21,7 @@ public class ScalaLanguageModule extends BaseLanguageModule { * Create a new instance of Scala Language Module. */ public ScalaLanguageModule() { - super(NAME, null, TERSE_NAME, ScalaRuleChainVisitor.class, "scala"); + super(NAME, null, TERSE_NAME, "scala"); addVersion("2.13", new ScalaLanguageHandler(scala.meta.dialects.package$.MODULE$.Scala213()), true); addVersion("2.12", new ScalaLanguageHandler(scala.meta.dialects.package$.MODULE$.Scala212()), false); addVersion("2.11", new ScalaLanguageHandler(scala.meta.dialects.package$.MODULE$.Scala211()), false); diff --git a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java index 0099446c35..e36a3c0af7 100644 --- a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java +++ b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.swift; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrRuleChainVisitor; /** * Language Module for Swift @@ -21,7 +20,7 @@ public class SwiftLanguageModule extends BaseLanguageModule { * Create a new instance of Swift Language Module. */ public SwiftLanguageModule() { - super(NAME, null, TERSE_NAME, AntlrRuleChainVisitor.class, "swift"); + super(NAME, null, TERSE_NAME, "swift"); addVersion("", new SwiftHandler(), true); } } diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java b/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java index 2b94b5f74a..57b2611d6e 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/test/lang/DummyLanguageModule.java @@ -5,9 +5,6 @@ package net.sourceforge.pmd.test.lang; import java.io.Reader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; import net.sourceforge.pmd.Rule; import net.sourceforge.pmd.RuleContext; @@ -20,7 +17,6 @@ import net.sourceforge.pmd.lang.ParserOptions; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.ParseException; import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; import net.sourceforge.pmd.lang.rule.ParametricRuleViolation; import net.sourceforge.pmd.lang.rule.impl.DefaultRuleViolationFactory; import net.sourceforge.pmd.test.lang.ast.DummyNode; @@ -34,7 +30,7 @@ public class DummyLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "dummy"; public DummyLanguageModule() { - super(NAME, null, TERSE_NAME, DummyRuleChainVisitor.class, "dummy"); + super(NAME, null, TERSE_NAME, "dummy"); addVersion("1.0", new Handler(), false); addVersion("1.1", new Handler(), false); addVersion("1.2", new Handler(), false); @@ -46,25 +42,6 @@ public class DummyLanguageModule extends BaseLanguageModule { addVersion("1.8", new Handler(), false); } - public static class DummyRuleChainVisitor extends AbstractRuleChainVisitor { - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - rule.apply(Arrays.asList(node), ctx); - } - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - for (Node n : nodes) { - indexNode(n); - List childs = new ArrayList<>(); - for (int i = 0; i < n.getNumChildren(); i++) { - childs.add(n.getChild(i)); - } - indexNodes(childs, ctx); - } - } - } - public static class Handler extends AbstractPmdLanguageVersionHandler { @Override public RuleViolationFactory getRuleViolationFactory() { diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java index 301674bcc0..06e6403fa4 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.vf; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.vf.rule.VfRuleChainVisitor; /** @@ -18,7 +17,7 @@ public class VfLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "vf"; public VfLanguageModule() { - super(NAME, "VisualForce", TERSE_NAME, VfRuleChainVisitor.class, "page", "component"); + super(NAME, "VisualForce", TERSE_NAME, "page", "component"); addVersion("", new VfHandler(), true); } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/VfRuleChainVisitor.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/VfRuleChainVisitor.java deleted file mode 100644 index 3f47672901..0000000000 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/VfRuleChainVisitor.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.vf.rule; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; -import net.sourceforge.pmd.lang.vf.ast.ASTCompilationUnit; -import net.sourceforge.pmd.lang.vf.ast.VfNode; -import net.sourceforge.pmd.lang.vf.ast.VfParserVisitor; -import net.sourceforge.pmd.lang.vf.ast.VfParserVisitorAdapter; - -public class VfRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - VfParserVisitor vfParserVisitor = new VfParserVisitorAdapter(); - - for (int i = 0; i < nodes.size(); i++) { - vfParserVisitor.visit((ASTCompilationUnit) nodes.get(i), ctx); - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - // Rule better either be a vfParserVisitor, or a XPathRule - if (rule instanceof VfParserVisitor) { - ((VfNode) node).jjtAccept((VfParserVisitor) rule, ctx); - } else { - ((XPathRule) rule).evaluate(node, ctx); - } - } -} diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java index bfcf727c70..a8c29f86ec 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/VmLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.vm; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.vm.rule.VmRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -16,7 +15,7 @@ public class VmLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "vm"; public VmLanguageModule() { - super(NAME, null, TERSE_NAME, VmRuleChainVisitor.class, "vm"); + super(NAME, null, TERSE_NAME, "vm"); addVersion("", new VmHandler(), true); } diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/VmRuleChainVisitor.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/VmRuleChainVisitor.java deleted file mode 100644 index a8026ab84a..0000000000 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/VmRuleChainVisitor.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.vm.rule; - -import java.util.List; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; -import net.sourceforge.pmd.lang.vm.ast.ASTTemplate; -import net.sourceforge.pmd.lang.vm.ast.VmNode; -import net.sourceforge.pmd.lang.vm.ast.VmParserVisitor; -import net.sourceforge.pmd.lang.vm.ast.VmParserVisitorAdapter; - -public class VmRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(final List nodes, final RuleContext ctx) { - final VmParserVisitor vmParserVisitor = new VmParserVisitorAdapter() { - // Perform a visitation of the AST to index nodes which need - // visiting by type - @Override - public Object visit(final VmNode node, final Object data) { - indexNode(node); - return super.visit(node, data); - } - }; - - for (Node node : nodes) { - vmParserVisitor.visit((ASTTemplate) node, ctx); - } - } - - @Override - protected void visit(final Rule rule, final Node node, final RuleContext ctx) { - // Rule better either be a VmParserVisitor, or a XPathRule - if (rule instanceof VmParserVisitor) { - ((VmNode) node).jjtAccept((VmParserVisitor) rule, ctx); - } else { - ((XPathRule) rule).evaluate(node, ctx); - } - } -} diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java index 24f6c86249..b8495734c3 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/pom/PomLanguageModule.java @@ -6,14 +6,13 @@ package net.sourceforge.pmd.lang.pom; import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.lang.xml.rule.XmlRuleChainVisitor; public class PomLanguageModule extends BaseLanguageModule { public static final String NAME = "Maven POM"; public static final String TERSE_NAME = "pom"; public PomLanguageModule() { - super(NAME, null, TERSE_NAME, XmlRuleChainVisitor.class, "pom"); + super(NAME, null, TERSE_NAME, "pom"); addVersion("", new XmlHandler(), true); } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java index 555a713353..4430b65986 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/wsdl/WsdlLanguageModule.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.wsdl; import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.lang.xml.rule.XmlRuleChainVisitor; /** * Created by bernardo-macedo on 24.06.15. @@ -16,7 +15,7 @@ public class WsdlLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "wsdl"; public WsdlLanguageModule() { - super(NAME, null, TERSE_NAME, XmlRuleChainVisitor.class, "wsdl"); + super(NAME, null, TERSE_NAME, "wsdl"); addVersion("", new XmlHandler(), true); } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java index d6db2e732c..1b6d7694c7 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java @@ -5,7 +5,6 @@ package net.sourceforge.pmd.lang.xml; import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.xml.rule.XmlRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -16,7 +15,7 @@ public class XmlLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "xml"; public XmlLanguageModule() { - super(NAME, null, TERSE_NAME, XmlRuleChainVisitor.class, "xml"); + super(NAME, null, TERSE_NAME, "xml"); addVersion("", new XmlHandler(), true); } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/XmlRuleChainVisitor.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/XmlRuleChainVisitor.java deleted file mode 100644 index 17df0c0026..0000000000 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/XmlRuleChainVisitor.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.lang.xml.rule; - -import java.util.Collections; -import java.util.List; -import java.util.Stack; - -import net.sourceforge.pmd.Rule; -import net.sourceforge.pmd.RuleContext; -import net.sourceforge.pmd.lang.ast.Node; -import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; -import net.sourceforge.pmd.lang.rule.XPathRule; - -public class XmlRuleChainVisitor extends AbstractRuleChainVisitor { - - @Override - protected void indexNodes(List nodes, RuleContext ctx) { - // Visit Nodes in DFS order - Stack stack = new Stack<>(); - stack.addAll(nodes); - Collections.reverse(stack); - while (!stack.isEmpty()) { - Node node = stack.pop(); - indexNode(node); - if (node.getNumChildren() > 0) { - for (int i = node.getNumChildren() - 1; i >= 0; i--) { - stack.push(node.getChild(i)); - } - } - } - } - - @Override - protected void visit(Rule rule, Node node, RuleContext ctx) { - // Rule better be a XPathRule - ((XPathRule) rule).evaluate(node, ctx); - } -} diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java index 272d3c274f..9a5b484658 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xsl/XslLanguageModule.java @@ -6,7 +6,6 @@ package net.sourceforge.pmd.lang.xsl; import net.sourceforge.pmd.lang.BaseLanguageModule; import net.sourceforge.pmd.lang.xml.XmlHandler; -import net.sourceforge.pmd.lang.xml.rule.XmlRuleChainVisitor; /** * Created by christoferdutz on 20.09.14. @@ -17,7 +16,7 @@ public class XslLanguageModule extends BaseLanguageModule { public static final String TERSE_NAME = "xsl"; public XslLanguageModule() { - super(NAME, null, TERSE_NAME, XmlRuleChainVisitor.class, "xsl", "xslt"); + super(NAME, null, TERSE_NAME, "xsl", "xslt"); addVersion("", new XmlHandler(), true); } }