Warning: The project is not yet fully ready for open source, and although all code files are available, it does not yet have a complete interface for human use. It is full of Workarounds, such as absolute paths, bad variable names and inefficient functions. And, the documentation is not ready yet.
It currently exists only as support material for our thesis and is used to demonstrate our work.
Static Blame is a static analysis tool designed for the Grift language. For now, this project is a fork of Grift repository with additional Static Blame files.
- The analysis tool, located in src/static_blame
- the type flow generation process located in src/static_blame/type_flow_generation.rkt
- the solver located in src/static_blame/type_flow.rkt
- basic definitions in src/static_blame/refinement.rkt
- interface for scripts located in src/static_blame/flow_analysis.rkt
- Test scripts, located in src/static_blame/test
- Mutation analysis in src/static_blame/test/mutate.rkt
- Main scripts in src/static_blame/test/script.rkt
- Test data, which you can use to re-generate main results.
- RQ1 in final report
- The manual classification for FP is listed in spe_fps_work for strict potential error and wdn-fps-transformed-work for wrong dynamic types
- The manual classification for FN is listed in spe_fns_work for strict potential error and wdt_fns_work for wrong dynamic types
- RQ2 in lattice test and size_test
- Plot facilities in main.py
- RQ1 in final report
- Buf fixes for language-grift
Make sure that you have installed numpy
pandas
and matplotlib
in your python environment, and run main.py in the experimental directory.
cd grift-exp
python3 main.py
And every data in the paper will output to the standard output and pictures will be shown. I recommend running it with pycharm