package edu.umd.cs.findbugs.classfile.engine.bcel;
import edu.umd.cs.findbugs.ba.BlockTypeAnalysis;
import edu.umd.cs.findbugs.ba.BlockTypeDataflow;
import edu.umd.cs.findbugs.ba.CFG;
import edu.umd.cs.findbugs.ba.DepthFirstSearch;
import edu.umd.cs.findbugs.classfile.CheckedAnalysisException;
import edu.umd.cs.findbugs.classfile.IAnalysisCache;
import edu.umd.cs.findbugs.classfile.MethodDescriptor;
/**
* Analysis engine for producing BlockTypeDataflow for an analyzed method.
*
* @author David Hovemeyer
*/
public class BlockTypeAnalysisFactory extends AnalysisFactory<BlockTypeDataflow> {
public BlockTypeAnalysisFactory() {
super("block type analysis", BlockTypeDataflow.class);
}
/*
* (non-Javadoc)
*
* @see
* edu.umd.cs.findbugs.classfile.IAnalysisEngine#analyze(edu.umd.cs.findbugs
* .classfile.IAnalysisCache, java.lang.Object)
*/
@Override
public BlockTypeDataflow analyze(IAnalysisCache analysisCache, MethodDescriptor descriptor) throws CheckedAnalysisException {
CFG cfg = getCFG(analysisCache, descriptor);
DepthFirstSearch dfs = getDepthFirstSearch(analysisCache, descriptor);
BlockTypeAnalysis analysis = new BlockTypeAnalysis(dfs);
BlockTypeDataflow dataflow = new BlockTypeDataflow(cfg, analysis);
dataflow.execute();
return dataflow;
}
}