Search in sources :

Example 6 with DataFlowNode

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));
}
Also used : DataFlowNode(net.sourceforge.pmd.lang.dfa.DataFlowNode) StartOrEndDataFlowNode(net.sourceforge.pmd.lang.dfa.StartOrEndDataFlowNode) ASTExpression(net.sourceforge.pmd.lang.plsql.ast.ASTExpression) Test(org.junit.Test)

Example 7 with DataFlowNode

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));
}
Also used : StartOrEndDataFlowNode(net.sourceforge.pmd.lang.dfa.StartOrEndDataFlowNode) DataFlowNode(net.sourceforge.pmd.lang.dfa.DataFlowNode) StartOrEndDataFlowNode(net.sourceforge.pmd.lang.dfa.StartOrEndDataFlowNode) ASTProgramUnit(net.sourceforge.pmd.lang.plsql.ast.ASTProgramUnit) ASTExpression(net.sourceforge.pmd.lang.plsql.ast.ASTExpression) Test(org.junit.Test)

Example 8 with DataFlowNode

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);
    }
}
Also used : DataFlowNode(net.sourceforge.pmd.lang.dfa.DataFlowNode)

Example 9 with DataFlowNode

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;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DataFlowNode(net.sourceforge.pmd.lang.dfa.DataFlowNode)

Example 10 with DataFlowNode

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;
}
Also used : DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) DataFlowNode(net.sourceforge.pmd.lang.dfa.DataFlowNode)

Aggregations

DataFlowNode (net.sourceforge.pmd.lang.dfa.DataFlowNode)35 StartOrEndDataFlowNode (net.sourceforge.pmd.lang.dfa.StartOrEndDataFlowNode)17 Test (org.junit.Test)15 ArrayList (java.util.ArrayList)7 VariableAccess (net.sourceforge.pmd.lang.dfa.VariableAccess)6 ASTExpression (net.sourceforge.pmd.lang.plsql.ast.ASTExpression)6 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)4 List (java.util.List)3 Node (net.sourceforge.pmd.lang.ast.Node)3 ASTExpression (net.sourceforge.pmd.lang.java.ast.ASTExpression)3 ASTProgramUnit (net.sourceforge.pmd.lang.plsql.ast.ASTProgramUnit)3 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 Map (java.util.Map)2 ASTMethodDeclarator (net.sourceforge.pmd.lang.java.ast.ASTMethodDeclarator)2 JavaNode (net.sourceforge.pmd.lang.java.ast.JavaNode)2 PLSQLNode (net.sourceforge.pmd.lang.plsql.ast.PLSQLNode)2 NameOccurrence (net.sourceforge.pmd.lang.symboltable.NameOccurrence)2 Point (org.eclipse.swt.graphics.Point)2 DAAPathFinder (net.sourceforge.pmd.lang.dfa.pathfinder.DAAPathFinder)1