/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd;
import java.util.List;
import net.sourceforge.pmd.lang.DummyLanguageModule;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.AbstractRule;
/**
* Sample rule that detect any node with an image of "Foo". Used for testing.
*/
public class FooRule extends AbstractRule {
public FooRule() {
setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME));
}
@Override
public String getMessage() {
return "blah";
}
@Override
public String getName() {
return "Foo";
}
@Override
public String getRuleSetName() {
return "RuleSet";
}
@Override
public String getDescription() {
return "desc";
}
@Override
public void apply(List<? extends Node> nodes, RuleContext ctx) {
for (Node node : nodes) {
apply(node, ctx);
}
}
protected void apply(Node node, RuleContext ctx) {
for (int i = 0; i < node.jjtGetNumChildren(); i++) {
apply(node.jjtGetChild(i), ctx);
}
if ("Foo".equals(node.getImage())) {
addViolation(ctx, node);
}
}
}