Skip to content

Commit

Permalink
[doc] List all languages in rule doc
Browse files Browse the repository at this point in the history
Even without rules.

- Relates pmd#4205
- Relates pmd#4105
  • Loading branch information
adangel committed Nov 11, 2022
1 parent 36d18ae commit 02ad552
Show file tree
Hide file tree
Showing 5 changed files with 160 additions and 7 deletions.
18 changes: 18 additions & 0 deletions docs/_data/sidebars/pmd_sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,15 @@ entries:
- title: Security
output: web, pdf
url: /pmd_rules_vf_security.html
- title: null
output: web, pdf
subfolders:
- title: Scala Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_scala.html
- title: null
output: web, pdf
subfolders:
Expand All @@ -325,6 +334,15 @@ entries:
- title: Error Prone
output: web, pdf
url: /pmd_rules_vm_errorprone.html
- title: null
output: web, pdf
subfolders:
- title: WSDL Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_wsdl.html
- title: null
output: web, pdf
subfolders:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import net.sourceforge.pmd.RuleSetLoadException;
import net.sourceforge.pmd.RuleSetLoader;
import net.sourceforge.pmd.lang.Language;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.rule.RuleReference;
import net.sourceforge.pmd.lang.rule.XPathRule;
import net.sourceforge.pmd.properties.MultiValuePropertyDescriptor;
Expand Down Expand Up @@ -99,9 +100,16 @@ public void generate(List<RuleSet> registeredRulesets, List<String> additionalRu
generateLanguageIndex(sortedRulesets, sortedAdditionalRulesets);
generateRuleSetIndex(sortedRulesets);

ensureAllLanguages(sortedRulesets);
generateSidebar(sortedRulesets);
}

private void ensureAllLanguages(Map<Language, List<RuleSet>> sortedRulesets) {
for (Language language : LanguageRegistry.findWithRuleSupport()) {
sortedRulesets.putIfAbsent(language, Collections.emptyList());
}
}

private void generateSidebar(Map<Language, List<RuleSet>> sortedRulesets) throws IOException {
SidebarGenerator generator = new SidebarGenerator(writer, root);
generator.generateSidebar(sortedRulesets);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
import java.nio.file.FileSystems;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import org.apache.commons.lang3.SystemUtils;
import org.junit.Before;
Expand All @@ -39,11 +39,12 @@ public void setup() {

@Test
public void testSidebar() throws IOException {
Map<Language, List<RuleSet>> rulesets = new HashMap<>();
Map<Language, List<RuleSet>> rulesets = new TreeMap<>();
RuleSet ruleSet1 = RulesetsFactoryUtils.defaultFactory().createNewRuleSet("test", "test", "bestpractices.xml", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
RuleSet ruleSet2 = RulesetsFactoryUtils.defaultFactory().createNewRuleSet("test2", "test", "codestyle.xml", Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
rulesets.put(LanguageRegistry.findLanguageByTerseName("java"), Arrays.asList(ruleSet1, ruleSet2));
rulesets.put(LanguageRegistry.findLanguageByTerseName("ecmascript"), Arrays.asList(ruleSet1));
rulesets.put(LanguageRegistry.findLanguageByTerseName("scala"), Collections.emptyList());

SidebarGenerator generator = new SidebarGenerator(writer, FileSystems.getDefault().getPath(".."));
List<Map<String, Object>> result = generator.generateRuleReferenceSection(rulesets);
Expand Down
117 changes: 117 additions & 0 deletions pmd-doc/src/test/resources/expected/pmd_sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,33 @@ entries:
- title: 3
- title: Rules
folderitems:
- title: null
output: web, pdf
subfolders:
- title: Apex Rules
output: web, pdf
subfolderitems:
- 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:
- title: HTML Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_html.html
- title: null
output: web, pdf
subfolders:
Expand All @@ -18,3 +45,93 @@ entries:
- title: Sample
output: web, pdf
url: /pmd_rules_java_sample.html
- title: null
output: web, pdf
subfolders:
- title: Java Server Pages Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_jsp.html
- title: null
output: web, pdf
subfolders:
- title: Maven POM Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_pom.html
- title: null
output: web, pdf
subfolders:
- title: Modelica Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_modelica.html
- title: null
output: web, pdf
subfolders:
- title: PLSQL Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_plsql.html
- title: null
output: web, pdf
subfolders:
- title: Salesforce VisualForce Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_vf.html
- title: null
output: web, pdf
subfolders:
- title: Scala Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_scala.html
- title: null
output: web, pdf
subfolders:
- title: VM Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_vm.html
- title: null
output: web, pdf
subfolders:
- title: WSDL Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_wsdl.html
- title: null
output: web, pdf
subfolders:
- title: XML Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_xml.html
- title: null
output: web, pdf
subfolders:
- title: XSL Rules
output: web, pdf
subfolderitems:
- title: Index
output: web, pdf
url: /pmd_rules_xsl.html
19 changes: 14 additions & 5 deletions pmd-doc/src/test/resources/net/sourceforge/pmd/docs/sidebar.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
- 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:
Expand All @@ -16,12 +28,9 @@
- title: null
output: web, pdf
subfolders:
- title: Ecmascript Rules
- title: Scala 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
url: /pmd_rules_scala.html

0 comments on commit 02ad552

Please sign in to comment.