soot.jimple.toolkits.annotation.purity |
|
Java Source File Name | Type | Comment |
AbstractInterproceduralAnalysis.java | Class | Inter-procedural iterator skeleton for summary-based analysis
A "summary" is an abstract element associated to each method that
fully models the effect of calling the method. |
DirectedCallGraph.java | Class | Builds a DirectedGraph from a CallGraph and SootMethodFilter. |
PurityAnalysis.java | Class | |
PurityEdge.java | Class | An edge in a purity graph.
Each edge has a soruce PurityNode, a taget PurityNode, and a field label
(we use a String here).
To represent an array element, the convention is to use the [] field label.
Edges are mmuable and hashable. |
PurityGlobalNode.java | Class | The GBL node. |
PurityGraph.java | Class | Modifications with respect to the article:
- "unanalizable call" are treated by first constructing a conservative
calee graph where all parameters escape globally and return points to
the global node, and then applying the standard analysable call construction
- unanalysable calls add a mutation on the global node; the "field" is named
"outside-world" and models the mutation of any static field, but also
side-effects by native methods, such as I/O, that make methods impure
(see below).
- Whenever a method mutates the global node, it is marked as "impure"
(this can be due to a side-effect or static field mutation), even if the
global node is not rechable from parameter nodes through outside edges.
It seems to me it was a defect from the article ?
TODO: see if we must take the global node into account also when stating
whether a parameter is read-only or safe.
- "simplifyXXX" functions are experimiental... |
PurityGraphBox.java | Class | Simple box class that encapsulates a reference to a PurityGraph. |
PurityInterproceduralAnalysis.java | Class | |
PurityIntraproceduralAnalysis.java | Class | Intra-procedural purity-graph analysis. |
PurityMethodNode.java | Class | Kind of Stmt inside node, but global to the method. |
PurityNode.java | Interface | Interface shared by all kinds of nodes in a PurityGraph.
Such nodes are immuables. |
PurityParamNode.java | Class | A node representing a method parameter. |
PurityStmtNode.java | Class | A node created dynamically and attached to a statement Stmt. |
PurityThisNode.java | Class | A node representing the this parameter. |
SootMethodFilter.java | Interface | Allows specifing which SootMethod you want to analyse in a
AbstractInterproceduralAnalysis. |