Skip to content
Snippets Groups Projects
README.md 2.28 KiB
Newer Older
David Seehaus's avatar
David Seehaus committed
# Thesis-Metadata-Evaluation

David Seehaus's avatar
David Seehaus committed
This repo contains all repos that I worked on during my master thesis.
With this repo it is possible to reproduce my results for the infinitime-project
in my master thesis.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
## Setup
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
After cloning you can run the build script `./build.sh`.
This script will build all projects and runs the evaluation on the infinitime-project.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
## Evaluation
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
To run the evaluation again go to the directory with the already build infinitime-project:
`cd master-thesis-evaluation/SVF-example-master/`
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
In this directory you can run the evaluation, which compares the results of the ARA-algorithm (baseline)
with the results of my implementation:
`./src/svf-example infinitime-app-0.15.0.ll`
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
This will generate a `.json` file, which contains for each function the amount of created edges.
You can execute the python script in the `master-thesis-evaluation/stats` directory to print out
a summary of the results:
`cd ../stats/
python3 stats.py`
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
## Repos
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
In the following is a list of all repos used in this repo.
Every repo except the LLVM repo also contains a `eval` branch which changes the path
variables to the correct llvm build directory and svf build directory for this repo.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
### LLVM
https://github.com/DaveMichaelson/llvm-project
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
The branch `emit-stmt-attrs` contains my changes for `clang` for version 19.
The branch `release/16.x` contains my changes for `clang` for version 16.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
### Plugin
https://github.com/DaveMichaelson/metadata-transfer-plugin
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
This repo contains my plugin which attributes AST nodes with information about
the inheritance hierarchy, macros and pointer types.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
The `main` branch is for llvm-version 19.
The branch `16-llvm` is for llvm-version 16.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
### SVF
https://github.com/DaveMichaelson/SVF
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
The branch `adjusted_master` is my adjusted version of the SVF-analysis.
It reads the metadata generated by my plugin and restores the inheritance hierarchy
and also restores the pointer type information for functions and function calls.
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
### Evaluation
https://gitlab.uni-hannover.de/davidseehaus/master-thesis-evaluation
David Seehaus's avatar
David Seehaus committed

David Seehaus's avatar
David Seehaus committed
This repo conatins the code for the evaluation. Its execute the ARA algorithm and compares it
to my algorithm. And its also provide a python script to summarize the results.
David Seehaus's avatar
David Seehaus committed
There is also a compile script (`SVF-example-master`) to compile `.cpp` with the plugin.