@Override public String toString(Language object) { return object.getTerseName(); }
/** * Get the terse name of this LanguageVersion. This is Language terse name * appended with the LanguageVersion version if not an empty String. * * @return The terse name of this LanguageVersion. */ public String getTerseName() { return version.length() > 0 ? language.getTerseName() + ' ' + version : language.getTerseName(); }
@Override public int compare(Language o1, Language o2) { return o1.getTerseName().compareToIgnoreCase(o2.getTerseName()); } });
public static String commaSeparatedTerseNamesForLanguage(List<Language> languages) { StringBuilder builder = new StringBuilder(); for (Language language : languages) { if (builder.length() > 0) { builder.append(", "); } builder.append(language.getTerseName()); } return builder.toString(); }
AstPackageExplorer(Language language) { availableNodeNames = getClassesInPackage("net.sourceforge.pmd.lang." + language.getTerseName() + ".ast") .filter(clazz -> clazz.getSimpleName().startsWith("AST")) .filter(clazz -> !clazz.isInterface() && !Modifier.isAbstract(clazz.getModifiers())) .map(m -> m.getSimpleName().substring("AST".length())) .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList)); }
public static Language findLanguageByTerseName(String terseName) { for (Language language : getInstance().languages.values()) { if (language.getTerseName().equals(terseName)) { return language; } } return null; }
public void initialize(IndependentContext context, Language language, Class<?> functionsClass) { context.declareNamespace("pmd-" + language.getTerseName(), "java:" + functionsClass.getName()); } }
public String getLanguage() { return language != null ? language : LanguageRegistry.getDefaultLanguage().getTerseName(); }
/** * Gets the highlighter for a language if available. * * @param language Language to look for * * @return A highlighter, if available */ public static Optional<SyntaxHighlighter> getHighlighterForLanguage(Language language) { return Arrays.stream(AvailableSyntaxHighlighters.values()) .filter(e -> e.language.equals(language.getTerseName())) .findFirst() .map(h -> h.engine); } }
private List<String> getRuleSetFileNames() throws IOException, RuleSetNotFoundException { List<String> result = new ArrayList<>(); for (Language language : LanguageRegistry.getLanguages()) { result.addAll(getRuleSetFileNames(language.getTerseName())); } return result; }
private void throwUnknownLanguageVersionException(String minOrMax, String unknownVersion) { throw new IllegalArgumentException("Unknown " + minOrMax + " Language Version '" + unknownVersion + "' for Language '" + language.getTerseName() + "' for Rule " + name + "; supported Language Versions are: " + LanguageRegistry.commaSeparatedTerseNamesForLanguageVersion(language.getVersions())); }
List<Map<String, Object>> generateRuleReferenceSection(Map<Language, List<RuleSet>> sortedRulesets) { List<Map<String, Object>> newFolderItems = new ArrayList<>(); for (Map.Entry<Language, List<RuleSet>> entry : sortedRulesets.entrySet()) { Map<String, Object> newFolderItem = new LinkedHashMap<>(); newFolderItem.put("title", null); newFolderItem.put("output", "web, pdf"); Map<String, Object> subfolder = new LinkedHashMap<>(); newFolderItem.put("subfolders", Arrays.asList(subfolder)); subfolder.put("title", entry.getKey().getName() + " Rules"); subfolder.put("output", "web, pdf"); List<Map<String, Object>> subfolderitems = new ArrayList<>(); subfolder.put("subfolderitems", subfolderitems); Map<String, Object> ruleIndexSubfolderItem = new LinkedHashMap<>(); ruleIndexSubfolderItem.put("title", "Index"); ruleIndexSubfolderItem.put("output", "web, pdf"); ruleIndexSubfolderItem.put("url", "/pmd_rules_" + entry.getKey().getTerseName() + ".html"); subfolderitems.add(ruleIndexSubfolderItem); for (RuleSet ruleset : entry.getValue()) { Map<String, Object> subfolderitem = new LinkedHashMap<>(); subfolderitem.put("title", ruleset.getName()); subfolderitem.put("output", "web, pdf"); subfolderitem.put("url", "/pmd_rules_" + entry.getKey().getTerseName() + "_" + RuleSetUtils.getRuleSetFilename(ruleset) + ".html"); subfolderitems.add(subfolderitem); } newFolderItems.add(newFolderItem); } return newFolderItems; }
/** * Returns an Iterator of RuleSet objects loaded from descriptions from the * "categories.properties" resource for each Language with Rule support. * * @return An Iterator of RuleSet objects. * * @throws RuleSetNotFoundException if the ruleset file could not be found */ public Iterator<RuleSet> getRegisteredRuleSets() throws RuleSetNotFoundException { String rulesetsProperties = null; try { List<RuleSetReferenceId> ruleSetReferenceIds = new ArrayList<>(); for (Language language : LanguageRegistry.findWithRuleSupport()) { Properties props = new Properties(); rulesetsProperties = "category/" + language.getTerseName() + "/categories.properties"; try (InputStream inputStream = resourceLoader.loadClassPathResourceAsStreamOrThrow(rulesetsProperties)) { props.load(inputStream); } String rulesetFilenames = props.getProperty("rulesets.filenames"); ruleSetReferenceIds.addAll(RuleSetReferenceId.parse(rulesetFilenames)); } return createRuleSets(ruleSetReferenceIds).getRuleSetsIterator(); } catch (IOException ioe) { throw new RuntimeException("Couldn't find " + rulesetsProperties + "; please ensure that the directory is on the classpath. The current classpath is: " + System.getProperty("java.class.path")); } }
String languageTersename = entry.getKey().getTerseName(); String filename = LANGUAGE_INDEX_FILENAME_PATTERN .replace("${language.tersename}", languageTersename);
for (Map.Entry<Language, List<RuleSet>> entry : rulesets.entrySet()) { Language language = entry.getKey(); String languageTersename = language.getTerseName(); String languageName = language.getName(); for (RuleSet ruleset : entry.getValue()) {
Element ruleElement = createRuleElement(); if (language != null) { ruleElement.setAttribute("language", language.getTerseName());
languageChoiceBox.getSelectionModel().getSelectedItem().getTerseName(), messageField.getText(), "TODO",
} else { String expectedExternalInfoURL = "https?://pmd.(sourceforge.net|github.io)/.+/pmd_rules_" + language.getTerseName() + "_" + FilenameUtils.getBaseName(fileName) + ".html#" String expectedClassName = "net.sourceforge.pmd.lang." + language.getTerseName() + ".rule." + group + "." + rule.getName() + "Rule"; if (!rule.getRuleClass().equals(expectedClassName)
RuleBuilder builder = new RuleBuilder(name.getValue(), clazz.getValue().getCanonicalName(), language.getValue().getTerseName());
public static Language findLanguageByTerseName(String terseName) { for (Language language : getInstance().languages.values()) { if (language.getTerseName().equals(terseName)) { return language; } } return null; }