sootup-wrapper contains the Java implementation, tests, and build pipeline for the SootUp-based call graph generator used by Debricked reachability analysis.
This repository is intentionally separate from the CLI repository so the wrapper can be developed, tested, and versioned independently.
- A runnable Java wrapper:
com.debricked.sootup.SootUpWrapper - A shaded (fat) JAR artifact:
SootUpWrapper.jar - Maven-based build and test setup
- CI workflow for validation
java/common/
├─ pom.xml
└─ src/
├─ main/java/com/debricked/sootup/SootUpWrapper.java
└─ test/java/com/debricked/sootup/SootUpWrapperTest.java
- Java 11+ (project is compiled to Java 11 bytecode)
- Maven 3.8+
From repository root:
mvn -f java/common/pom.xml clean packageGenerated artifact:
java/common/target/sootup-wrapper-1.0.0.jar
This JAR includes all required dependencies (shade plugin) and can be executed directly.
mvn -f java/common/pom.xml testExample:
java -jar java/common/target/sootup-wrapper-1.0.0.jar \
-u /path/to/compiled/classes \
-l /path/to/dependency/jars \
-f debricked-call-graph.javaSupported flags:
-u <dir>: user class directory (repeatable)-l <dir>: dependency JAR directory (optional)-f <file>: output file path (default:debricked-call-graph.java)-a <algo>: algorithm (rtaorcha, defaultrta)
The wrapper writes a Debricked call graph JSON payload (version 5) to the output file.
The CLI does not own this Java source. It consumes the built wrapper artifact and uses it when the Java callgraph engine is set to sootup.
In CLI release/build flow:
- Build this project (
java/common) - Take the produced JAR
- Embed/copy it into CLI packaging input (
SootUpWrapper.jar)
- Do not commit extracted dependency trees like
sootup/core,cache,frontend, etc. Those are dependency artifacts, not maintained source code. - Keep API/CLI compatibility stable for wrapper flags so CLI integration remains seamless.