use of net.sourceforge.pmd.lang.dfa.DataFlowNode in project pmd by pmd.
the class StatementAndBraceFinderTest method testLabelledStmtHasCorrectTypes.
/*
* @Test public void testSearchedCaseStmtHasCorrectTypes()
* { List<ASTStatement> statements = getOrderedNodes(ASTStatement.class,
* TEST7); List<ASTExpression> expressions =
* getOrderedNodes(ASTExpression.class, TEST7);
*
* ASTStatement st = statements.get(0); ASTStatement st1 =
* statements.get(1); ASTStatement st2 = statements.get(2); ASTStatement st3
* = statements.get(3);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-st(0)="+st.
* getBeginLine());
*
* ASTExpression ex = expressions.get(0); ASTExpression ex1 =
* expressions.get(1); ASTExpression ex2 = expressions.get(2); ASTExpression
* ex3 = expressions.get(3); ASTExpression ex4 = expressions.get(4);
* System.err.println("ASTExpression="+ex );
*
* DataFlowNode dfn = null; //dfn = ex.getDataFlowNode().getFlow().get(0);
* //dfn = st.getDataFlowNode().getFlow().get(0); dfn = (DataFlowNode)
* st.getDataFlowNode(); System.err.println("DataFlowNode(st-0)="+dfn ) ;
* System.err.println("DataFlowNode(st-1)="+st1.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(st-2)="+st2.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(st-3)="+st3.getDataFlowNode() ) ;
*
* System.err.println("DataFlowNode(ex-0)="+ex.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(ex-1)="+ex1.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(ex-2)="+ex2.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(ex-3)="+ex3.getDataFlowNode() ) ;
* System.err.println("DataFlowNode(ex-4)="+ex4.getDataFlowNode() ) ;
* List<DataFlowNode> dfns = dfn.getFlow();
* System.err.println("DataFlowNodes List size="+dfns.size()) ; DataFlowNode
* firstDfn = dfns.get(0); System.err.println("firstDataFlowNode="+firstDfn
* ) ;
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(0)="+dfn);
* dfn = st.getDataFlowNode().getFlow().get(1);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(1)="+dfn);
* dfn = st.getDataFlowNode().getFlow().get(2);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(2)="+dfn);
* assertTrue(dfn.isType(NodeType.SWITCH_START)); dfn =
* st.getDataFlowNode().getFlow().get(3);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(3)="+dfn);
* assertTrue(dfn.isType(NodeType.CASE_LAST_STATEMENT)); //dfn =
* st.getDataFlowNode().getFlow().get(4);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(5)="+dfn);
* assertTrue(dfn.isType(NodeType.CASE_LAST_STATEMENT)); dfn =
* st.getDataFlowNode().getFlow().get(5);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(7)="+dfn);
* assertTrue(dfn.isType(NodeType.SWITCH_LAST_DEFAULT_STATEMENT)); dfn =
* st.getDataFlowNode().getFlow().get(6);
* System.err.println("testSearchedCaseStmtHasCorrectTypes-dfn(8)="+dfn);
* assertTrue(dfn.isType(NodeType.SWITCH_END)); }
*/
@Test
public void testLabelledStmtHasCorrectTypes() {
ASTExpression exp = getOrderedNodes(ASTExpression.class, TEST8).get(0);
DataFlowNode dfn = exp.getDataFlowNode().getFlow().get(2);
assertEquals(3, dfn.getLine());
assertTrue(dfn.isType(NodeType.LABEL_STATEMENT));
}
use of net.sourceforge.pmd.lang.dfa.DataFlowNode in project pmd by pmd.
the class StatementAndBraceFinderTest method testForStmtHasCorrectTypes.
@Test
public void testForStmtHasCorrectTypes() {
ASTExpression exp = getOrderedNodes(ASTExpression.class, TEST5).get(0);
DataFlowNode dfn = null;
dfn = exp.getDataFlowNode().getFlow().get(0);
assertTrue(dfn instanceof StartOrEndDataFlowNode);
dfn = exp.getDataFlowNode().getFlow().get(1);
assertTrue(dfn.getNode() instanceof ASTProgramUnit);
assertEquals(2, dfn.getLine());
dfn = exp.getDataFlowNode().getFlow().get(2);
assertEquals(3, dfn.getLine());
assertTrue(dfn.isType(NodeType.FOR_EXPR));
assertTrue(dfn.isType(NodeType.FOR_BEFORE_FIRST_STATEMENT));
dfn = exp.getDataFlowNode().getFlow().get(3);
assertEquals(3, dfn.getLine());
assertTrue(dfn.isType(NodeType.FOR_END));
}
use of net.sourceforge.pmd.lang.dfa.DataFlowNode in project pmd by pmd.
the class DAAPathFinder method addCurrentChild.
private void addCurrentChild() {
if (currentPath.isBranch()) {
// TODO WHY????
PathElement last = (PathElement) stack.getLastLeaf().getUserObject();
DataFlowNode inode = currentPath.getLast();
if (inode.getChildren().size() > last.currentChild) {
// for some unknown reasons last.currentChild might not be a
// children of inode, see bug 1597987
// see https://sourceforge.net/p/pmd/bugs/606/
DataFlowNode child = inode.getChildren().get(last.currentChild);
this.currentPath.addLast(child);
}
} else {
DataFlowNode inode = currentPath.getLast();
// TODO ???? IMPORTANT - ERROR?
DataFlowNode child = inode.getChildren().get(0);
this.currentPath.addLast(child);
}
}
use of net.sourceforge.pmd.lang.dfa.DataFlowNode in project pmd by pmd.
the class DAAPathFinder method equalsPseudoPathElementWithDoBranchNodeInLevel.
private boolean equalsPseudoPathElementWithDoBranchNodeInLevel(DefaultMutableTreeNode level) {
DataFlowNode inode = currentPath.getLast();
if (!inode.isType(NodeType.DO_EXPR)) {
return false;
}
int childCount = level.getChildCount();
DefaultMutableTreeNode child;
for (int i = 0; i < childCount; i++) {
child = (DefaultMutableTreeNode) level.getChildAt(i);
PathElement pe = (PathElement) child.getUserObject();
if (pe != null && pe.isPseudoPathElement() && pe.pseudoRef.equals(inode)) {
return true;
}
}
return false;
}
use of net.sourceforge.pmd.lang.dfa.DataFlowNode in project pmd by pmd.
the class DAAPathFinder method isNodeInLevel.
private PathElement isNodeInLevel(DefaultMutableTreeNode level) {
DataFlowNode inode = currentPath.getLast();
DefaultMutableTreeNode child = (DefaultMutableTreeNode) level.getFirstChild();
if (child != null) {
PathElement levelElement = (PathElement) child.getUserObject();
if (inode.equals(levelElement.node)) {
return levelElement;
}
}
return null;
}
Aggregations