Fix compile errors for CPD only languages

This commit is contained in:
Andreas Dangel
2020-07-17 14:57:43 +02:00
parent 7ae424a35b
commit e4690cb56a
13 changed files with 37 additions and 13 deletions

View File

@ -71,7 +71,16 @@ public final class LanguageRegistry {
// TODO This is unnecessary, if the incomplete language modules have been removed.
List<Language> languages = new ArrayList<>();
for (Language language : getInstance().languages.values()) {
if (language.getRuleChainVisitorClass() != null) {
LanguageVersionHandler languageVersionHandler = language.getDefaultVersion().getLanguageVersionHandler();
boolean pmdSupported = false;
if (languageVersionHandler != null) {
ParserOptions defaultParserOptions = languageVersionHandler.getDefaultParserOptions();
Parser parser = languageVersionHandler.getParser(defaultParserOptions);
pmdSupported = parser.canParse();
}
if (pmdSupported) {
languages.add(language);
}
}

View File

@ -24,7 +24,7 @@ public class CppLanguageModule extends BaseLanguageModule {
* extensions for C++.
*/
public CppLanguageModule() {
super(NAME, null, TERSE_NAME, null, "h", "c", "cpp", "cxx", "cc", "C");
super(NAME, null, TERSE_NAME, "h", "c", "cpp", "cxx", "cc", "C");
addVersion("", new CppHandler(), true);
}
}

View File

@ -23,7 +23,7 @@ public class CsLanguageModule extends BaseLanguageModule {
* Create a new instance of C# Language Module.
*/
public CsLanguageModule() {
super(NAME, null, TERSE_NAME, null, "cs");
super(NAME, null, TERSE_NAME, "cs");
addVersion("", null, true);
}
}

View File

@ -23,7 +23,7 @@ public class FortranLanguageModule extends BaseLanguageModule {
* Creates a new instance of {@link FortranLanguageModule}
*/
public FortranLanguageModule() {
super(NAME, null, TERSE_NAME, null, "for", "f", "f66", "f77", "f90");
super(NAME, null, TERSE_NAME, "for", "f", "f66", "f77", "f90");
addVersion("", null, true);
}

View File

@ -20,7 +20,7 @@ public class GoLanguageModule extends BaseLanguageModule {
* Create a new instance of Golang Language Module.
*/
public GoLanguageModule() {
super(NAME, null, TERSE_NAME, null, "go");
super(NAME, null, TERSE_NAME, "go");
addVersion("1", null, true);
}
}

View File

@ -23,7 +23,7 @@ public class GroovyLanguageModule extends BaseLanguageModule {
* Create a new instance of Groovy Language Module.
*/
public GroovyLanguageModule() {
super(NAME, null, TERSE_NAME, null, "groovy");
super(NAME, null, TERSE_NAME, "groovy");
addVersion("", null, true);
}
}

View File

@ -24,7 +24,7 @@ public class MatlabLanguageModule extends BaseLanguageModule {
* file extensions for Matlab.
*/
public MatlabLanguageModule() {
super(NAME, null, TERSE_NAME, null, "m");
super(NAME, null, TERSE_NAME, "m");
addVersion("", new MatlabHandler(), true);
}
}

View File

@ -24,7 +24,7 @@ public class ObjectiveCLanguageModule extends BaseLanguageModule {
* default file extensions for Objective-C.
*/
public ObjectiveCLanguageModule() {
super(NAME, null, TERSE_NAME, null, "h", "m");
super(NAME, null, TERSE_NAME, "h", "m");
addVersion("", new ObjectiveCHandler(), true);
}
}

View File

@ -23,7 +23,7 @@ public class PhpLanguageModule extends BaseLanguageModule {
* Create a new instance of the PHP Language Module.
*/
public PhpLanguageModule() {
super(NAME, "PHP", TERSE_NAME, null, "php", "class");
super(NAME, "PHP", TERSE_NAME, "php", "class");
addVersion("", null, true);
}

View File

@ -24,7 +24,7 @@ public class PythonLanguageModule extends BaseLanguageModule {
* file extensions for Python.
*/
public PythonLanguageModule() {
super(NAME, null, TERSE_NAME, null, "py");
super(NAME, null, TERSE_NAME, "py");
addVersion("", new PythonHandler(), true);
}
}

View File

@ -23,7 +23,7 @@ public class RubyLanguageModule extends BaseLanguageModule {
* Creates a new Ruby Language Module instance.
*/
public RubyLanguageModule() {
super(NAME, null, TERSE_NAME, null, "rb", "cgi", "class");
super(NAME, null, TERSE_NAME, "rb", "cgi", "class");
addVersion("", null, true);
}
}

View File

@ -23,7 +23,7 @@ public class SwiftLanguageModule extends BaseLanguageModule {
* Create a new instance of Swift Language Module.
*/
public SwiftLanguageModule() {
super(NAME, null, TERSE_NAME, null, "swift");
super(NAME, null, TERSE_NAME, "swift");
addVersion("", null, true);
}
}

View File

@ -19,6 +19,9 @@ import net.sourceforge.pmd.ant.SourceLanguage;
import net.sourceforge.pmd.lang.Language;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.LanguageVersion;
import net.sourceforge.pmd.lang.LanguageVersionHandler;
import net.sourceforge.pmd.lang.Parser;
import net.sourceforge.pmd.lang.ParserOptions;
import net.sourceforge.pmd.util.ResourceLoader;
/**
@ -103,6 +106,18 @@ public class AbstractLanguageVersionTest {
assertEquals(expected, languageVersion);
}
private boolean supportsRules() {
if (expected == null || expected.getLanguage().getRuleChainVisitorClass() == null
|| expected.getLanguageVersionHandler() == null) {
return false;
}
LanguageVersionHandler languageVersionHandler = expected.getLanguageVersionHandler();
ParserOptions defaultParserOptions = languageVersionHandler.getDefaultParserOptions();
Parser parser = languageVersionHandler.getParser(defaultParserOptions);
return parser.canParse();
}
/**
* Makes sure, that for each language a "categories.properties" file exists.
*
@ -112,7 +127,7 @@ public class AbstractLanguageVersionTest {
@Test
public void testRegisteredRulesets() throws Exception {
// only check for languages, that support rules
if (expected == null || expected.getLanguage().getRuleChainVisitorClass() == null) {
if (!supportsRules()) {
return;
}