This is the home of the SootUp project. A complete overhaul of the good, old static analysis framework Soot.
- Transforms JVM bytecode (and other inputs!) to the intermediate representation Jimple.
- Provides ClassHierarchy generation
- CallGraph generation with different algorithms/precisions
- Inter-procedural Data-flow Analysis with the IDE/IFDS framework enabled by Heros
- Applies simple transformations on retrieving a methods Body (see
BodyInterceptor
) - Provides parsing and serialization of the Jimple IR.
Documentation and usage examples are available on Examples. Check the Javadocs. Do you have questions? Feel free to start a Discussion.
(compared to its predecessor Soot.)
- New improved API (without Globals/Singletons)
- Fully-Parallelizable Architecture
- Enables lazy loading of classes (no interleaved loading of used/dependent classes anymore)
- Fail early strategy - input validation while constructing/building objects
- Up-to-Date (i.e. Java8!) Sourcecode Frontend (Beware: Cannot handle try-catch inputs, yet!)
- Full Java 21 Support for Bytecode
- Multiple Views (no single static Scene anymore)
- Immutable Jimple IR Objects and Graphs
For feedback and feature requests, best create appropriate issues.
For questions and clarification, please use the discussions.
the SootUp paper explains further details and the design decision behind SootUp.
Preprint is also available.
If you use SootUp in your research work, feel free to cite it as follows:
@InProceedings{10.1007/978-3-031-57246-3_13,
author="Karakaya, Kadiray
and Schott, Stefan
and Klauke, Jonas
and Bodden, Eric
and Schmidt, Markus
and Luo, Linghui
and He, Dongjie",
editor="Finkbeiner, Bernd
and Kov{\'a}cs, Laura",
title="SootUp: A Redesign of the Soot Static Analysis Framework",
booktitle="Tools and Algorithms for the Construction and Analysis of Systems",
year="2024",
publisher="Springer Nature Switzerland",
address="Cham",
pages="229--247",
isbn="978-3-031-57246-3"
}
The development of SootUp is financed by generous support from the German Research Foundation (DFG) and the Heinz Nixdorf Institute (HNI).