Merge branch 'language-sorting' into pmd/5.5.x

This commit is contained in:
Andreas Dangel
2017-02-24 15:10:02 +01:00
2 changed files with 20 additions and 3 deletions

View File

@@ -6,6 +6,8 @@ package net.sourceforge.pmd.lang;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -21,19 +23,34 @@ public final class LanguageRegistry {
private Map<String, Language> languages;
private LanguageRegistry() {
languages = new LinkedHashMap<>();
List<Language> languagesList = new ArrayList<>();
ServiceLoader<Language> languageLoader = ServiceLoader.load(Language.class);
Iterator<Language> iterator = languageLoader.iterator();
while (iterator.hasNext()) {
try {
Language language = iterator.next();
languages.put(language.getName(), language);
languagesList.add(language);
} catch (UnsupportedClassVersionError e) {
// Some languages require java8 and are therefore only available
// if java8 or later is used as runtime.
System.err.println("Ignoring language for PMD: " + e.toString());
}
}
// sort languages by terse name. Avoiding differences in the order of languages
// across JVM versions / OS.
Collections.sort(languagesList, new Comparator<Language>() {
@Override
public int compare(Language o1, Language o2) {
return o1.getTerseName().compareToIgnoreCase(o2.getTerseName());
}
});
// using a linked hash map to maintain insertion order
languages = new LinkedHashMap<>();
for (Language language : languagesList) {
languages.put(language.getName(), language);
}
}
public static LanguageRegistry getInstance() {

View File

@@ -71,7 +71,7 @@ public class BinaryDistributionIT {
PMDExecutionResult result;
result = PMDExecutor.runPMD(tempDir, "-h");
result.assertPMDExecutionResult(1, "apex, java, ecmascript, jsp, plsql, vm, xml, xsl, wsdl, pom");
result.assertPMDExecutionResult(1, "apex, ecmascript, java, jsp, plsql, pom, vm, wsdl, xml, xsl");
result = PMDExecutor.runPMDRules(tempDir, srcDir, "java-basic");
result.assertPMDExecutionResult(4, "JumbledIncrementer.java:8:");