Clover coverage report - PMD - 3.3
Coverage timestamp: Thu Sep 15 2005 17:59:57 EDT
file stats: LOC: 79   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    */
 32  211 public IDataFlowNode createNewNode(SimpleNode node) {
 33  211 return new DataFlowNode(node, this.dataFlow);
 34    }
 35   
 36  40 public IDataFlowNode createStartNode(int line) {
 37  40 return new StartOrEndDataFlowNode(this.dataFlow, line, true);
 38    }
 39   
 40  40 public IDataFlowNode createEndNode(int line) {
 41  40 return new StartOrEndDataFlowNode(this.dataFlow, line, false);
 42    }
 43   
 44  203 public IDataFlowNode getLast() {
 45  203 return (IDataFlowNode) this.dataFlow.getLast();
 46    }
 47   
 48  0 public IDataFlowNode getFirst() {
 49  0 return (IDataFlowNode) this.dataFlow.getFirst();
 50    }
 51   
 52    // ----------------------------------------------------------------------------
 53    // STACK FUNCTIONS
 54   
 55    /**
 56    * The braceStack contains all nodes which are important to link the data
 57    * flow nodes. The cbrStack contains continue, break, and return nodes.
 58    * There are 2 Stacks because the have to process differently.
 59    */
 60  203 protected void pushOnStack(int type, IDataFlowNode node) {
 61  203 StackObject obj = new StackObject(type, node);
 62  203 if (type == NodeType.RETURN_STATEMENT || type == NodeType.BREAK_STATEMENT || type == NodeType.CONTINUE_STATEMENT) {
 63    // ugly solution - stores the type information in two ways
 64  6 continueBreakReturnStack.push(obj);
 65    } else {
 66  197 braceStack.push(obj);
 67    }
 68  203 ((DataFlowNode) node).setType(type);
 69    }
 70   
 71  40 public List getBraceStack() {
 72  40 return braceStack;
 73    }
 74   
 75  40 public List getContinueBreakReturnStack() {
 76  40 return continueBreakReturnStack;
 77    }
 78   
 79    }