net.sourceforge.pmd.lang.ecmascript.rule.AbstractEcmascriptRule Maven / Gradle / Ivy
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.ecmascript.rule;
import java.util.List;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ParserOptions;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.ecmascript.EcmascriptLanguageModule;
import net.sourceforge.pmd.lang.ecmascript.EcmascriptParserOptions;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTArrayComprehension;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTArrayComprehensionLoop;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTArrayLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTAssignment;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTAstRoot;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTBlock;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTBreakStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTCatchClause;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTComment;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTConditionalExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTContinueStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTDoLoop;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTElementGet;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTEmptyExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTExpressionStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTForInLoop;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTForLoop;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTFunctionCall;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTFunctionNode;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTIfStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTInfixExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTKeywordLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTLabel;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTLabeledStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTLetNode;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTName;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTNewExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTNumberLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTObjectLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTObjectProperty;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTParenthesizedExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTPropertyGet;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTRegExpLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTReturnStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTScope;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTStringLiteral;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTSwitchCase;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTSwitchStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTThrowStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTTryStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTUnaryExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTVariableDeclaration;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTVariableInitializer;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTWhileLoop;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTWithStatement;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTXmlDotQuery;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTXmlExpression;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTXmlMemberGet;
import net.sourceforge.pmd.lang.ecmascript.ast.ASTXmlString;
import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptNode;
import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.lang.rule.properties.BooleanProperty;
import net.sourceforge.pmd.lang.rule.properties.EnumeratedProperty;
public abstract class AbstractEcmascriptRule extends AbstractRule
implements EcmascriptParserVisitor, ImmutableLanguage {
private static final BooleanProperty RECORDING_COMMENTS_DESCRIPTOR = EcmascriptParserOptions.RECORDING_COMMENTS_DESCRIPTOR;
private static final BooleanProperty RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR = EcmascriptParserOptions.RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR;
private static final EnumeratedProperty RHINO_LANGUAGE_VERSION = EcmascriptParserOptions.RHINO_LANGUAGE_VERSION;
public AbstractEcmascriptRule() {
super.setLanguage(LanguageRegistry.getLanguage(EcmascriptLanguageModule.NAME));
definePropertyDescriptor(RECORDING_COMMENTS_DESCRIPTOR);
definePropertyDescriptor(RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR);
definePropertyDescriptor(RHINO_LANGUAGE_VERSION);
}
@Override
public ParserOptions getParserOptions() {
return new EcmascriptParserOptions(this);
}
public void apply(List extends Node> nodes, RuleContext ctx) {
visitAll(nodes, ctx);
}
protected void visitAll(List extends Node> nodes, RuleContext ctx) {
for (Object element : nodes) {
ASTAstRoot node = (ASTAstRoot) element;
visit(node, ctx);
}
}
//
// The following APIs are identical to those in
// EcmascriptParserVisitorAdapter.
// Due to Java single inheritance, it preferred to extend from the more
// complex Rule base class instead of from relatively simple Visitor.
//
public Object visit(EcmascriptNode> node, Object data) {
node.childrenAccept(this, data);
return null;
}
public Object visit(ASTArrayComprehension node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTArrayComprehensionLoop node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTArrayLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTAssignment node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTAstRoot node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTBlock node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTBreakStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTCatchClause node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTComment node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTConditionalExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTContinueStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTDoLoop node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTElementGet node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTEmptyExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTExpressionStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTForInLoop node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTForLoop node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTFunctionCall node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTFunctionNode node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTIfStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTInfixExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTKeywordLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTLabel node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTLabeledStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTLetNode node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTName node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTNewExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTNumberLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTObjectLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTObjectProperty node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTParenthesizedExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTPropertyGet node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTRegExpLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTReturnStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTScope node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTStringLiteral node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTSwitchCase node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTSwitchStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTThrowStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTTryStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTUnaryExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTVariableDeclaration node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTVariableInitializer node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTWhileLoop node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTWithStatement node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTXmlDotQuery node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTXmlExpression node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTXmlMemberGet node, Object data) {
return visit((EcmascriptNode>) node, data);
}
public Object visit(ASTXmlString node, Object data) {
return visit((EcmascriptNode>) node, data);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy