Skip to content
Interprocedural Distributive Environment algorithm implementation
Scala Java
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
project
src
.gitignore
README.md
build.sbt

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.

You can’t perform that action at this time.