Package edu.umd.cs.findbugs.ba
Class BetterCFGBuilder2
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.BetterCFGBuilder2
-
- All Implemented Interfaces:
CFGBuilder
,Debug
,EdgeTypes
public class BetterCFGBuilder2 extends java.lang.Object implements CFGBuilder, EdgeTypes, Debug
A CFGBuilder that really tries to construct accurate control flow graphs. The CFGs it creates have accurate exception edges, and have accurately inlined JSR subroutines.- Author:
- David Hovemeyer
- See Also:
CFG
-
-
Field Summary
-
Fields inherited from interface edu.umd.cs.findbugs.ba.Debug
VERIFY_INTEGRITY
-
Fields inherited from interface edu.umd.cs.findbugs.ba.EdgeTypes
BACKEDGE_SOURCE_EDGE, BACKEDGE_TARGET_EDGE, CHECKED_EXCEPTIONS_FLAG, EXIT_EDGE, EXPLICIT_EXCEPTIONS_FLAG, FALL_THROUGH_EDGE, GOTO_EDGE, HANDLED_EXCEPTION_EDGE, IFCMP_EDGE, JSR_EDGE, RET_EDGE, RETURN_EDGE, START_EDGE, SWITCH_DEFAULT_EDGE, SWITCH_EDGE, UNHANDLED_EXCEPTION_EDGE, UNKNOWN_EDGE
-
-
Constructor Summary
Constructors Constructor Description BetterCFGBuilder2(MethodDescriptor descriptor, org.apache.bcel.generic.MethodGen methodGen)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
build()
Build the CFG.CFG
getCFG()
Get the CFG built by this object.int
getIndex(FieldDescriptor f)
void
inline(edu.umd.cs.findbugs.ba.BetterCFGBuilder2.Context context)
Inline a subroutine into a calling context.static void
main(java.lang.String[] argv)
Test driver.void
optimize(org.apache.bcel.generic.InstructionList instructionList)
-
-
-
Constructor Detail
-
BetterCFGBuilder2
public BetterCFGBuilder2(@Nonnull MethodDescriptor descriptor, @Nonnull org.apache.bcel.generic.MethodGen methodGen)
Constructor.- Parameters:
methodGen
- the method to build a CFG for
-
-
Method Detail
-
getIndex
public int getIndex(FieldDescriptor f)
-
optimize
public void optimize(org.apache.bcel.generic.InstructionList instructionList)
-
build
public void build() throws CFGBuilderException
Description copied from interface:CFGBuilder
Build the CFG.- Specified by:
build
in interfaceCFGBuilder
- Throws:
CFGBuilderException
-
getCFG
public CFG getCFG()
Description copied from interface:CFGBuilder
Get the CFG built by this object. Assumes that the build() method has already been called.- Specified by:
getCFG
in interfaceCFGBuilder
- Returns:
- the CFG
-
inline
public void inline(edu.umd.cs.findbugs.ba.BetterCFGBuilder2.Context context) throws CFGBuilderException
Inline a subroutine into a calling context.- Parameters:
context
- the Context- Throws:
CFGBuilderException
-
main
public static void main(java.lang.String[] argv) throws java.lang.Exception
Test driver.- Throws:
java.lang.Exception
-
-