1 /**
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd.lang.rule;
5
6 import java.util.List;
7
8 import net.sourceforge.pmd.Rule;
9 import net.sourceforge.pmd.RuleContext;
10 import net.sourceforge.pmd.RuleSet;
11 import net.sourceforge.pmd.lang.ast.Node;
12
13 /**
14 * The RuleChainVisitor understands how to visit an AST for a particular
15 * Language.
16 */
17 public interface RuleChainVisitor {
18 /**
19 * Add the given rule to the visitor.
20 *
21 * @param ruleSet The RuleSet to which the rule belongs.
22 * @param rule The rule to add.
23 */
24 void add(RuleSet ruleSet, Rule rule);
25
26 /**
27 * Visit all the given Nodes provided using the given RuleContext. Every
28 * Rule added will visit the AST as appropriate.
29 *
30 * @param nodes The Nodes to visit.
31 * @param ctx The RuleContext.
32 */
33 void visitAll(List<Node> nodes, RuleContext ctx);
34 }