public class PurityInterproceduralAnalysis extends AbstractInterproceduralAnalysis<PurityGraphBox>
cg, data, dg, doCheck, order, unanalysed
Modifier and Type | Method and Description |
---|---|
protected void |
analyseMethod(SootMethod method,
PurityGraphBox dst)
Compute the summary for a method by analysing its body.
|
protected void |
applySummary(PurityGraphBox src,
Stmt stmt,
PurityGraphBox summary,
PurityGraphBox dst)
Interprocedural analysis will call applySummary repeatedly as a
consequence to
AbstractInterproceduralAnalysis.analyseCall(Object, Stmt, Object) , once for each
possible target method of the callStmt , provided with its
summary. |
protected void |
copy(PurityGraphBox source,
PurityGraphBox dest)
Copy src into dst.
|
protected void |
fillDotGraph(java.lang.String prefix,
PurityGraphBox o,
DotGraph out)
Called by drawAsOneDot to fill dot subgraph out with the contents of
summary o.
|
protected void |
merge(PurityGraphBox in1,
PurityGraphBox in2,
PurityGraphBox out)
Merge in1 and in2 into out.
|
protected PurityGraphBox |
newInitialSummary()
Initial summary value for analysed functions.
|
protected PurityGraphBox |
summaryOfUnanalysedMethod(SootMethod method)
Whenever the analyse requires the summary of a method you filtered-out,
this function is called instead of analyseMethod.
|
analyseCall, doAnalysis, drawAsManyDot, drawAsOneDot, getAnalysedMethods, getSummaryFor
protected PurityGraphBox newInitialSummary()
AbstractInterproceduralAnalysis
newInitialSummary
in class AbstractInterproceduralAnalysis<PurityGraphBox>
protected void merge(PurityGraphBox in1, PurityGraphBox in2, PurityGraphBox out)
AbstractInterproceduralAnalysis
merge
in class AbstractInterproceduralAnalysis<PurityGraphBox>
protected void copy(PurityGraphBox source, PurityGraphBox dest)
AbstractInterproceduralAnalysis
copy
in class AbstractInterproceduralAnalysis<PurityGraphBox>
protected void analyseMethod(SootMethod method, PurityGraphBox dst)
AbstractInterproceduralAnalysis
analyseMethod
in class AbstractInterproceduralAnalysis<PurityGraphBox>
method
- is the method to be analyseddst
- is where to put the computed method summaryprotected PurityGraphBox summaryOfUnanalysedMethod(SootMethod method)
AbstractInterproceduralAnalysis
Note: This function is called at most once per filtered-out method. It is the equivalent of entryInitialFlow!
summaryOfUnanalysedMethod
in class AbstractInterproceduralAnalysis<PurityGraphBox>
PurityGraph.conservativeGraph
,
PurityGraph.freshGraph
protected void applySummary(PurityGraphBox src, Stmt stmt, PurityGraphBox summary, PurityGraphBox dst)
AbstractInterproceduralAnalysis
AbstractInterproceduralAnalysis.analyseCall(Object, Stmt, Object)
, once for each
possible target method of the callStmt
, provided with its
summary.applySummary
in class AbstractInterproceduralAnalysis<PurityGraphBox>
stmt
- any statement containing an InvokeExprsrc
- summary valid before the call statementsummary
- summary of the possible target of callStmt considered
heredst
- where to put the resultPurityGraph.methodCall
protected void fillDotGraph(java.lang.String prefix, PurityGraphBox o, DotGraph out)
AbstractInterproceduralAnalysis
fillDotGraph
in class AbstractInterproceduralAnalysis<PurityGraphBox>
prefix
- gives you a unique string to prefix your node names and
avoid name-clash