1   package test.net.sourceforge.pmd.dfa;
2   
3   import net.sourceforge.pmd.PMD;
4   import net.sourceforge.pmd.ast.ASTCompilationUnit;
5   import net.sourceforge.pmd.ast.ASTMethodDeclarator;
6   import net.sourceforge.pmd.dfa.DataFlowNode;
7   import net.sourceforge.pmd.dfa.IDataFlowNode;
8   import net.sourceforge.pmd.dfa.variableaccess.VariableAccess;
9   import test.net.sourceforge.pmd.testframework.ParserTst;
10  
11  import java.util.Iterator;
12  import java.util.List;
13  
14  public class GeneralFiddlingTest extends ParserTst {
15  
16      public void test1() throws Throwable {
17          ASTCompilationUnit acu = buildDFA(TEST1);
18          ASTMethodDeclarator meth = (ASTMethodDeclarator)acu.findChildrenOfType(ASTMethodDeclarator.class).get(0);
19          IDataFlowNode n = meth.getDataFlowNode();
20          List f = n.getFlow();
21          for (Iterator i = f.iterator(); i.hasNext();) {
22              DataFlowNode dfan = (DataFlowNode)i.next();
23              System.out.println(dfan);
24              List va = dfan.getVariableAccess();
25              for (Iterator j = va.iterator(); j.hasNext();) {
26                  VariableAccess o = (VariableAccess)j.next();
27                  System.out.println(o);
28              }
29          }
30      }
31  
32      private static final String TEST1 =
33          "class Foo {" + PMD.EOL +
34          " void bar() {" + PMD.EOL +
35          "  int x = 2;" + PMD.EOL +
36          "  foo(x);" + PMD.EOL +
37          "  x = 3;" + PMD.EOL +
38          " }"  + PMD.EOL +
39          "}";
40  }