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  }