Clover coverage report - PMD - 3.7
Coverage timestamp: Wed May 31 2006 09:25:59 EDT
file stats: LOC: 78   Methods: 8
NCLOC: 40   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Structure.java 100% 91.7% 87.5% 90.9%
coverage coverage
 1    /*
 2    * Created on 11.07.2004
 3    */
 4    package net.sourceforge.pmd.dfa;
 5   
 6    import net.sourceforge.pmd.ast.SimpleNode;
 7   
 8    import java.util.LinkedList;
 9    import java.util.List;
 10    import java.util.Stack;
 11   
 12   
 13    /**
 14    * @author raik
 15    * <p/>
 16    * Structure contains only raw data. A set of nodes wich represent a data flow
 17    * and 2 stacks to link the nodes to each other.
 18    */
 19    public class Structure {
 20   
 21    private LinkedList dataFlow = new LinkedList();
 22    private Stack braceStack = new Stack();
 23    private Stack continueBreakReturnStack = new Stack();
 24   
 25    /**
 26    * This class encapsulates the access to the DataFlowNode class. Is this worthwhile?
 27    * TODO I think it's too confusing to have the DataFlowNode constructor
 28    * add the created instance to the LinkedList. I think it'd be clearer if we did
 29    * that more "procedurally", i.e., create the object, then add it to the list.
 30    */
 31  211 public IDataFlowNode createNewNode(SimpleNode node) {
 32  211 return new DataFlowNode(node, this.dataFlow);
 33    }
 34   
 35  40 public IDataFlowNode createStartNode(int line) {
 36  40 return new StartOrEndDataFlowNode(this.dataFlow, line, true);
 37    }
 38   
 39  40 public IDataFlowNode createEndNode(int line) {
 40  40 return new StartOrEndDataFlowNode(this.dataFlow, line, false);
 41    }
 42   
 43  203 public IDataFlowNode getLast() {
 44  203 return (IDataFlowNode) this.dataFlow.getLast();
 45    }
 46   
 47  0 public IDataFlowNode getFirst() {
 48  0 return (IDataFlowNode) this.dataFlow.getFirst();
 49    }
 50   
 51    // ----------------------------------------------------------------------------
 52    // STACK FUNCTIONS
 53   
 54    /**
 55    * The braceStack contains all nodes which are important to link the data
 56    * flow nodes. The cbrStack contains continue, break, and return nodes.
 57    * There are 2 Stacks because the have to process differently.
 58    */
 59  203 protected void pushOnStack(int type, IDataFlowNode node) {
 60  203 StackObject obj = new StackObject(type, node);
 61  203 if (type == NodeType.RETURN_STATEMENT || type == NodeType.BREAK_STATEMENT || type == NodeType.CONTINUE_STATEMENT) {
 62    // ugly solution - stores the type information in two ways
 63  6 continueBreakReturnStack.push(obj);
 64    } else {
 65  197 braceStack.push(obj);
 66    }
 67  203 ((DataFlowNode) node).setType(type);
 68    }
 69   
 70  40 public List getBraceStack() {
 71  40 return braceStack;
 72    }
 73   
 74  40 public List getContinueBreakReturnStack() {
 75  40 return continueBreakReturnStack;
 76    }
 77   
 78    }