Skip to content

Commit

Permalink
restructure & improve texts
Browse files Browse the repository at this point in the history
  • Loading branch information
swissiety committed Dec 18, 2023
1 parent 107abba commit 06422da
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 27 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ A complete overhaul of the good, old static analysis framework [Soot](https://gi
- Provides ClassHierarchy generation
- CallGraph generation with different algorithms/precisions
- Inter-procedural Data-flow Analysis with the IDE/IFDS framework enabled by [Heros](https://github.com/Sable/heros)
- Applies/Enables simple transformations on retrieving a methods Body (see BodyInterceptor)
- Provides serialization of the Jimple IR.
- Applies simple transformations on retrieving a methods Body (see `BodyInterceptor`)
- Provides parsing and serialization of the Jimple IR.

## Getting started
[Documentation](https://soot-oss.github.io/SootUp/) and usage examples are available on Github pages.
Expand All @@ -23,13 +23,13 @@ Do you have questions? Feel free to start a [Discussion](https://github.com/soot

## SootUp improvements
#### (compared to its predecessor [Soot](https://github.com/soot-oss/soot).)
- [x] New Improved API (without Globals/Singletons)
- [x] New improved API (without Globals/Singletons)
- [x] Fully-Parallelizable Architecture
- [x] Enables lazyloading of classes (no interleaved loading of used/dependent classes anymore)
- [x] Enables lazy loading of classes (no interleaved loading of used/dependent classes anymore)
- [x] Fail early strategy - input validation while constructing/building objects
- [x] Up-to-Date (i.e. Java8!) Sourcecode Frontend
- [x] Up-to-Date (i.e. Java8!) Sourcecode Frontend (Beware: Can not handle try-catch inputs, yet!)
- [x] Full Java 21 Support for Bytecode
- [x] Multiple Views (Scenes)
- [x] Multiple Views (no single static Scene anymore)
- [x] Immutable Jimple IR Objects and Graphs
- [ ] Incremental Updates of Program Representation

Expand Down
18 changes: 8 additions & 10 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
# What's SootUp?
SootUp is a complete overhaul of the good, old static analysis framework [Soot](https://github.com/soot-oss/soot).

- Transforms JVM bytecode (and other inputs!) to the intermediate representation Jimple.
- Transforms JVM bytecode 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](https://github.com/Sable/heros)
- Applies/Enables simple transformations on retrieving a methods Body (see BodyInterceptor)
- Inter-procedural data-flow analysis with the IDE/IFDS framework enabled by [Heros](https://github.com/Sable/heros)
- Applies simple transformations on retrieving a methods Body (see BodyInterceptor)
- Provides serialization of the Jimple IR.

!!! important

SootUp is *not a version update* to Soot, it is instead a *completely new implementation* written from scratch that aims to be a leaner, more extensible equivalent of soot.
SootUp is *not a version update* to Soot, it is a *completely new implementation* written from scratch that aims to be a leaner, modernized and developer friendly successor of Soot.
It is not a Drop-In Replacement! The new architecture and API, renders it not trivial to update existing projects that were built on soot.
Therefore we recommend using SootUp for greenfield projects. We hope improved type safety and streamlined mechanisms will aide you implementing and debugging your analysis tool.
Unfortunately not every feature has been ported - If you miss something feel free to [contribute](https://github.com/soot-oss/SootUp/pulls) a feature you miss from good old Soot.


## Why SootUp?
#### [Click here to read our announcement on the first release of SootUp](announce.md)

## Why SootUp?
Over the 20+ years, SootUps predecessor Soot has evolved into a powerful framework, which is one of the most widely used tools in the static analysis community.
This evolution was guided by the needs of the community and carried out with ad-hoc improvements.
As a result, Soot has become a tool that can do a multitude of things, but it is heavy and hard to maintain and comprehend.
Expand All @@ -26,9 +27,6 @@ removing the necessity of arcane knowledge, document it more and more - to make
So we introduced [Design changes in SootUp](whatsnew.md), which aim to address Soot's shortcomings.
The goal is a lighter library that can easily be understood and maintained to be included in other projects.

### Is this a drop-in replacement for Soot?
Not really. SootUp has a completely new architecture and API, so it is not trivial to update existing projects that build on soot. We recommend using SootUp for greenfield projects.


## Supporters
The development of SootUp is financed by generous support from the German Research Foundation (DFG) and
Expand Down
3 changes: 2 additions & 1 deletion docs/whatsnew.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ SootUp has a modular architecture, which enables its clients to include only the
- [core module](https://github.com/soot-oss/SootUp/tree/develop/sootup.core) contains the core building blocks such as the jimple IR, control flow graphs, and frontend interfaces. The rest of the modules build on the core module.
- [java.core module](https://github.com/soot-oss/SootUp/tree/develop/sootup.java.core) contains parts that are essential for analyzing Java code.
- [java.bytecode module](https://github.com/soot-oss/SootUp/tree/develop/sootup.java.bytecode) contains the functionality that is necessary for taking as input java bytecode.
- [java.sourcecode module](https://github.com/soot-oss/SootUp/tree/develop/sootup.java.sourcecode) contains the functionality that is necessary for taking as input java source code.
- [java.sourcecode module](https://github.com/soot-oss/SootUp/tree/develop/sootup.java.sourcecode) contains the functionality that is necessary for taking as input java source code.
**Beware: The sourcecodefrontend is currently unable to handle inputs with exceptions (try/catch/finally)!**
- [callgraph module](https://github.com/soot-oss/SootUp/tree/develop/sootup.callgraph) contains implementations of common call graph construction algorithms such as **CHA**, **RTA**. A reimplementation of **Spark** pointer analysis framework is in progress.
- [jimple.parser module](https://github.com/soot-oss/SootUp/tree/develop/sootup.jimple.parser) contains the functionalty that is necessary for taking as input .jimple files.
- [analysis module](https://github.com/soot-oss/SootUp/tree/develop/sootup.analysis) enables performing interprocedural dataflow analyses.
Expand Down
19 changes: 9 additions & 10 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@ edit_uri: edit/develop/docs/
nav:
- Home: index.md
- Announcements: announce.md
- Design Decisions: whatsnew.md
- Used by: tools.md

- Getting started:
- Installation: installation.md

- Basics:
- Design Decisions: whatsnew.md
- Installation: installation.md
# - Configure your Input: analysisinputlocations.md
- Getting started: getting-started.md
- Jimple: jimple.md

Expand All @@ -21,12 +20,12 @@ nav:
- Call Graph Construction: call-graph-construction.md
- SootUp Utilities: advanced-topics.md

- How to..:
- Write an Analysis: write_analyses.md
# - Modify a StmtGraph: mutable_stmtgraph.md
# - Modify a View: mutable_view.md
# - Implement a BodyInterceptor: body_interceptor.md
# - Implement an AnalysisTool: write_analysis_tool.md
- How to..:
- Write an Analysis: write_analyses.md
# - Modify a StmtGraph: mutable_stmtgraph.md
# - Modify a View: mutable_view.md
# - Implement a BodyInterceptor: body_interceptor.md
# - Implement an AnalysisTool: write_analysis_tool.md

- More information:
- Javadoc: /SootUp/apidocs
Expand Down

0 comments on commit 06422da

Please sign in to comment.