FindBugs™ 1.3.9

edu.umd.cs.findbugs.ba
Class PruneInfeasibleExceptionEdges

java.lang.Object
  extended by 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
PruneInfeasibleExceptionEdges(CFG cfg, org.apache.bcel.generic.MethodGen methodGen, TypeDataflow typeDataflow)
          Constructor.
 
Method Summary
 void execute()
          Prune infeasible exception edges from the CFG.
 boolean wasCFGModified()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PruneInfeasibleExceptionEdges

public PruneInfeasibleExceptionEdges(CFG cfg,
                                     org.apache.bcel.generic.MethodGen methodGen,
                                     TypeDataflow typeDataflow)
Constructor.

Parameters:
cfg - the CFG to prune
methodGen - the method
typeDataflow - 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

FindBugs™ 1.3.9

FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.