GithubHelp home page GithubHelp logo

tiandiyixian / boomerang Goto Github PK

View Code? Open in Web Editor NEW

This project forked from secure-software-engineering/boomerang

0.0 0.0 0.0 20.88 MB

Boomerang is a on-demand context and flow-sensitive pointer analysis for Java.

License: GNU Lesser General Public License v2.1

Java 100.00%

boomerang's Introduction

Boomerang

Boomerang is a demand-driven context and flow-sensitive pointer analysis for Java. It is built on top of Soot and Heros.

The key novelties of Boomerang are the query format and the client-driven context-resolution.

Query format: Boomerang delivers rich query information: For a given variable and statement, Boomerang returns the points-to set and additionally all pointers visible in the current method that point to the allocation sites in the points-to set. Pointers in Boomerang are abstracted as access graphs. Access graphs are used to support field accesses.

Client-driven context-resolution: Each query of Boomerang can be limited to a context dictated by the client - the analysis Boomerang is integrated into. Instead of merging points-to information across all possible call sites of a method, Boomerang allows to filter context such that the queries output is with respect to a given calling context. This improves precision when integrating into a context-sensitive analysis, such as a taint or typestate analysis.

Instructions

This project is an eclipse project and can be imported into your workspace. It depends on the git repositories Soot, Heros and Jasmin. These are included as git submodules to ease the synchronisation process and avoid compile time errors. To clone a compilable version all submodulues must be available as well. This is taken care of by the use of the --recursive option of git clone.

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

After the checkout, the root folder of Boomerang will contain a libs folder with the three submodule repositories. Each of them is an eclipse project. Also import these projects as existing Java projects into your eclipse workspace. Boomerang then has all it dependencies and is ready to be used.

Examples

We have prepared a couple of examples on how to use Boomerang. They can be found here.

Licencse

Boomerang is released under LGPL - see LICENSE.txt for details.

Authors

Boomerang has been developed by Johannes Späth, Lisa Nguyen Quang Do, Karim Ali and Eric Bodden.

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.