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