This repository contains:
The case-studies directory contains the source code for a collection of
applications, frozen in time and sometimes partially altered, for which we
formalized policies and assigned markers.
The policies directory contains implementations for policies corresponding to
the case study applications.
Each policy comprises of a lib portion that defines the policy, as well as a
standalone application, named after the case study, that enforces the policy on
the case study code in case-studies.
To run such an individual policy use cargo run --release --bin <case-study-name>. The policies have command line arguments which you can
explore by passing --help like so: cargo run --release --bin <case-study-name> -- --help.
griswold is our push-button benchmarker that runs various configuration of the
policies on the case studies. It reasons about expected and actual outcomes
while collecting performance metrics like runtime, graph size and lines of code
analyzed.
Each benchmark run is controlled by a central TOML file. The format of the file
is defined by and documented as the data structures in
input.rs. Examples of the bench configurations are
found in the bconf directory.
It's results are timestamped and written to the results directory. The output
format is defined by the data structures in output.rs.
For additional information see the Notion page.
roll-forwardcontains additional files pertaining to the roll forward experiment for AtomicData and Plume