Skip to content

amaurremi/IDE

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 

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.

About

Interprocedural Distributive Environment algorithm implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published