Interprocedural Distributive Environment algorithm implementation
Switch branches/tags
Nothing to show
Clone or download
Latest commit d40e4a3 Jul 16, 2015
Permalink
Failed to load latest commit information.
project initial commit May 28, 2015
src uncomment, remove cp Jul 16, 2015
.gitignore initial commit May 28, 2015
README.md Update README.md Jun 13, 2015
build.sbt fixing error Jun 2, 2015

README.md

Implementation of the IDE algorithm

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.

Set Up

  1. Install the WALA library into your local Maven repository, as described in the first step of the WALAFacade installation instructions.

  2. 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.

IFDS

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.

Note

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.