DataFlowFacade.java
01 /**
02  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03  */
04 package net.sourceforge.pmd.lang.java.dfa;
05 
06 import net.sourceforge.pmd.lang.DataFlowHandler;
07 import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
08 import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration;
09 import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration;
10 import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter;
11 
12 /**
13  @author raik
14  *         <p/>
15  *         TODO What about initializers?  This only processes methods and constructors
16  */
17 public class DataFlowFacade extends JavaParserVisitorAdapter {
18 
19     private StatementAndBraceFinder sbf;
20     private VariableAccessVisitor vav;
21 
22     public void initializeWith(DataFlowHandler dataFlowHandler, ASTCompilationUnit node) {
23         sbf = new StatementAndBraceFinder(dataFlowHandler);
24         vav = new VariableAccessVisitor();
25         node.jjtAccept(this, null);
26     }
27 
28     public Object visit(ASTMethodDeclaration node, Object data) {
29         sbf.buildDataFlowFor(node);
30         vav.compute(node);
31         return data;
32     }
33 
34     public Object visit(ASTConstructorDeclaration node, Object data) {
35         sbf.buildDataFlowFor(node);
36         vav.compute(node);
37         return data;
38     }
39 }