Class PruneInfeasibleExceptionEdges

java.lang.Object
edu.umd.cs.findbugs.ba.PruneInfeasibleExceptionEdges
All Implemented Interfaces:
EdgeTypes

public class PruneInfeasibleExceptionEdges extends 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.
See Also:
  • Field Details

    • DEBUG

      private static final boolean DEBUG
    • STATS

      private static final boolean STATS
    • numEdgesPruned

      private static int numEdgesPruned
    • cfg

      private final CFG cfg
    • typeDataflow

      private final TypeDataflow typeDataflow
    • cfgModified

      private boolean cfgModified
  • Constructor Details

    • 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 Details

    • execute

      public void execute() throws 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:
      ClassNotFoundException
    • wasCFGModified

      public boolean wasCFGModified()
      Returns:
      true if modified