From d7f96e08d93513d8eced95c18de6a09d04f20c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Mon, 22 Jun 2020 18:51:28 +0200 Subject: [PATCH] Uniformize apply across languages --- .../pmd/lang/apex/rule/AbstractApexRule.java | 8 ++----- .../pmd/lang/BaseLanguageModule.java | 21 +++++++++++++++++++ .../pmd/lang/java/rule/AbstractJavaRule.java | 10 ++------- .../rule/AbstractEcmascriptRule.java | 5 +++-- .../pmd/lang/jsp/rule/AbstractJspRule.java | 5 +++-- .../modelica/rule/AbstractModelicaRule.java | 5 +++-- .../lang/plsql/rule/AbstractPLSQLRule.java | 5 +++-- .../pmd/lang/scala/rule/ScalaRule.java | 4 ++-- .../pmd/lang/vf/rule/AbstractVfRule.java | 8 ++----- .../pmd/lang/vm/rule/AbstractVmRule.java | 5 +++-- .../pmd/lang/xml/rule/AbstractXmlRule.java | 5 +++-- 11 files changed, 47 insertions(+), 34 deletions(-) diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/AbstractApexRule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/AbstractApexRule.java index 8f1a29b57d..a5015c806f 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/AbstractApexRule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/rule/AbstractApexRule.java @@ -137,12 +137,8 @@ public abstract class AbstractApexRule extends AbstractRule protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - if (element instanceof ASTUserClass) { - visit((ASTUserClass) element, ctx); - } else if (element instanceof ASTUserInterface) { - visit((ASTUserInterface) element, ctx); - } else if (element instanceof ASTUserTrigger) { - visit((ASTUserTrigger) element, ctx); + if (element instanceof ApexNode) { + ((ApexNode) element).jjtAccept(this, ctx); } } } 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 633f6ac038..e5e1e53619 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 @@ -11,6 +11,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import net.sourceforge.pmd.Rule; +import net.sourceforge.pmd.RuleContext; +import net.sourceforge.pmd.lang.ast.Node; +import net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor; + /** * Created by christoferdutz on 21.09.14. */ @@ -177,4 +182,20 @@ public abstract class BaseLanguageModule implements Language { public int compareTo(Language o) { return getName().compareTo(o.getName()); } + + + + private static class DefaultRulechainVisitor extends AbstractRuleChainVisitor { + + @Override + protected void visit(Rule rule, Node node, RuleContext ctx) { + rule.apply(Collections.singletonList(node), ctx); + } + + @Override + protected void indexNodes(List nodes, RuleContext ctx) { + + } + } + } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java index 2c243390d3..867192a5cf 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/AbstractJavaRule.java @@ -158,14 +158,8 @@ public abstract class AbstractJavaRule extends AbstractRule implements JavaParse protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - /* - It is important to note that we are assuming that all nodes here are of type Compilation Unit, - but our caller method may be called with any type of node, and that's why we need to check the kind - of instance of each element - */ - if (element instanceof ASTCompilationUnit) { - ASTCompilationUnit node = (ASTCompilationUnit) element; - visit(node, ctx); + if (element instanceof JavaNode) { + ((JavaNode) element).jjtAccept(this, ctx); } } } diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/AbstractEcmascriptRule.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/AbstractEcmascriptRule.java index 61ab2aa106..30e5754cd6 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/AbstractEcmascriptRule.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/rule/AbstractEcmascriptRule.java @@ -96,8 +96,9 @@ public abstract class AbstractEcmascriptRule extends AbstractRule protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - ASTAstRoot node = (ASTAstRoot) element; - visit(node, ctx); + if (element instanceof EcmascriptNode) { + ((EcmascriptNode) element).jjtAccept(this, ctx); + } } } diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/AbstractJspRule.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/AbstractJspRule.java index 489f3e33fb..5867fe4057 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/AbstractJspRule.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/rule/AbstractJspRule.java @@ -55,8 +55,9 @@ public abstract class AbstractJspRule extends AbstractRule implements JspParserV protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - JspNode node = (JspNode) element; - visit(node, ctx); + if (element instanceof JspNode) { + ((JspNode) element).jjtAccept(this, ctx); + } } } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java index 2f81acc675..aa876712e1 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/rule/AbstractModelicaRule.java @@ -172,8 +172,9 @@ public abstract class AbstractModelicaRule extends AbstractRule implements Model protected void visitAll(final List nodes, final RuleContext ctx) { for (final Object element : nodes) { - final ASTStoredDefinition node = (ASTStoredDefinition) element; - visit(node, ctx); + if (element instanceof ModelicaNode) { + ((ModelicaNode) element).jjtAccept(this, ctx); + } } } diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java index f1c776c8dc..274897c1fd 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/rule/AbstractPLSQLRule.java @@ -256,8 +256,9 @@ public abstract class AbstractPLSQLRule extends AbstractRule implements PLSQLPar protected void visitAll(List nodes, RuleContext ctx) { LOGGER.entering(CLASS_NAME, "visitAll"); for (Object element : nodes) { - ASTInput node = (ASTInput) element; - visit(node, ctx); + if (element instanceof PLSQLNode) { + ((PLSQLNode) element).jjtAccept(this, ctx); + } } LOGGER.exiting(CLASS_NAME, "visitAll"); } diff --git a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java index 438c84b1f1..c13c0c1a9a 100644 --- a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java +++ b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/rule/ScalaRule.java @@ -178,8 +178,8 @@ public class ScalaRule extends AbstractRule implements ScalaParserVisitor nodes, RuleContext ctx) { for (Node node : nodes) { - if (node instanceof ASTSource) { - visit((ASTSource) node, ctx); + if (node instanceof ScalaNode) { + ((ScalaNode) node).accept(this, ctx); } } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/AbstractVfRule.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/AbstractVfRule.java index 2329824e18..7eb1eb01c6 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/AbstractVfRule.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/rule/AbstractVfRule.java @@ -46,12 +46,8 @@ public abstract class AbstractVfRule extends AbstractRule implements VfParserVis protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - if (element instanceof ASTCompilationUnit) { - ASTCompilationUnit node = (ASTCompilationUnit) element; - visit(node, ctx); - } else { - VfNode node = (VfNode) element; - visit(node, ctx); + if (element instanceof VfNode) { + ((VfNode) element).jjtAccept(this, ctx); } } } diff --git a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/AbstractVmRule.java b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/AbstractVmRule.java index 2a50b7d114..24390a68b3 100644 --- a/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/AbstractVmRule.java +++ b/pmd-vm/src/main/java/net/sourceforge/pmd/lang/vm/rule/AbstractVmRule.java @@ -75,8 +75,9 @@ public abstract class AbstractVmRule extends AbstractRule implements VmParserVis protected void visitAll(final List nodes, final RuleContext ctx) { for (final Object element : nodes) { - final ASTprocess node = (ASTprocess) element; - visit(node, ctx); + if (element instanceof VmNode) { + ((VmNode) element).jjtAccept(this, ctx); + } } } diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRule.java index de7d31b8af..c144118c6d 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/rule/AbstractXmlRule.java @@ -65,8 +65,9 @@ public class AbstractXmlRule extends AbstractRule implements ImmutableLanguage { protected void visitAll(List nodes, RuleContext ctx) { for (Object element : nodes) { - XmlNode node = (XmlNode) element; - visit(node, ctx); + if (element instanceof XmlNode) { + visit((XmlNode) element, ctx); + } } }