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  }