View Javadoc

1   package net.sourceforge.pmd.util;
2   
3   import net.sourceforge.pmd.PMD;
4   import net.sourceforge.pmd.Rule;
5   import net.sourceforge.pmd.RuleSet;
6   import net.sourceforge.pmd.RuleSetFactory;
7   
8   import java.util.Collection;
9   import java.util.Iterator;
10  import java.util.Set;
11  
12  public class Appendix {
13  
14      public static void main(String[] args) throws Exception {
15          RuleSetFactory rsf = new RuleSetFactory();
16          Iterator i = rsf.getRegisteredRuleSets();
17          StringBuffer sb = new StringBuffer();
18          while (i.hasNext()) {
19              RuleSet rs = (RuleSet) i.next();
20              if (rs.getName().toLowerCase().indexOf(args[0]) == -1) {
21                  continue;
22              }
23              sb.append("====================================================================" + PMD.EOL);
24              sb.append(rs.getName() + PMD.EOL);
25              sb.append(rs.getDescription() + PMD.EOL);
26              sb.append("--------------------------------------------------------------------" + PMD.EOL);
27  
28              Collection rules = rs.getRules();
29              for (Iterator j = rules.iterator(); j.hasNext();) {
30                  Rule r = (Rule) j.next();
31                  sb.append(r.getName() + ": " + trimCRs(r.getDescription()) + PMD.EOL);
32                  sb.append("Example: " + PMD.EOL + trimCRs(r.getExample()) + PMD.EOL);
33  
34                  if (r.hasProperty("xpath")) {
35                      sb.append("XPath expression:" + PMD.EOL);
36                      sb.append(trimCRs(r.getProperties().getProperty("xpath")));
37                  }
38  
39                  Set keys = r.getProperties().keySet();
40                  boolean header = false;
41                  for (Iterator k = keys.iterator(); k.hasNext();) {
42                      String key = (String) k.next();
43                      String value = (String) r.getProperties().getProperty(key);
44  
45                      if (key.equals("xpath")) {
46                          continue;
47                      }
48  
49                      if (!header) {
50                          sb.append(PMD.EOL + "Properties:" + PMD.EOL);
51                          header = true;
52                      }
53  
54                      sb.append("Name = '" + key + "', value = '" + value + "'" + PMD.EOL);
55                  }
56                  sb.append(PMD.EOL + "Notes: " + PMD.EOL);
57                  sb.append(PMD.EOL + "--------------------------------------------------------------------" + PMD.EOL);
58              }
59          }
60          System.out.println(sb.toString());
61      }
62  
63      private static String trimCRs(String str) {
64          while (str.startsWith(PMD.EOL)) {
65              str = str.substring(1);
66          }
67          while (str.endsWith(PMD.EOL)) {
68              str = str.substring(0, str.length() - 1);
69          }
70          return str;
71      }
72  }