The goal of this project is to make the Interprocedural Distributive Environment (IDE) [1] data-flow analysis algorithm accessible in WALA.
The code of the analysis is written in Scala. Our analysis relies on WALA, a library for static analysis on Java bytecode written in Java. To facilitate the usage of WALA in Scala, you can use the WALAFacade library.
[1] Mooly Sagiv, Thomas Reps, and Susan Horwitz. Precise interprocedural dataflow analysis with applications to constant propagation. Theoretical Computer Science, 1996.
-
Install the WALA library into your local Maven repository, as described in the first step of the WALAFacade installation instructions.
-
Build the project with SBT:
- Checkout the IDE project and navigate into its directory.
- Install SBT on your machine.
- Navigate into the checked out IDE project directory from the command line.
sbt gen-idea
, if you'd like to use IntelliJ IDEA,sbt eclipse
, if you'd like to use Eclipse,sbt
, if you prefer using another IDE.
IDE is a generalization of the IFDS algorithm [2]. Any IFDS problem can be transformed to an equivalent IDE problem and solved with the IDE solver.
Using IdeFromIfdsBuilder
, you can solve any existing WALA IFDS problem with IDE (see ReachingDefsIdeSpec
example).
[2] Thomas Reps, Susan Horwitz, and Mooly Sagiv. Precise interprocedural dataflow analysis via graph reachability. Principles of Programming Languages, 1995.
This is the initial version of the implementation. Work on making the analysis more efficient and adding examples of IDE problem implementations is in progress.