Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT
file stats: LOC: 135   Methods: 9
NCLOC: 58   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
RuleSets.java 66.7% 78.3% 88.9% 77.3%
coverage coverage
 1    package net.sourceforge.pmd;
 2   
 3    import java.util.ArrayList;
 4    import java.util.Collection;
 5    import java.util.HashSet;
 6    import java.util.Iterator;
 7    import java.util.List;
 8    import java.util.Set;
 9   
 10    /**
 11    * Grouping of Rules per Language in a RuleSet.
 12    *
 13    * @author pieter_van_raemdonck - Application Engineers NV/SA - www.ae.be
 14    */
 15    public class RuleSets {
 16    /**
 17    * Map of RuleLanguage on RuleSet.
 18    */
 19    private Collection ruleSets = new ArrayList();
 20   
 21    /**
 22    * Public constructor.
 23    */
 24  1270 public RuleSets() {
 25    }
 26   
 27    /**
 28    * Public constructor. Add the given rule set.
 29    *
 30    * @param ruleSet the RuleSet
 31    */
 32  1055 public RuleSets(RuleSet ruleSet) {
 33  1055 this();
 34  1055 addRuleSet(ruleSet);
 35    }
 36   
 37    /**
 38    * Add a ruleset for a language. Only one ruleset can be added for a specific
 39    * language. If ruleSet.getLanguage() is null, it is assumed to be a RuleSet of java
 40    * rules.
 41    *
 42    * @param ruleSet the RuleSet
 43    */
 44  1269 public void addRuleSet(RuleSet ruleSet) {
 45  1269 ruleSets.add(ruleSet);
 46    }
 47   
 48    /**
 49    * Get all the RuleSets.
 50    *
 51    * @return RuleSet[]
 52    */
 53  1 public RuleSet[] getAllRuleSets() {
 54  1 return (RuleSet[]) ruleSets.toArray(new RuleSet[0]);
 55    }
 56   
 57    /**
 58    * Return all rules from all rulesets.
 59    *
 60    * @return Set
 61    */
 62  0 public Set getAllRules() {
 63  0 HashSet result = new HashSet();
 64  0 for (Iterator i = ruleSets.iterator(); i.hasNext();) {
 65  0 result.addAll(((RuleSet) i.next()).getRules());
 66    }
 67  0 return result;
 68    }
 69   
 70    /**
 71    * Check if a source with given language should be checked by rules for a given
 72    * language. This is the case if both languages are equal, or if the source is in
 73    * java, and the language of the rules is unknown (for backward-compatibility
 74    * reasons).
 75    *
 76    * @param languageOfSource language of a source; can not be null
 77    * @param languageOfRule language of a ruleset; can be null
 78    * @return
 79    */
 80  2110 public boolean applies(Language languageOfSource, Language languageOfRule) {
 81  2110 return (languageOfSource.equals(languageOfRule) || (languageOfSource
 82    .equals(Language.JAVA) && (null == languageOfRule)));
 83    }
 84   
 85    /**
 86    * Apply all applicable rules to the compilation units.
 87    * Applicable means the language of the rules must match the language
 88    * of the source (@see applies).
 89    *
 90    * @param acuList the List of compilation units; the type these must have,
 91    * depends on the source language
 92    * @param ctx the RuleContext
 93    * @param language the Language of the source
 94    */
 95  1055 public void apply(List acuList, RuleContext ctx, Language language) {
 96  1055 for (Iterator i = ruleSets.iterator(); i.hasNext();) {
 97  1055 RuleSet ruleSet = (RuleSet) i.next();
 98  1055 if (applies(language, ruleSet.getLanguage())) {
 99  1055 ruleSet.apply(acuList, ctx);
 100    }
 101    }
 102    }
 103   
 104    /**
 105    * Check if the rules that apply to a source of the given language
 106    * use DFA.
 107    *
 108    * @param language the language of a source
 109    * @return true if any rule in the RuleSet needs the DFA layer
 110    */
 111  1055 public boolean usesDFA(Language language) {
 112  1055 for (Iterator i = ruleSets.iterator(); i.hasNext();) {
 113  1055 RuleSet ruleSet = (RuleSet) i.next();
 114  1055 if (applies(language, ruleSet.getLanguage()) && ruleSet.usesDFA()) {
 115  0 return true;
 116    }
 117    }
 118  1055 return false;
 119    }
 120   
 121    /**
 122    * Returns the Rule with the given name
 123    *
 124    * @param ruleName the name of the rule to find
 125    * @return the rule or null if not found
 126    */
 127  213 public Rule getRuleByName(String ruleName) {
 128  213 Rule rule = null;
 129  213 for (Iterator i = ruleSets.iterator(); i.hasNext() && (rule == null);) {
 130  213 RuleSet ruleSet = (RuleSet) i.next();
 131  213 rule = ruleSet.getRuleByName(ruleName);
 132    }
 133  213 return rule;
 134    }
 135    }