package edu.umd.cs.findbugs.classfile.engine.bcel; import org.apache.bcel.generic.MethodGen; import edu.umd.cs.findbugs.ba.constant.ConstantAnalysis; import edu.umd.cs.findbugs.ba.constant.ConstantDataflow; import edu.umd.cs.findbugs.classfile.CheckedAnalysisException; import edu.umd.cs.findbugs.classfile.IAnalysisCache; import edu.umd.cs.findbugs.classfile.MethodDescriptor; /** * Analysis engine to produce ConstantDataflow objects for an analyzed method. * * @author David Hovemeyer */ public class ConstantDataflowFactory extends AnalysisFactory<ConstantDataflow> { public ConstantDataflowFactory() { super("constant propagation analysis", ConstantDataflow.class); } /* (non-Javadoc) * @see edu.umd.cs.findbugs.classfile.IAnalysisEngine#analyze(edu.umd.cs.findbugs.classfile.IAnalysisCache, java.lang.Object) */ public ConstantDataflow analyze(IAnalysisCache analysisCache, MethodDescriptor descriptor) throws CheckedAnalysisException { MethodGen methodGen = getMethodGen(analysisCache, descriptor); if (methodGen == null) return null; ConstantAnalysis analysis = new ConstantAnalysis( methodGen, getDepthFirstSearch(analysisCache, descriptor) ); ConstantDataflow dataflow = new ConstantDataflow(getCFG(analysisCache, descriptor), analysis); dataflow.execute(); return dataflow; } }