use of org.sonarsource.sonarlint.core.container.standalone.StandaloneGlobalContainer in project sonarlint-core by SonarSource.
the class Main method main.
public static void main(String[] args) throws MalformedURLException {
String version = args[0];
List<Path> pluginPaths = new ArrayList<>();
for (int i = 1; i < args.length; i++) {
pluginPaths.add(Paths.get(args[i]));
}
StandaloneGlobalConfiguration.Builder builder = StandaloneGlobalConfiguration.builder().setLogOutput(new LogOutput() {
@Override
public void log(String formattedMessage, Level level) {
// Ignore
}
});
for (Path path : pluginPaths) {
builder.addPlugin(path.toUri().toURL());
}
StandaloneSonarLintEngineImpl client = new StandaloneSonarLintEngineImpl(builder.build());
client.start();
Table<String, String, RuleDetails> rulesByKeyAndLanguage = TreeBasedTable.create();
for (String ruleKeyStr : ((StandaloneGlobalContainer) client.getGlobalContainer()).getActiveRuleKeys()) {
RuleDetails ruleDetails = client.getRuleDetails(ruleKeyStr);
RuleKey ruleKey = RuleKey.parse(ruleKeyStr);
rulesByKeyAndLanguage.put(ruleKey.rule(), ruleDetails.getLanguage(), ruleDetails);
}
try {
System.out.print("{");
System.out.print("\"version\": \"");
System.out.print(version);
System.out.print("\",");
System.out.print("\"rules\": [");
boolean first = true;
for (String ruleKey : rulesByKeyAndLanguage.rowKeySet()) {
if (!first) {
System.out.print(",");
}
first = false;
System.out.print("{");
System.out.print("\"key\": \"");
System.out.print(ruleKey);
System.out.print("\",");
System.out.print("\"title\": \"");
System.out.print(escapeJson(rulesByKeyAndLanguage.row(ruleKey).values().iterator().next().getName()));
System.out.print("\",");
Set<String> mergedTags = new HashSet<>();
for (RuleDetails rule : rulesByKeyAndLanguage.row(ruleKey).values()) {
mergedTags.addAll(Arrays.asList(rule.getTags()));
}
writeTags(mergedTags);
System.out.print(",");
System.out.print("\"implementations\": [");
boolean firstLang = true;
for (Map.Entry<String, RuleDetails> detailPerLanguage : rulesByKeyAndLanguage.row(ruleKey).entrySet()) {
if (!firstLang) {
System.out.print(",");
}
firstLang = false;
RuleDetails ruleDetails = detailPerLanguage.getValue();
System.out.print("{");
System.out.print("\"key\": \"");
System.out.print(ruleDetails.getKey());
System.out.print("\",");
System.out.print("\"language\": \"");
System.out.print(languageLabel(detailPerLanguage.getKey()));
System.out.print("\",");
System.out.print("\"title\": \"");
System.out.print(escapeJson(ruleDetails.getName()));
System.out.print("\",");
System.out.print("\"description\": \"");
System.out.print(escapeJson(ruleDetails.getHtmlDescription()));
System.out.print("\",");
System.out.print("\"severity\": \"");
System.out.print(StringUtils.capitalize(ruleDetails.getSeverity().toLowerCase()));
System.out.print("\",");
String[] tags = ruleDetails.getTags();
writeTags(Arrays.asList(tags));
System.out.print("}");
}
System.out.print("]");
System.out.print("}");
}
System.out.print("]");
System.out.print("}");
} finally {
client.stop();
}
}
Aggregations