diff --git a/docs/_data/sidebars/pmd_sidebar.yml b/docs/_data/sidebars/pmd_sidebar.yml index 376df38be3..f0a57382be 100644 --- a/docs/_data/sidebars/pmd_sidebar.yml +++ b/docs/_data/sidebars/pmd_sidebar.yml @@ -160,24 +160,6 @@ entries: - title: Security output: web, pdf url: /pmd_rules_apex_security.html - - title: null - output: web, pdf - subfolders: - - title: Ecmascript Rules - output: web, pdf - subfolderitems: - - title: Index - output: web, pdf - url: /pmd_rules_ecmascript.html - - title: Best Practices - output: web, pdf - url: /pmd_rules_ecmascript_bestpractices.html - - title: Code Style - output: web, pdf - url: /pmd_rules_ecmascript_codestyle.html - - title: Error Prone - output: web, pdf - url: /pmd_rules_ecmascript_errorprone.html - title: null output: web, pdf subfolders: @@ -247,6 +229,24 @@ entries: - title: Security output: web, pdf url: /pmd_rules_jsp_security.html + - title: null + output: web, pdf + subfolders: + - title: JavaScript Rules + output: web, pdf + subfolderitems: + - title: Index + output: web, pdf + url: /pmd_rules_ecmascript.html + - title: Best Practices + output: web, pdf + url: /pmd_rules_ecmascript_bestpractices.html + - title: Code Style + output: web, pdf + url: /pmd_rules_ecmascript_codestyle.html + - title: Error Prone + output: web, pdf + url: /pmd_rules_ecmascript_errorprone.html - title: null output: web, pdf subfolders: diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/cpd/ApexLanguage.java b/pmd-apex/src/main/java/net/sourceforge/pmd/cpd/ApexLanguage.java index 0bb7bd7014..5ca6959052 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/cpd/ApexLanguage.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/cpd/ApexLanguage.java @@ -6,6 +6,8 @@ package net.sourceforge.pmd.cpd; import java.util.Properties; +import net.sourceforge.pmd.lang.apex.ApexLanguageModule; + public class ApexLanguage extends AbstractLanguage { public ApexLanguage() { @@ -13,7 +15,7 @@ public class ApexLanguage extends AbstractLanguage { } public ApexLanguage(Properties properties) { - super("Apex", "apex", new ApexTokenizer(), ".cls"); + super(ApexLanguageModule.NAME, ApexLanguageModule.TERSE_NAME, new ApexTokenizer(), ApexLanguageModule.EXTENSIONS); setProperties(properties); } diff --git a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java index a5fca0cce0..33c9f5b0d6 100644 --- a/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java +++ b/pmd-apex/src/main/java/net/sourceforge/pmd/lang/apex/ApexLanguageModule.java @@ -8,6 +8,7 @@ import static net.sourceforge.pmd.util.CollectionUtil.listOf; import java.util.List; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageModuleBase; import net.sourceforge.pmd.lang.LanguageProcessor; @@ -19,14 +20,18 @@ public class ApexLanguageModule extends LanguageModuleBase { public static final String NAME = "Apex"; public static final String TERSE_NAME = "apex"; + @InternalApi public static final List VERSIONS = listOf("52", "53", "54", "55", "56", "57"); + @InternalApi + public static final List EXTENSIONS = listOf("cls", "trigger"); public ApexLanguageModule() { super(createMetadata()); } private static LanguageMetadata createMetadata() { - LanguageMetadata languageMetadata = LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("cls", "trigger"); + LanguageMetadata languageMetadata = LanguageMetadata.withId(TERSE_NAME).name(NAME); + languageMetadata.extensions(EXTENSIONS.get(0), EXTENSIONS.subList(0, EXTENSIONS.size()).toArray(new String[0])); int lastVersion = VERSIONS.size() - 1; VERSIONS.subList(0, lastVersion).forEach(languageMetadata::addVersion); languageMetadata.addDefaultVersion(VERSIONS.get(lastVersion)); diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AbstractLanguage.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AbstractLanguage.java index 7e08eccf8a..4045ddbf16 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AbstractLanguage.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/AbstractLanguage.java @@ -11,6 +11,7 @@ import java.util.Arrays; import java.util.List; import java.util.Properties; import java.util.function.Predicate; +import java.util.stream.Collectors; import net.sourceforge.pmd.internal.util.PredicateUtil; @@ -22,11 +23,23 @@ public abstract class AbstractLanguage implements Language { private final List extensions; public AbstractLanguage(String name, String terseName, Tokenizer tokenizer, String... extensions) { + this(name, terseName, tokenizer, Arrays.asList(extensions)); + } + + protected AbstractLanguage(String name, String terseName, Tokenizer tokenizer, List extensions) { this.name = name; this.terseName = terseName; this.tokenizer = tokenizer; - this.fileFilter = PredicateUtil.toNormalizedFileFilter(PredicateUtil.getFileExtensionFilter(extensions).or(it -> Files.isDirectory(Paths.get(it)))); - this.extensions = Arrays.asList(extensions); + List extensionsWithDot = extensions.stream().map(e -> { + if (e.length() > 0 && e.charAt(0) != '.') { + return "." + e; + } + return e; + }).collect(Collectors.toList()); + this.fileFilter = PredicateUtil.toNormalizedFileFilter( + PredicateUtil.getFileExtensionFilter(extensionsWithDot.toArray(new String[0])) + .or(it -> Files.isDirectory(Paths.get(it)))); + this.extensions = extensionsWithDot; } @Override diff --git a/pmd-doc/src/test/resources/expected/pmd_sidebar.yml b/pmd-doc/src/test/resources/expected/pmd_sidebar.yml index b7ce41869c..685cfc5851 100644 --- a/pmd-doc/src/test/resources/expected/pmd_sidebar.yml +++ b/pmd-doc/src/test/resources/expected/pmd_sidebar.yml @@ -15,15 +15,6 @@ entries: - title: Index output: web, pdf url: /pmd_rules_apex.html - - title: null - output: web, pdf - subfolders: - - title: Ecmascript Rules - output: web, pdf - subfolderitems: - - title: Index - output: web, pdf - url: /pmd_rules_ecmascript.html - title: null output: web, pdf subfolders: @@ -54,6 +45,15 @@ entries: - title: Index output: web, pdf url: /pmd_rules_jsp.html + - title: null + output: web, pdf + subfolders: + - title: JavaScript Rules + output: web, pdf + subfolderitems: + - title: Index + output: web, pdf + url: /pmd_rules_ecmascript.html - title: null output: web, pdf subfolders: diff --git a/pmd-doc/src/test/resources/net/sourceforge/pmd/docs/sidebar.yml b/pmd-doc/src/test/resources/net/sourceforge/pmd/docs/sidebar.yml index 69435aad61..0b8bcc1128 100644 --- a/pmd-doc/src/test/resources/net/sourceforge/pmd/docs/sidebar.yml +++ b/pmd-doc/src/test/resources/net/sourceforge/pmd/docs/sidebar.yml @@ -1,15 +1,3 @@ -- title: null - output: web, pdf - subfolders: - - title: Ecmascript Rules - output: web, pdf - subfolderitems: - - title: Index - output: web, pdf - url: /pmd_rules_ecmascript.html - - title: test - output: web, pdf - url: /pmd_rules_ecmascript_bestpractices.html - title: null output: web, pdf subfolders: @@ -25,6 +13,18 @@ - title: test2 output: web, pdf url: /pmd_rules_java_codestyle.html +- title: null + output: web, pdf + subfolders: + - title: JavaScript Rules + output: web, pdf + subfolderitems: + - title: Index + output: web, pdf + url: /pmd_rules_ecmascript.html + - title: test + output: web, pdf + url: /pmd_rules_ecmascript_bestpractices.html - title: null output: web, pdf subfolders: diff --git a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlCpdLanguage.java b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlCpdLanguage.java index 3c6c0fdbde..740acfff6b 100644 --- a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlCpdLanguage.java +++ b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlCpdLanguage.java @@ -11,6 +11,6 @@ import net.sourceforge.pmd.lang.html.ast.HtmlTokenizer; public final class HtmlCpdLanguage extends AbstractLanguage { public HtmlCpdLanguage() { - super("HTML", "html", new HtmlTokenizer(), ".html"); + super(HtmlLanguageModule.NAME, HtmlLanguageModule.TERSE_NAME, new HtmlTokenizer(), HtmlLanguageModule.EXTENSIONS); } } diff --git a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java index e93401e190..0743f248b9 100644 --- a/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java +++ b/pmd-html/src/main/java/net/sourceforge/pmd/lang/html/HtmlLanguageModule.java @@ -2,9 +2,13 @@ * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ - package net.sourceforge.pmd.lang.html; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; @@ -12,10 +16,12 @@ public final class HtmlLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "HTML"; public static final String TERSE_NAME = "html"; + @InternalApi + public static final List EXTENSIONS = listOf("html", "htm", "xhtml", "xht", "shtml"); public HtmlLanguageModule() { super(LanguageMetadata.withId(TERSE_NAME).name(NAME) - .extensions("html", "htm", "xhtml", "xht", "shtml") + .extensions(EXTENSIONS.get(0), EXTENSIONS.subList(0, EXTENSIONS.size()).toArray(new String[0])) .addVersion("4") .addDefaultVersion("5"), new HtmlHandler()); diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaLanguage.java b/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaLanguage.java index 0ff3638c99..2a68ea48a5 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaLanguage.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaLanguage.java @@ -6,13 +6,15 @@ package net.sourceforge.pmd.cpd; import java.util.Properties; +import net.sourceforge.pmd.lang.java.JavaLanguageModule; + public class JavaLanguage extends AbstractLanguage { public JavaLanguage() { this(System.getProperties()); } public JavaLanguage(Properties properties) { - super("Java", "java", new JavaTokenizer(), ".java"); + super(JavaLanguageModule.NAME, JavaLanguageModule.TERSE_NAME, new JavaTokenizer(), JavaLanguageModule.EXTENSIONS); setProperties(properties); } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java index 4bd8bbde05..bc3658ea79 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/JavaLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.java; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageModuleBase; import net.sourceforge.pmd.lang.LanguageProcessor; @@ -19,9 +24,11 @@ public class JavaLanguageModule extends LanguageModuleBase { public static final String NAME = "Java"; public static final String TERSE_NAME = "java"; + @InternalApi + public static final List EXTENSIONS = listOf("java"); public JavaLanguageModule() { - super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("java") + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0)) .addVersion("1.3") .addVersion("1.4") .addVersion("1.5", "5") diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptLanguage.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptLanguage.java index 2ad5fd6f41..e7edb068fd 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptLanguage.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/cpd/EcmascriptLanguage.java @@ -4,12 +4,15 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.ecmascript.EcmascriptLanguageModule; + /** * * @author Zev Blut zb@ubit.com */ public class EcmascriptLanguage extends AbstractLanguage { public EcmascriptLanguage() { - super("JavaScript", "ecmascript", new EcmascriptTokenizer(), ".js"); + super(EcmascriptLanguageModule.NAME, EcmascriptLanguageModule.TERSE_NAME, new EcmascriptTokenizer(), + EcmascriptLanguageModule.EXTENSIONS); } } diff --git a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java index ea4ed73860..e8c56f48c3 100644 --- a/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java +++ b/pmd-javascript/src/main/java/net/sourceforge/pmd/lang/ecmascript/EcmascriptLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.ecmascript; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParser; @@ -14,11 +19,13 @@ import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; */ public class EcmascriptLanguageModule extends SimpleLanguageModuleBase { - public static final String NAME = "Ecmascript"; + public static final String NAME = "JavaScript"; public static final String TERSE_NAME = "ecmascript"; + @InternalApi + public static final List EXTENSIONS = listOf("js"); public EcmascriptLanguageModule() { - super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("js") + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0)) .addVersion("3") .addVersion("5") .addVersion("6", "ES6", "ES2015") diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPLanguage.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPLanguage.java index c4c480cecc..26b2ef171d 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPLanguage.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/cpd/JSPLanguage.java @@ -4,8 +4,10 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.jsp.JspLanguageModule; + public class JSPLanguage extends AbstractLanguage { public JSPLanguage() { - super("JSP", "jsp", new JSPTokenizer(), ".jsp", ".jspx", ".jspf", ".tag"); + super(JspLanguageModule.NAME, JspLanguageModule.TERSE_NAME, new JSPTokenizer(), JspLanguageModule.EXTENSIONS); } } diff --git a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java index d36076551d..33fb67c449 100644 --- a/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java +++ b/pmd-jsp/src/main/java/net/sourceforge/pmd/lang/jsp/JspLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.jsp; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** @@ -13,10 +18,12 @@ public class JspLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Java Server Pages"; public static final String TERSE_NAME = "jsp"; + @InternalApi + public static final List EXTENSIONS = listOf("jsp", "jspx", "jspf", "tag"); public JspLanguageModule() { super(LanguageMetadata.withId(TERSE_NAME).name(NAME).shortName("JSP") - .extensions("jsp", "jspx", "jspf", "tag") + .extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) .addVersion("2") .addDefaultVersion("3"), new JspHandler()); diff --git a/pmd-kotlin/src/main/java/net/sourceforge/pmd/cpd/KotlinLanguage.java b/pmd-kotlin/src/main/java/net/sourceforge/pmd/cpd/KotlinLanguage.java index 4a14aa766f..1ec0e63349 100644 --- a/pmd-kotlin/src/main/java/net/sourceforge/pmd/cpd/KotlinLanguage.java +++ b/pmd-kotlin/src/main/java/net/sourceforge/pmd/cpd/KotlinLanguage.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.kotlin.KotlinLanguageModule; + /** * Language implementation for Kotlin */ @@ -13,6 +15,6 @@ public class KotlinLanguage extends AbstractLanguage { * Creates a new Kotlin Language instance. */ public KotlinLanguage() { - super("Kotlin", "kotlin", new KotlinTokenizer(), ".kt"); + super(KotlinLanguageModule.NAME, KotlinLanguageModule.TERSE_NAME, new KotlinTokenizer(), KotlinLanguageModule.EXTENSIONS); } } diff --git a/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java b/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java index d82342bc4e..1bdaa924c7 100644 --- a/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java +++ b/pmd-kotlin/src/main/java/net/sourceforge/pmd/lang/kotlin/KotlinLanguageModule.java @@ -4,7 +4,12 @@ package net.sourceforge.pmd.lang.kotlin; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + import net.sourceforge.pmd.annotation.Experimental; +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** @@ -20,11 +25,14 @@ public class KotlinLanguageModule extends SimpleLanguageModuleBase { /** The terse name. */ public static final String TERSE_NAME = "kotlin"; + @InternalApi + public static final List EXTENSIONS = listOf("kt", "ktm"); + /** * Create a new instance of Kotlin Language Module. */ public KotlinLanguageModule() { - super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("kt", "ktm") + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) .addVersion("1.6") .addDefaultVersion("1.7"), new KotlinHandler()); diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/cpd/ModelicaLanguage.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/cpd/ModelicaLanguage.java index 53852955e5..c7c5a58b2c 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/cpd/ModelicaLanguage.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/cpd/ModelicaLanguage.java @@ -8,6 +8,6 @@ import net.sourceforge.pmd.lang.modelica.ModelicaLanguageModule; public class ModelicaLanguage extends AbstractLanguage { public ModelicaLanguage() { - super(ModelicaLanguageModule.NAME, ModelicaLanguageModule.TERSE_NAME, new ModelicaTokenizer(), ".mo"); + super(ModelicaLanguageModule.NAME, ModelicaLanguageModule.TERSE_NAME, new ModelicaTokenizer(), ModelicaLanguageModule.EXTENSIONS); } } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java index 290533ba0d..e0c6863a8b 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ModelicaLanguageModule.java @@ -4,15 +4,22 @@ package net.sourceforge.pmd.lang.modelica; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; public class ModelicaLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Modelica"; public static final String TERSE_NAME = "modelica"; + @InternalApi + public static final List EXTENSIONS = listOf("mo"); public ModelicaLanguageModule() { super(LanguageMetadata.withId(TERSE_NAME).name(NAME) - .extensions("mo") + .extensions(EXTENSIONS.get(0)) .addVersion("3.4") .addDefaultVersion("3.5"), new ModelicaHandler()); diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/cpd/PLSQLLanguage.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/cpd/PLSQLLanguage.java index 5331ec9f72..3a744e12ae 100755 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/cpd/PLSQLLanguage.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/cpd/PLSQLLanguage.java @@ -6,22 +6,15 @@ package net.sourceforge.pmd.cpd; import java.util.Properties; +import net.sourceforge.pmd.lang.plsql.PLSQLLanguageModule; + /** * * @author Stuart Turton sturton@users.sourceforge.net */ public class PLSQLLanguage extends AbstractLanguage { public PLSQLLanguage() { - super("PL/SQL", "plsql", new PLSQLTokenizer(), - ".sql", - ".trg", // Triggers - ".prc", ".fnc", // Standalone Procedures and Functions - ".pld", // Oracle*Forms - ".pls", ".plh", ".plb", // Packages - ".pck", ".pks", ".pkh", ".pkb", // Packages - ".typ", ".tyb", // Object Types - ".tps", ".tpb" // Object Types - ); + super(PLSQLLanguageModule.NAME, PLSQLLanguageModule.TERSE_NAME, new PLSQLTokenizer(), PLSQLLanguageModule.EXTENSIONS); } @Override diff --git a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java index 6422362df0..01f262ac4b 100644 --- a/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java +++ b/pmd-plsql/src/main/java/net/sourceforge/pmd/lang/plsql/PLSQLLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.plsql; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** @@ -13,27 +18,29 @@ public class PLSQLLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "PLSQL"; public static final String TERSE_NAME = "plsql"; + @InternalApi + public static final List EXTENSIONS = listOf( + "sql", + "trg", // Triggers + "prc", "fnc", // Standalone Procedures and Functions + "pld", // Oracle*Forms + "pls", "plh", "plb", // Packages + "pck", "pks", "pkh", "pkb", // Packages + "typ", "tyb", // Object Types + "tps", "tpb" // Object Types + ); public PLSQLLanguageModule() { super( LanguageMetadata.withId(TERSE_NAME) .name(NAME) - .extensions( - "sql", - "trg", // Triggers - "prc", "fnc", // Standalone Procedures and Functions - "pld", // Oracle*Forms - "pls", "plh", "plb", // Packages - "pck", "pks", "pkh", "pkb", // Packages - "typ", "tyb", // Object Types - "tps", "tpb" // Object Types - ) - .addVersion("11g") - .addVersion("12c_Release_1", "12.1") - .addVersion("12c_Release_2", "12.2") - .addVersion("18c") - .addVersion("19c") - .addDefaultVersion("21c"), + .extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) + .addVersion("11g") + .addVersion("12c_Release_1", "12.1") + .addVersion("12c_Release_2", "12.2") + .addVersion("18c") + .addVersion("19c") + .addDefaultVersion("21c"), new PLSQLHandler() ); } diff --git a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java index fd1f1b6da9..fe1e4c6f03 100644 --- a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java +++ b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/cpd/ScalaLanguage.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.scala.ScalaLanguageModule; + /** * Language implementation for Scala. */ @@ -13,6 +15,6 @@ public class ScalaLanguage extends AbstractLanguage { * Creates a new Scala Language instance. */ public ScalaLanguage() { - super("Scala", "scala", new ScalaTokenizer(), ".scala"); + super(ScalaLanguageModule.NAME, ScalaLanguageModule.TERSE_NAME, new ScalaTokenizer(), ScalaLanguageModule.EXTENSIONS); } } diff --git a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java index 1825eec5c6..6bfa00c615 100644 --- a/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java +++ b/pmd-scala-modules/pmd-scala-common/src/main/java/net/sourceforge/pmd/lang/scala/ScalaLanguageModule.java @@ -4,6 +4,10 @@ package net.sourceforge.pmd.lang.scala; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + import org.checkerframework.checker.nullness.qual.NonNull; import net.sourceforge.pmd.annotation.InternalApi; @@ -24,11 +28,14 @@ public class ScalaLanguageModule extends SimpleLanguageModuleBase { /** The terse name. */ public static final String TERSE_NAME = "scala"; + @InternalApi + public static final List EXTENSIONS = listOf("scala"); + /** * Create a new instance of Scala Language Module. */ public ScalaLanguageModule() { - super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions("scala") + super(LanguageMetadata.withId(TERSE_NAME).name(NAME).extensions(EXTENSIONS.get(0)) .addVersion("2.10") .addVersion("2.11") .addVersion("2.12") diff --git a/pmd-swift/src/main/java/net/sourceforge/pmd/cpd/SwiftLanguage.java b/pmd-swift/src/main/java/net/sourceforge/pmd/cpd/SwiftLanguage.java index 841e0861fd..297f27cf24 100644 --- a/pmd-swift/src/main/java/net/sourceforge/pmd/cpd/SwiftLanguage.java +++ b/pmd-swift/src/main/java/net/sourceforge/pmd/cpd/SwiftLanguage.java @@ -4,6 +4,8 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.swift.SwiftLanguageModule; + /** * Language implementation for Swift */ @@ -13,6 +15,6 @@ public class SwiftLanguage extends AbstractLanguage { * Creates a new Swift Language instance. */ public SwiftLanguage() { - super("Swift", "swift", new SwiftTokenizer(), ".swift"); + super(SwiftLanguageModule.NAME, SwiftLanguageModule.TERSE_NAME, new SwiftTokenizer(), SwiftLanguageModule.EXTENSIONS); } } diff --git a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java index 5e94c303f0..ac2daf61a5 100644 --- a/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java +++ b/pmd-swift/src/main/java/net/sourceforge/pmd/lang/swift/SwiftLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.swift; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** @@ -16,12 +21,15 @@ public class SwiftLanguageModule extends SimpleLanguageModuleBase { /** The terse name. */ public static final String TERSE_NAME = "swift"; + @InternalApi + public static final List EXTENSIONS = listOf("swift"); + /** * Create a new instance of Swift Language Module. */ public SwiftLanguageModule() { super(LanguageMetadata.withId(TERSE_NAME).name(NAME) - .extensions("swift") + .extensions(EXTENSIONS.get(0)) .addVersion("4.2") .addVersion("5.0") .addVersion("5.1") diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfLanguage.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfLanguage.java index 301bfc15c3..5551e91a5d 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfLanguage.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/cpd/VfLanguage.java @@ -4,12 +4,14 @@ package net.sourceforge.pmd.cpd; +import net.sourceforge.pmd.lang.vf.VfLanguageModule; + /** * @author sergey.gorbaty * */ public class VfLanguage extends AbstractLanguage { public VfLanguage() { - super("VisualForce", "vf", new VfTokenizer(), ".page", ".component"); + super(VfLanguageModule.NAME, VfLanguageModule.TERSE_NAME, new VfTokenizer(), VfLanguageModule.EXTENSIONS); } } diff --git a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java index 3223c311d2..74f8596ea5 100644 --- a/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java +++ b/pmd-visualforce/src/main/java/net/sourceforge/pmd/lang/vf/VfLanguageModule.java @@ -4,13 +4,17 @@ package net.sourceforge.pmd.lang.vf; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguagePropertyBundle; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.apex.ApexLanguageModule; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; - /** * @author sergey.gorbaty */ @@ -18,6 +22,8 @@ public class VfLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "Salesforce VisualForce"; public static final String TERSE_NAME = "vf"; + @InternalApi + public static final List EXTENSIONS = listOf("page", "component"); public VfLanguageModule() { super(createMetdata(), @@ -26,7 +32,7 @@ public class VfLanguageModule extends SimpleLanguageModuleBase { private static LanguageMetadata createMetdata() { LanguageMetadata languageMetadata = LanguageMetadata.withId(TERSE_NAME).name(NAME) - .extensions("page", "component") + .extensions(EXTENSIONS.get(0), EXTENSIONS.toArray(new String[0])) .dependsOnLanguage(ApexLanguageModule.TERSE_NAME); // use the same versions as in Apex int lastVersion = ApexLanguageModule.VERSIONS.size() - 1; diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java index 21bf0e22bc..838fac01d0 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/XmlLanguageModule.java @@ -4,6 +4,11 @@ package net.sourceforge.pmd.lang.xml; +import static net.sourceforge.pmd.util.CollectionUtil.listOf; + +import java.util.List; + +import net.sourceforge.pmd.annotation.InternalApi; import net.sourceforge.pmd.lang.impl.SimpleLanguageModuleBase; /** @@ -13,10 +18,12 @@ public class XmlLanguageModule extends SimpleLanguageModuleBase { public static final String NAME = "XML"; public static final String TERSE_NAME = "xml"; + @InternalApi + public static final List EXTENSIONS = listOf("xml"); public XmlLanguageModule() { super(LanguageMetadata.withId(TERSE_NAME).name(NAME) - .extensions("xml") + .extensions(EXTENSIONS.get(0)) .addVersion("1.0") .addDefaultVersion("1.1"), new XmlHandler()); diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/xml/cpd/XmlLanguage.java b/pmd-xml/src/main/java/net/sourceforge/pmd/xml/cpd/XmlLanguage.java index 38b38c8eb3..c5c849a248 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/xml/cpd/XmlLanguage.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/xml/cpd/XmlLanguage.java @@ -5,10 +5,11 @@ package net.sourceforge.pmd.xml.cpd; import net.sourceforge.pmd.cpd.AbstractLanguage; +import net.sourceforge.pmd.lang.xml.XmlLanguageModule; public class XmlLanguage extends AbstractLanguage { public XmlLanguage() { - super("Xml", "xml", new XmlTokenizer(), ".xml"); + super(XmlLanguageModule.NAME, XmlLanguageModule.TERSE_NAME, new XmlTokenizer(), XmlLanguageModule.EXTENSIONS); } }