|
FindBugs™ 1.3.9 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectedu.umd.cs.findbugs.ba.BasicAbstractDataflowAnalysis<Fact>
edu.umd.cs.findbugs.ba.AbstractDataflowAnalysis<Fact>
edu.umd.cs.findbugs.ba.ForwardDataflowAnalysis<StateSet>
edu.umd.cs.findbugs.ba.obl.ObligationAnalysis
public class ObligationAnalysis
Dataflow analysis to track obligations (i/o streams and other resources which must be closed).
See Weimer and Necula, Finding and preventing run-time error handling mistakes, OOPSLA 2004.
Constructor Summary | |
---|---|
ObligationAnalysis(DepthFirstSearch dfs,
XMethod xmethod,
org.apache.bcel.generic.ConstantPoolGen cpg,
ObligationFactory factory,
ObligationPolicyDatabase database,
TypeDataflow typeDataflow,
IsNullValueDataflow invDataflow,
IErrorLogger errorLogger)
Constructor. |
Method Summary | |
---|---|
void |
copy(StateSet src,
StateSet dest)
Copy dataflow facts. |
StateSet |
createFact()
Create empty (uninitialized) dataflow facts for one program point. |
void |
edgeTransfer(Edge edge,
StateSet fact)
Edge transfer function. |
InstructionActionCache |
getActionCache()
|
void |
initEntryFact(StateSet fact)
Initialize the "entry" fact for the graph. |
boolean |
isFactValid(StateSet fact)
Determine whether the given fact is valid (neither top nor bottom). |
boolean |
isTop(StateSet fact)
Is the given fact the top value. |
void |
makeFactTop(StateSet fact)
Make given fact the top value. |
void |
meetInto(StateSet fact,
Edge edge,
StateSet result)
Meet a dataflow fact associated with an incoming edge into another fact. |
boolean |
same(StateSet a,
StateSet b)
Are given dataflow facts the same? |
void |
transfer(BasicBlock basicBlock,
org.apache.bcel.generic.InstructionHandle end,
StateSet start,
StateSet result)
Transfer function for the analysis. |
void |
transferInstruction(org.apache.bcel.generic.InstructionHandle handle,
BasicBlock basicBlock,
StateSet fact)
Transfer function for a single instruction. |
Methods inherited from class edu.umd.cs.findbugs.ba.ForwardDataflowAnalysis |
---|
getBlockOrder, getDepthFirstSearch, isForwards |
Methods inherited from class edu.umd.cs.findbugs.ba.AbstractDataflowAnalysis |
---|
getFactAfterLocation, getFactAtLocation |
Methods inherited from class edu.umd.cs.findbugs.ba.BasicAbstractDataflowAnalysis |
---|
factToString, finishIteration, getFactOnEdge, getLastUpdateTimestamp, getResultFact, getStartFact, resultFactIterator, setLastUpdateTimestamp, startIteration |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public ObligationAnalysis(DepthFirstSearch dfs, XMethod xmethod, org.apache.bcel.generic.ConstantPoolGen cpg, ObligationFactory factory, ObligationPolicyDatabase database, TypeDataflow typeDataflow, IsNullValueDataflow invDataflow, IErrorLogger errorLogger)
dfs
- a DepthFirstSearch on the method to be analyzedxmethod
- method to analyzecpg
- ConstantPoolGen of the method to be analyzedfactory
- the ObligationFactory defining the obligation typesdatabase
- the PolicyDatabase defining the methods which
add and delete obligationserrorLogger
- callback to use when reporting
missing classesMethod Detail |
---|
public InstructionActionCache getActionCache()
public StateSet createFact()
DataflowAnalysis
public boolean isFactValid(StateSet fact)
AbstractDataflowAnalysis
isFactValid
in class AbstractDataflowAnalysis<StateSet>
public void transferInstruction(org.apache.bcel.generic.InstructionHandle handle, BasicBlock basicBlock, StateSet fact) throws DataflowAnalysisException
AbstractDataflowAnalysis
transferInstruction
in class AbstractDataflowAnalysis<StateSet>
handle
- the instructionbasicBlock
- the BasicBlock containing the instruction; needed to disambiguate
instructions in inlined JSR subroutinesfact
- which should be modified based on the instruction
DataflowAnalysisException
public void transfer(BasicBlock basicBlock, @CheckForNull org.apache.bcel.generic.InstructionHandle end, StateSet start, StateSet result) throws DataflowAnalysisException
DataflowAnalysis
transfer
in interface DataflowAnalysis<StateSet>
transfer
in class AbstractDataflowAnalysis<StateSet>
basicBlock
- the basic blockend
- if nonnull, stop before considering this instruction;
otherwise, consider all of the instructions in the basic blockstart
- dataflow facts at beginning of block (if forward analysis)
or end of block (if backwards analysis)result
- resulting dataflow facts at other end of block
DataflowAnalysisException
public void edgeTransfer(Edge edge, StateSet fact) throws DataflowAnalysisException
DataflowAnalysis
A do-nothing implementation is legal, and appropriate for analyses where branches are not significant.
edgeTransfer
in interface DataflowAnalysis<StateSet>
edgeTransfer
in class BasicAbstractDataflowAnalysis<StateSet>
edge
- the Edgefact
- a dataflow fact
DataflowAnalysisException
public void copy(StateSet src, StateSet dest)
DataflowAnalysis
public void initEntryFact(StateSet fact) throws DataflowAnalysisException
DataflowAnalysis
DataflowAnalysisException
public void makeFactTop(StateSet fact)
DataflowAnalysis
public boolean isTop(StateSet fact)
DataflowAnalysis
public boolean same(StateSet a, StateSet b)
DataflowAnalysis
public void meetInto(StateSet fact, Edge edge, StateSet result) throws DataflowAnalysisException
DataflowAnalysis
fact
- the predecessor fact (incoming edge)edge
- the edge from the predecessorresult
- the result fact
DataflowAnalysisException
|
FindBugs™ 1.3.9 | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |