Package edu.umd.cs.findbugs.ba
Class PruneInfeasibleExceptionEdges
- java.lang.Object
-
- edu.umd.cs.findbugs.ba.PruneInfeasibleExceptionEdges
-
- All Implemented Interfaces:
EdgeTypes
public class PruneInfeasibleExceptionEdges extends java.lang.Object implements 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:
CFG
,TypeAnalysis
-
-
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
Constructors Constructor Description PruneInfeasibleExceptionEdges(CFG cfg, org.apache.bcel.generic.MethodGen methodGen, TypeDataflow typeDataflow)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
execute()
Prune infeasible exception edges from the CFG.boolean
wasCFGModified()
-
-
-
Constructor Detail
-
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 Detail
-
execute
public void execute() throws java.lang.ClassNotFoundException
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:
java.lang.ClassNotFoundException
-
wasCFGModified
public boolean wasCFGModified()
- Returns:
- true if modified
-
-