Skip to content

secure-software-engineering/Boomerang

Repository files navigation

Boomerang

Boomerang is an efficient and precise pointer and dataflow analysis framework based on a Synchronized Pushdown Systems (SPDS). SPDS relies on two pushdown systems that model field-sensitivity and context-sensitivity separately. Combining (synchronizing) both systems enables a field-sensitive and context-sensitive analysis that is also flow-sensitive. Detailed information can be found here.

This repository contains:

  • a Java implementation of Synchronized Pushdown Systems.
  • Boomerang to calculate on-demand points-to and dataflow information using a Synchronized Pushdown System.
  • IDEal, an IDE solver based on a Weighted Pushdown System that uses Boomerang to compute alias information only when required (i.e. on-demand).
  • Implementation of scopes that allows you to run Boomerang and IDEal with the static analysis frameworks Soot.

Examples

Boomerang code examples can be found here. Code examples for IDEal are given here.

Maven dependency

The projects are released on Maven Central and can be included as a dependency in .pom files (replace x.y.z with the latest version).

  • Boomerang can be included with the following dependency:
<dependency>
  <groupId>de.fraunhofer.iem</groupId>
  <artifactId>boomerangPDS</artifactId>
  <version>x.y.z</version>
</dependency>
  • IDEal can be included with the following dependency:
<dependency>
  <groupId>de.fraunhofer.iem</groupId>
  <artifactId>idealPDS</artifactId>
  <version>x.y.z</version>
</dependency>

Contributing

We hare happy for every contribution from the community! You can simply create a fork and open a pull request. Note that we use the Google style sheet to keep the code clean. To format the code, run the command

mvn spotless:apply

before commiting your changes.