Package edu.umd.cs.findbugs.ba
Class PruneInfeasibleExceptionEdges
java.lang.Object
edu.umd.cs.findbugs.ba.PruneInfeasibleExceptionEdges
- All Implemented Interfaces:
EdgeTypes
Prune a CFG to remove infeasible exception edges. In order to determine what
kinds of exceptions can be thrown by explicit ATHROW instructions, type
analysis must first be performed on the unpruned CFG.
- Author:
- David Hovemeyer
- See Also:
-
Field Summary
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
ConstructorsConstructorDescriptionPruneInfeasibleExceptionEdges
(CFG cfg, org.apache.bcel.generic.MethodGen methodGen, TypeDataflow typeDataflow) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
execute()
Prune infeasible exception edges from the CFG.boolean
-
Constructor Details
-
PruneInfeasibleExceptionEdges
public PruneInfeasibleExceptionEdges(CFG cfg, org.apache.bcel.generic.MethodGen methodGen, TypeDataflow typeDataflow) Constructor.- Parameters:
cfg
- the CFG to prunemethodGen
- the methodtypeDataflow
- initialized TypeDataflow object for the CFG, indicating the types of all stack locations
-
-
Method Details
-
execute
Prune infeasible exception edges from the CFG. If the method returns normally, then the operation was successful, and the CFG should no longer contain infeasible exception edges. If ClassNotFoundException or DataflowAnalysisException are thrown, then the operation was unsuccessful, but the CFG is still valid because it was not modified. If a runtime exception is thrown, then the CFG may be partially modified and should be considered invalid.- Throws:
ClassNotFoundException
-
wasCFGModified
public boolean wasCFGModified()- Returns:
- true if modified
-