Clover coverage report - PMD - 3.9
Coverage timestamp: Tue Dec 19 2006 09:38:44 EST
file stats: LOC: 247   Methods: 38
NCLOC: 160   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
AbstractJspRule.java 25% 39.6% 44.7% 40.4%
coverage coverage
 1    /**
 2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 3    */
 4    package net.sourceforge.pmd.jsp.rules;
 5   
 6    import net.sourceforge.pmd.PropertyDescriptor;
 7    import net.sourceforge.pmd.Rule;
 8    import net.sourceforge.pmd.RuleContext;
 9    import net.sourceforge.pmd.RuleViolation;
 10    import net.sourceforge.pmd.ast.Node;
 11    import net.sourceforge.pmd.jsp.ast.JspParserVisitorAdapter;
 12    import net.sourceforge.pmd.jsp.ast.SimpleNode;
 13   
 14    import java.text.MessageFormat;
 15    import java.util.Iterator;
 16    import java.util.List;
 17    import java.util.Properties;
 18   
 19    public abstract class AbstractJspRule extends JspParserVisitorAdapter implements Rule {
 20   
 21    protected String name = getClass().getName();
 22    protected Properties properties = new Properties();
 23    protected String message;
 24    protected String description;
 25    protected String example;
 26    protected String ruleSetName;
 27    protected boolean include;
 28    protected boolean usesDFA;
 29    protected boolean usesTypeResolution;
 30    protected int priority = LOWEST_PRIORITY;
 31    protected String externalInfoUrl;
 32   
 33  0 public String getRuleSetName() {
 34  0 return ruleSetName;
 35    }
 36   
 37  18 public void setRuleSetName(String ruleSetName) {
 38  18 this.ruleSetName = ruleSetName;
 39    }
 40   
 41  0 public String getDescription() {
 42  0 return description;
 43    }
 44   
 45  16 public void setDescription(String description) {
 46  16 this.description = description;
 47    }
 48   
 49  0 public String getExample() {
 50  0 return example;
 51    }
 52   
 53  16 public void setExample(String example) {
 54  16 this.example = example;
 55    }
 56   
 57  0 public boolean hasProperty(String name) {
 58  0 return properties.containsKey(name);
 59    }
 60   
 61  0 public void addProperty(String name, String value) {
 62  0 properties.setProperty(name, value);
 63    }
 64   
 65  0 public void addProperties(Properties properties) {
 66  0 this.properties.putAll(properties);
 67    }
 68   
 69  0 public double getDoubleProperty(String name) {
 70  0 return Double.parseDouble(properties.getProperty(name));
 71    }
 72   
 73  0 public int getIntProperty(String name) {
 74  0 return Integer.parseInt(properties.getProperty(name));
 75    }
 76   
 77  0 public boolean getBooleanProperty(String name) {
 78  0 return Boolean.valueOf(properties.getProperty(name)).booleanValue();
 79    }
 80   
 81  0 public String getStringProperty(String name) {
 82  0 return properties.getProperty(name);
 83    }
 84   
 85  11 public String getName() {
 86  11 return name;
 87    }
 88   
 89  16 public void setName(String name) {
 90  16 this.name = name;
 91    }
 92   
 93  8 public String getMessage() {
 94  8 return message;
 95    }
 96   
 97  16 public void setMessage(String message) {
 98  16 this.message = message;
 99    }
 100   
 101  0 public String getExternalInfoUrl() {
 102  0 return externalInfoUrl;
 103    }
 104   
 105  16 public void setExternalInfoUrl(String url) {
 106  16 this.externalInfoUrl = url;
 107    }
 108   
 109    /**
 110    * Test if rules are equals. Rules are equals if
 111    * 1. they have the same implementation class
 112    * 2. they have the same name
 113    * 3. they have the same priority
 114    * 4. they share the same properties/values
 115    */
 116  0 public boolean equals(Object o) {
 117  0 if (o == null) {
 118  0 return false; // trivial
 119    }
 120   
 121  0 if (this == o) {
 122  0 return true; // trivial
 123    }
 124   
 125  0 Rule rule = null;
 126  0 boolean equality = this.getClass().getName().equals(o.getClass().getName());
 127   
 128  0 if (equality) {
 129  0 rule = (Rule) o;
 130  0 equality = this.getName().equals(rule.getName())
 131    && this.getPriority() == rule.getPriority()
 132    && this.getProperties().equals(rule.getProperties());
 133    }
 134   
 135  0 return equality;
 136    }
 137   
 138    /**
 139    * Return a hash code to conform to equality. Try with a string.
 140    */
 141  0 public int hashCode() {
 142  0 String s = this.getClass().getName() + this.getName() + this.getPriority() + this.getProperties().toString();
 143  0 return s.hashCode();
 144    }
 145   
 146  9 public void apply(List acus, RuleContext ctx) {
 147  9 visitAll(acus, ctx);
 148    }
 149   
 150   
 151  9 public Properties getProperties() {
 152  9 return properties;
 153    }
 154   
 155  0 public boolean include() {
 156  0 return include;
 157    }
 158   
 159  0 public void setInclude(boolean include) {
 160  0 this.include = include;
 161    }
 162   
 163  16 public int getPriority() {
 164  16 return priority;
 165    }
 166   
 167  0 public String getPriorityName() {
 168  0 return PRIORITIES[getPriority() - 1];
 169    }
 170   
 171  16 public void setPriority(int priority) {
 172  16 this.priority = priority;
 173    }
 174   
 175  0 public void setUsesDFA() {
 176  0 this.usesDFA = true;
 177    }
 178   
 179  9 public boolean usesDFA() {
 180  9 return this.usesDFA;
 181    }
 182   
 183  0 public void setUsesTypeResolution() {
 184    }
 185   
 186  9 public boolean usesTypeResolution() {
 187  9 return false;
 188    }
 189   
 190  9 protected void visitAll(List acus, RuleContext ctx) {
 191  9 for (Iterator i = acus.iterator(); i.hasNext();) {
 192  9 SimpleNode node = (SimpleNode) i.next();
 193  9 visit(node, ctx);
 194    }
 195    }
 196   
 197    /**
 198    * Adds a violation to the report.
 199    *
 200    * @param ctx the RuleContext
 201    * @param node the node that produces the violation
 202    */
 203  3 protected final void addViolation(Object data, SimpleNode node) {
 204  3 RuleContext ctx = (RuleContext) data;
 205  3 ctx.getReport().addRuleViolation(new RuleViolation(this, ctx, node));
 206    }
 207   
 208    /**
 209    * Adds a violation to the report.
 210    *
 211    * @param ctx the RuleContext
 212    * @param node the node that produces the violation
 213    * @param msg specific message to put in the report
 214    */
 215  0 protected final void addViolationWithMessage(Object data, SimpleNode node, String msg) {
 216  0 RuleContext ctx = (RuleContext) data;
 217  0 ctx.getReport().addRuleViolation(new RuleViolation(this, ctx, node, msg));
 218    }
 219   
 220    /**
 221    * Adds a violation to the report.
 222    *
 223    * @param ctx the RuleContext
 224    * @param node the node that produces the violation
 225    * @param embed a variable to embed in the rule violation message
 226    */
 227  5 protected final void addViolation(Object data, SimpleNode node, String embed) {
 228  5 RuleContext ctx = (RuleContext) data;
 229  5 ctx.getReport().addRuleViolation(new RuleViolation(this, ctx, node, MessageFormat.format(getMessage(), new Object[]{embed})));
 230    }
 231   
 232    /**
 233    * Adds a violation to the report.
 234    *
 235    * @param ctx the RuleContext
 236    * @param node the node that produces the violation, may be null, in which case all line and column info will be set to zero
 237    * @param args objects to embed in the rule violation message
 238    */
 239  0 protected final void addViolation(Object data, Node node, Object[] args) {
 240  0 RuleContext ctx = (RuleContext) data;
 241  0 ctx.getReport().addRuleViolation(new RuleViolation(this, ctx, (SimpleNode) node, MessageFormat.format(getMessage(), args)));
 242    }
 243   
 244  0 public PropertyDescriptor propertyDescriptorFor(String name) {
 245  0 return null; // TODO not implemented yet
 246    }
 247    }