Coder Social home page Coder Social logo

llmhyy / ideal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from secure-software-engineering/ideal

0.0 2.0 0.0 30.17 MB

IDE/AL - Alias-Aware Framework for Interprocedural Dataflow Analysis

License: GNU Lesser General Public License v2.1

Java 100.00%

ideal's Introduction

IDE/AL - Alias-Aware Framework for Interprocedural Dataflow Analysis

This project is an extension to the Heros framework and allows automatic reasoning of aliases during an object tracking static analysis. Two examples of such an analysis are a taint or typestate analysis.

We implemented a typestate analysis in IDE/AL. A typestate analysis reasons about object and their states. One such property is: A file must always be closed at the end of its lifetime.

File file = new File();
File alias = file;
file.open();
alias.close();

In the example above, an alias to the object is created. There are two accessors to the same file object (file and alias). While one of them receives the open call, the close call is triggered on the other accessor. IDE/AL automatically reasons about the alias relationship internally and then propagates the typestate states over an objects flow graph. In the example the typestate analysis implemented in IDE/AL can correctly reason about the object being correctly used. The typestate analysis therefore must only specify the seed with is the accessor file at the statement file.open() , and the edge functions. The edge functions dictate the transformation of the environments along the flow path (e.g. when the object is switched from state open to closed). The seed and the edge functions are both specified through the interface AnalysisProblem.

Examples

For examples on how to use IDE/AL have a look at the test cases. They can be found here.

Instructions

This project is dependent on Boomerang, which requires Soot, Heros and Jasmin as submodules. To checkout this project use the --recursive option to allow all submodules to be initialized and cloned automatically, i.e.

git clone --recursive [email protected]:uasys/ideal.git

Once the checkout is done, there is a libs folder containing the Boomerang project. Import the Boomerang project as an existing Java project into your eclipse workspace. Do the same for Heros, Soot and Jasmin which are located in the libs folder of Boomerang, i.e. below

libs/boomerang/libs/(heros|soot|jasmin)/

IDE/AL does not contain compile time errors anymore and is readily set up.

Project Structure

Import the project into eclipse. The project contians four different source folders:

  • src: The main source code of IDE/AL. IDE/AL can be used for any data-flow analysis based on IDE that also tracks object references.
  • typestate: The implementation of a typestate analysis in IDE/AL. This source code mainly implements the edge functions over the object flow graph retrieved from IDE/AL.
  • targets: The program code the typestate analysis analyses.
  • tests: JUnit tests for the typestate analysis.

Licencse

IDE/AL is released under LGPL - see LICENSE.txt for details.

Authors

IDE/AL has been developed by Johannes Späth, Karim Ali and Eric Bodden.

ideal's People

Contributors

johspaeth avatar karimhamdanali avatar

Watchers

James Cloos avatar Yun Lin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.