Class Summary |
AbstractInterproceduralAnalysis |
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 |
Builds a DirectedGraph from a CallGraph and SootMethodFilter. |
PurityAnalysis |
TODO:
- test, test, and test (and correct the potentially infinite bugs)
- optimise PurityGraph, especially methodCall)
- find a better abstraction for exceptions (throw & catch)
- output nicer graphs (especially clusters!) |
PurityEdge |
An edge in a purity graph. |
PurityGlobalNode |
The GBL node. |
PurityGraph |
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). |
PurityGraphBox |
Simple box class that encapsulates a reference to a PurityGraph. |
PurityInterproceduralAnalysis |
|
PurityIntraproceduralAnalysis |
Intra-procedural purity-graph analysis. |
PurityMethodNode |
Kind of Stmt inside node, but global to the method. |
PurityParamNode |
A node representing a method parameter. |
PurityStmtNode |
A node created dynamically and attached to a statement Stmt. |
PurityThisNode |
A node representing the this parameter. |