FindBugs™ 1.3.9

edu.umd.cs.findbugs.ba
Class Dataflow<Fact,AnalysisType extends DataflowAnalysis<Fact>>

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.Dataflow<Fact,AnalysisType>
Direct Known Subclasses:
AbstractDataflow, BlockTypeDataflow, CallListDataflow, ConstantDataflow, LiveLocalStoreDataflow, LockDataflow, ObligationDataflow, ReturnPathDataflow, ReturnPathTypeDataflow, TypeDataflow, TypeQualifierDataflow

public class Dataflow<Fact,AnalysisType extends DataflowAnalysis<Fact>>
extends java.lang.Object

Perform dataflow analysis on a method using a control flow graph. Both forward and backward analyses can be performed.

The analysis's transfer function is applied to transform the meet of the results of the block's logical predecessors (the block's start facts) into the block's result facts.

Author:
David Hovemeyer
See Also:
CFG, DataflowAnalysis

Field Summary
static boolean DEBUG
           
 
Constructor Summary
Dataflow(CFG cfg, AnalysisType analysis)
          Constructor.
 
Method Summary
 void dumpDataflow(AnalysisType analysis)
           
 void execute()
          Run the algorithm.
 AnalysisType getAnalysis()
          Get the analysis object.
 CFG getCFG()
          Get the CFG object.
 Fact getFactAfterLocation(Location location)
          Get the dataflow fact representing the point just after given Location.
 Fact getFactAtLocation(Location location)
          Get dataflow fact at (just before) given Location.
 Fact getFactOnEdge(Edge edge)
          Get the fact that is true on the given control edge.
 int getNumIterations()
          Return the number of iterations of the main execution loop.
 Fact getResultFact(BasicBlock block)
          Get dataflow facts for end of given block.
 Fact getStartFact(BasicBlock block)
          Get dataflow facts for start of given block.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static boolean DEBUG
Constructor Detail

Dataflow

public Dataflow(CFG cfg,
                AnalysisType analysis)
Constructor.

Parameters:
cfg - the control flow graph
analysis - the DataflowAnalysis to be run
Method Detail

execute

public void execute()
             throws DataflowAnalysisException
Run the algorithm. Afterwards, caller can use the getStartFact() and getResultFact() methods to to get dataflow facts at start and result points of each block.

Throws:
DataflowAnalysisException

getNumIterations

public int getNumIterations()
Return the number of iterations of the main execution loop.


getStartFact

public Fact getStartFact(BasicBlock block)
Get dataflow facts for start of given block.


getResultFact

public Fact getResultFact(BasicBlock block)
Get dataflow facts for end of given block.


getFactAtLocation

public Fact getFactAtLocation(Location location)
                       throws DataflowAnalysisException
Get dataflow fact at (just before) given Location. Note "before" is meant in the logical sense, so for backward analyses, before means after the location in the control flow sense.

Parameters:
location - the Location
Returns:
the dataflow value at given Location
Throws:
DataflowAnalysisException

getFactAfterLocation

public Fact getFactAfterLocation(Location location)
                          throws DataflowAnalysisException
Get the dataflow fact representing the point just after given Location. Note "after" is meant in the logical sense, so for backward analyses, after means before the location in the control flow sense.

Parameters:
location - the Location
Returns:
the dataflow value after given Location
Throws:
DataflowAnalysisException

getFactOnEdge

public Fact getFactOnEdge(Edge edge)
                   throws DataflowAnalysisException
Get the fact that is true on the given control edge.

Parameters:
edge - the edge
Returns:
the fact that is true on the edge
Throws:
DataflowAnalysisException

getAnalysis

public AnalysisType getAnalysis()
Get the analysis object.


getCFG

public CFG getCFG()
Get the CFG object.


dumpDataflow

public void dumpDataflow(AnalysisType analysis)

FindBugs™ 1.3.9

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