Package soot.jimple.toolkits.infoflow
Class SimpleMethodInfoFlowAnalysis
- java.lang.Object
-
- soot.toolkits.scalar.AbstractFlowAnalysis<N,A>
-
- soot.toolkits.scalar.FlowAnalysis<N,A>
-
- soot.toolkits.scalar.ForwardFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
- soot.jimple.toolkits.infoflow.SimpleMethodInfoFlowAnalysis
-
- Direct Known Subclasses:
SimpleMethodLocalObjectsAnalysis
public class SimpleMethodInfoFlowAnalysis extends ForwardFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class soot.toolkits.scalar.FlowAnalysis
FlowAnalysis.Flow
-
-
Field Summary
Fields Modifier and Type Field Description static intcounter-
Fields inherited from class soot.toolkits.scalar.FlowAnalysis
filterUnitToAfterFlow, unitToAfterFlow
-
Fields inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
filterUnitToBeforeFlow, graph, unitToBeforeFlow
-
-
Constructor Summary
Constructors Modifier Constructor Description SimpleMethodInfoFlowAnalysis(UnitGraph g, InfoFlowAnalysis dfa, boolean ignoreNonRefTypeFlow)protectedSimpleMethodInfoFlowAnalysis(UnitGraph g, InfoFlowAnalysis dfa, boolean ignoreNonRefTypeFlow, boolean dummyDontRunAnalysisYet)A constructor that doesn't run the analysis
-
Method Summary
-
Methods inherited from class soot.toolkits.scalar.ForwardFlowAnalysis
doAnalysis, isForward
-
Methods inherited from class soot.toolkits.scalar.FlowAnalysis
copyFreshToExisting, getFlow, getFlowAfter, getFlowBefore, omissible
-
Methods inherited from class soot.toolkits.scalar.AbstractFlowAnalysis
merge, mergeInto, treatTrapHandlersAsEntries
-
-
-
-
Constructor Detail
-
SimpleMethodInfoFlowAnalysis
public SimpleMethodInfoFlowAnalysis(UnitGraph g, InfoFlowAnalysis dfa, boolean ignoreNonRefTypeFlow)
-
SimpleMethodInfoFlowAnalysis
protected SimpleMethodInfoFlowAnalysis(UnitGraph g, InfoFlowAnalysis dfa, boolean ignoreNonRefTypeFlow, boolean dummyDontRunAnalysisYet)
A constructor that doesn't run the analysis
-
-
Method Detail
-
doFlowInsensitiveAnalysis
public void doFlowInsensitiveAnalysis()
-
getMethodInfoFlowSummary
public MutableDirectedGraph<EquivalentValue> getMethodInfoFlowSummary()
-
merge
protected void merge(FlowSet<Pair<EquivalentValue,EquivalentValue>> in1, FlowSet<Pair<EquivalentValue,EquivalentValue>> in2, FlowSet<Pair<EquivalentValue,EquivalentValue>> out)
Description copied from class:AbstractFlowAnalysisCompute the merge of thein1andin2sets, putting the result intoout. The behavior of this function depends on the implementation ( it may be necessary to check whetherin1andin2are equal or aliased ). Used by the doAnalysis method.- Specified by:
mergein classAbstractFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
isNonRefType
protected boolean isNonRefType(Type type)
-
ignoreThisDataType
protected boolean ignoreThisDataType(Type type)
-
isInterestingSource
public boolean isInterestingSource(Value source)
-
isTrackableSource
public boolean isTrackableSource(Value source)
-
isInterestingSink
public boolean isInterestingSink(Value sink)
-
isTrackableSink
public boolean isTrackableSink(Value sink)
-
handleFlowsToValue
protected void handleFlowsToValue(Value sink, Value initialSource, FlowSet<Pair<EquivalentValue,EquivalentValue>> fs)
-
handleFlowsToDataStructure
protected void handleFlowsToDataStructure(Value base, Value initialSource, FlowSet<Pair<EquivalentValue,EquivalentValue>> fs)
-
handleInvokeExpr
protected List<Value> handleInvokeExpr(InvokeExpr ie, Stmt is, FlowSet<Pair<EquivalentValue,EquivalentValue>> fs)
-
flowThrough
protected void flowThrough(FlowSet<Pair<EquivalentValue,EquivalentValue>> in, Unit unit, FlowSet<Pair<EquivalentValue,EquivalentValue>> out)
Description copied from class:FlowAnalysisGiven the merge of theoutsets, compute theinset fors(or in to out, depending on direction). This function often causes confusion, because the same interface is used for both forward and backward flow analyses. The first parameter is always the argument to the flow function (i.e. it is the "in" set in a forward analysis and the "out" set in a backward analysis), and the third parameter is always the result of the flow function (i.e. it is the "out" set in a forward analysis and the "in" set in a backward analysis).- Specified by:
flowThroughin classFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>- Parameters:
in- the input flowunit- the current nodeout- the returned flow
-
copy
protected void copy(FlowSet<Pair<EquivalentValue,EquivalentValue>> source, FlowSet<Pair<EquivalentValue,EquivalentValue>> dest)
Description copied from class:AbstractFlowAnalysisCreates a copy of thesourceflow object indest.- Specified by:
copyin classAbstractFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
entryInitialFlow
protected FlowSet<Pair<EquivalentValue,EquivalentValue>> entryInitialFlow()
Description copied from class:AbstractFlowAnalysisReturns the initial flow value for entry/exit graph nodes. This is equal toAbstractFlowAnalysis.newInitialFlow()- Overrides:
entryInitialFlowin classAbstractFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
newInitialFlow
protected FlowSet<Pair<EquivalentValue,EquivalentValue>> newInitialFlow()
Description copied from class:AbstractFlowAnalysisReturns the flow object corresponding to the initial values for each graph node.- Specified by:
newInitialFlowin classAbstractFlowAnalysis<Unit,FlowSet<Pair<EquivalentValue,EquivalentValue>>>
-
getThisLocal
public Value getThisLocal()
-
-