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 }