# boomerang **Repository Path**: mirrors_secure-software-engineering/boomerang ## Basic Information - **Project Name**: boomerang - **Description**: Demand-Driven Pointer Analysis - **Primary Language**: Unknown - **License**: EPL-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-22 - **Last Updated**: 2026-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

## 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](https://digital.ub.uni-paderborn.de/hs/content/titleinfo/3030984). This repository contains: - a Java implementation of [Synchronized Pushdown Systems](https://digital.ub.uni-paderborn.de/hs/content/titleinfo/3030984). - [Boomerang](boomerangPDS) to calculate on-demand points-to and dataflow information using a Synchronized Pushdown System. - [IDEal](idealPDS), an IDE solver based on a [Weighted Pushdown System](https://www.bodden.de/pubs/sab19context.pdf) 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 and Opal. ## Examples Boomerang code examples can be found [here](https://github.com/CodeShield-Security/SPDS/tree/master/boomerangPDS/src/main/java/boomerang/example). Code examples for IDEal are given [here](https://github.com/CodeShield-Security/SPDS/tree/master/idealPDS/src/main/java/inference/example). ## Maven dependency The projects are released on [Maven Central](https://central.sonatype.com/artifact/de.fraunhofer.iem/SPDS) 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: ```.xml de.fraunhofer.iem boomerangPDS x.y.z ``` - IDEal can be included with the following dependency: ```.xml de.fraunhofer.iem idealPDS x.y.z ``` ## Build and Installation If you plan to install Boomerang and IDEal locally, you can use the following commands to build the project: - `mvn clean install -DskipTests` Install the projects and skip all tests - `mvn clean install -DtestSetup=Soot` Install the projects and run the tests with Soot as the underlying framework - `mvn clean install -DtestSetup=SootUp` Install the projects and run the tests with SootUp as the underlying framework - `mvn clean install -DtestSetup=Opal` Install the projects and run the tests with Opal as the underlying framework ## 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 ```xml mvn spotless:apply ``` before commiting your changes.