Deprecate BaseLanguageModule constructor

This commit is contained in:
Clément Fournier
2020-06-22 18:58:30 +02:00
parent d7f96e08d9
commit 659066ee02
15 changed files with 51 additions and 25 deletions

View File

@ -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, "cls", "trigger");
addVersion(String.valueOf((int) Version.CURRENT.getExternal()), new ApexHandler(), true);
}
}

View File

@ -15,6 +15,7 @@ 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.util.CollectionUtil;
/**
* Created by christoferdutz on 21.09.14.
@ -30,6 +31,12 @@ public abstract class BaseLanguageModule implements Language {
protected Map<String, LanguageVersion> versions;
protected LanguageVersion defaultVersion;
/**
* @deprecated Use the other constructor. It doesn't require a
* rulechain visitor class, but forces you to mention at least
* one file extension.
*/
@Deprecated
public BaseLanguageModule(String name, String shortName, String terseName, Class<?> ruleChainVisitorClass,
String... extensions) {
this.name = name;
@ -39,6 +46,18 @@ public abstract class BaseLanguageModule implements Language {
this.extensions = Arrays.asList(extensions);
}
public BaseLanguageModule(String name,
String shortName,
String terseName,
String firstExtension,
String... otherExtensions) {
this.name = name;
this.shortName = shortName;
this.terseName = terseName;
this.ruleChainVisitorClass = DefaultRulechainVisitor.class;
this.extensions = CollectionUtil.listOf(firstExtension, otherExtensions);
}
private void addVersion(String version, LanguageVersionHandler languageVersionHandler, boolean isDefault, String... versionAliases) {
if (versions == null) {
versions = new HashMap<>();
@ -194,7 +213,16 @@ public abstract class BaseLanguageModule implements Language {
@Override
protected void indexNodes(List<Node> nodes, RuleContext ctx) {
for (Node node : nodes) {
indexNodeRec(node);
}
}
protected void indexNodeRec(Node top) {
indexNode(top);
for (Node child : top.children()) {
indexNodeRec(child);
}
}
}

View File

@ -8,6 +8,7 @@ import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@ -187,6 +188,15 @@ public final class CollectionUtil {
return list;
}
@SafeVarargs
public static <T> List<T> listOf(T first, T... rest) {
// note: 7.0.x already has a better version of that
ArrayList<T> result = new ArrayList<>(rest.length + 1);
result.add(first);
Collections.addAll(result, rest);
return result;
}
/**
* Returns true if the objects are array instances and each of their

View File

@ -5,7 +5,6 @@
package net.sourceforge.pmd.lang.java;
import net.sourceforge.pmd.lang.BaseLanguageModule;
import net.sourceforge.pmd.lang.java.rule.JavaRuleChainVisitor;
/**
* Created by christoferdutz on 20.09.14.
@ -16,7 +15,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");

View File

@ -5,7 +5,6 @@
package net.sourceforge.pmd.lang.ecmascript;
import net.sourceforge.pmd.lang.BaseLanguageModule;
import net.sourceforge.pmd.lang.ecmascript.rule.EcmascriptRuleChainVisitor;
/**
* Created by christoferdutz on 20.09.14.
@ -16,7 +15,7 @@ public class EcmascriptLanguageModule extends BaseLanguageModule {
public static final String TERSE_NAME = "ecmascript";
public EcmascriptLanguageModule() {
super(NAME, null, TERSE_NAME, EcmascriptRuleChainVisitor.class, "js");
super(NAME, null, TERSE_NAME,"js");
addVersion("3", new Ecmascript3Handler(), true);
}

View File

@ -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);
}
}

View File

@ -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,7 +15,7 @@ public class PLSQLLanguageModule extends BaseLanguageModule {
public static final String TERSE_NAME = "plsql";
public PLSQLLanguageModule() {
super(NAME, null, TERSE_NAME, PLSQLRuleChainVisitor.class,
super(NAME, null, TERSE_NAME,
"sql",
"trg", // Triggers
"prc", "fnc", // Standalone Procedures and Functions

View File

@ -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);

View File

@ -36,7 +36,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);

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);
}
}