Clover coverage report - PMD - 3.9
Coverage timestamp: Tue Dec 19 2006 09:38:44 EST
file stats: LOC: 52   Methods: 3
NCLOC: 37   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
AvoidDeeplyNestedIfStmtsRule.java 100% 90.9% 66.7% 88.9%
coverage coverage
 1    /**
 2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 3    */
 4    package net.sourceforge.pmd.rules;
 5   
 6    import java.util.Map;
 7   
 8    import net.sourceforge.pmd.AbstractRule;
 9    import net.sourceforge.pmd.PropertyDescriptor;
 10    import net.sourceforge.pmd.ast.ASTCompilationUnit;
 11    import net.sourceforge.pmd.ast.ASTIfStatement;
 12    import net.sourceforge.pmd.properties.IntegerProperty;
 13   
 14    public class AvoidDeeplyNestedIfStmtsRule extends AbstractRule {
 15   
 16    private int depth;
 17    private int depthLimit;
 18   
 19    private static final PropertyDescriptor problemDepthDescriptor = new IntegerProperty(
 20    "problemDepth",
 21    "Maximum allowable statement depth",
 22    0,
 23    1.0f
 24    );
 25   
 26    private static final Map propertyDescriptorsByName = asFixedMap(problemDepthDescriptor);
 27   
 28  2 public Object visit(ASTCompilationUnit node, Object data) {
 29  2 depth = 0;
 30  2 depthLimit = getIntProperty(problemDepthDescriptor);
 31  2 return super.visit(node, data);
 32    }
 33   
 34  6 public Object visit(ASTIfStatement node, Object data) {
 35  6 if (!node.hasElse()) {
 36  3 depth++;
 37    }
 38  6 super.visit(node, data);
 39  6 if (depth == depthLimit) {
 40  1 addViolation(data, node);
 41    }
 42  6 depth--;
 43  6 return data;
 44    }
 45   
 46    /**
 47    * @return Map
 48    */
 49  0 protected Map propertiesByName() {
 50  0 return propertyDescriptorsByName;
 51    }
 52    }