Clover coverage report - PMD - 3.9
Coverage timestamp: Tue Dec 19 2006 09:38:44 EST
file stats: LOC: 158   Methods: 16
NCLOC: 92   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
RuleSet.java 95% 97.4% 100% 97.3%
coverage coverage
 1    /**
 2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 3    */
 4    package net.sourceforge.pmd;
 5   
 6    import java.util.ArrayList;
 7    import java.util.Collection;
 8    import java.util.Iterator;
 9    import java.util.List;
 10   
 11   
 12    /**
 13    * This class represents a collection of rules.
 14    *
 15    * @see Rule
 16    */
 17    public class RuleSet {
 18   
 19    private List rules = new ArrayList();
 20    private String name = "";
 21    private String description = "";
 22    private Language language;
 23   
 24    /**
 25    * Returns the number of rules in this ruleset
 26    *
 27    * @return an int representing the number of rules
 28    */
 29  8 public int size() {
 30  8 return rules.size();
 31    }
 32   
 33    /**
 34    * Add a new rule to this ruleset
 35    *
 36    * @param rule the rule to be added
 37    */
 38  5846 public void addRule(Rule rule) {
 39  5846 if (rule == null) {
 40  0 throw new RuntimeException("Null Rule reference added to a RuleSet; that's a bug somewhere in PMD");
 41    }
 42  5846 rules.add(rule);
 43    }
 44   
 45    /**
 46    * Returns the actual Collection of rules in this ruleset
 47    *
 48    * @return a Collection with the rules. All objects are of type {@link Rule}
 49    */
 50  25 public Collection getRules() {
 51  25 return rules;
 52    }
 53   
 54    /**
 55    * @return true if any rule in the RuleSet needs the DFA layer
 56    */
 57  1262 public boolean usesDFA() {
 58  1262 for (Iterator i = rules.iterator(); i.hasNext();) {
 59  1262 Rule r = (Rule) i.next();
 60  1262 if (r.usesDFA()) {
 61  6 return true;
 62    }
 63    }
 64  1256 return false;
 65    }
 66   
 67    /**
 68    * Returns the Rule with the given name
 69    *
 70    * @param ruleName the name of the rule to find
 71    * @return the rule or null if not found
 72    */
 73  236 public Rule getRuleByName(String ruleName) {
 74  236 Rule rule = null;
 75  236 for (Iterator i = rules.iterator(); i.hasNext() && (rule == null);) {
 76  2230 Rule r = (Rule) i.next();
 77  2230 if (r.getName().equals(ruleName)) {
 78  234 rule = r;
 79    }
 80    }
 81  236 return rule;
 82    }
 83   
 84    /**
 85    * Add a whole RuleSet to this RuleSet
 86    *
 87    * @param ruleSet the RuleSet to add
 88    */
 89  1 public void addRuleSet(RuleSet ruleSet) {
 90  1 rules.addAll(rules.size(), ruleSet.getRules());
 91    }
 92   
 93  1261 public void apply(List acuList, RuleContext ctx) {
 94  1261 Iterator rs = rules.iterator();
 95  1261 while (rs.hasNext()) {
 96  1260 Rule rule = (Rule) rs.next();
 97  1260 rule.apply(acuList, ctx);
 98    }
 99    }
 100   
 101    /**
 102    * @see java.lang.Object#equals(java.lang.Object)
 103    */
 104  6 public boolean equals(Object o) {
 105  6 if ((o == null) || !(o instanceof RuleSet)) {
 106  2 return false; // Trivial
 107    }
 108   
 109  4 if (this == o) {
 110  1 return true; // Basic equality
 111    }
 112   
 113  3 RuleSet ruleSet = (RuleSet) o;
 114  3 return this.getName().equals(ruleSet.getName()) && this.getRules().equals(ruleSet.getRules());
 115    }
 116   
 117    /**
 118    * @see java.lang.Object#hashCode()
 119    */
 120  6 public int hashCode() {
 121  6 return this.getName().hashCode() + 13 * this.getRules().hashCode();
 122    }
 123   
 124  12832 public Language getLanguage() {
 125  12832 return language;
 126    }
 127   
 128  1508 public void setLanguage(Language language) {
 129  1508 this.language = language;
 130    }
 131   
 132  4540 public String getName() {
 133  4540 return name;
 134    }
 135   
 136  259 public void setName(String name) {
 137  259 this.name = name;
 138    }
 139   
 140  1 public String getDescription() {
 141  1 return description;
 142    }
 143   
 144  251 public void setDescription(String description) {
 145  251 this.description = description;
 146    }
 147   
 148  1260 public boolean usesTypeResolution() {
 149  1260 for (Iterator i = rules.iterator(); i.hasNext();) {
 150  1260 Rule r = (Rule) i.next();
 151  1260 if (r.usesTypeResolution()) {
 152  18 return true;
 153    }
 154    }
 155  1242 return false;
 156    }
 157   
 158    }