This repository accompanies the paper
“Framework for Optimizing Cross-Check Procedures” (ProMAC 2025).
It provides
- fully reproducible Python scripts (
src/) - a minimal data sample (
data/sample_changes.json) - a one-liner wrapper (
run.sh) that sets up a virtual environment via python3 venv,
runs the CLI script, and launches the updated Streamlit app with full parameterized sensitivity analysis.
./run.shThe script will
- delete and recreate
.venv/(⚠ all contents will be lost) - compute and display cross-check efficiency metrics per project
- launch an interactive Streamlit dashboard with:
- Elasticity and Standardized Sensitivity analysis
- Tornado diagrams
- Monte Carlo distributions
- Configurable display language (EN/JP)
- Unified layout and updated parameter names
Tested on macOS 14 (Python 3.9) and Ubuntu 22.04 (Python 3.10).
The CLI version accepts the following optional arguments:
streamlit— Launch only the Streamlit appgerrit— Run Gerrit-related CLI extraction onlyall(default) — Run both CLI and Streamlit in one go
Examples:
./run.sh streamlit
./run.sh gerritThe Streamlit dashboard displays:
- Efficiency Metrics (E_total, C, S) — per project or scenario
- Sensitivity Analysis
- Relative Sensitivity (
∂E/∂x × x/E) - Standardized Sensitivity (
∂E/∂x × σₓ / σ_E)
- Relative Sensitivity (
- Tornado Diagrams (±20% variation)
- Monte Carlo Simulation with histogram and spider charts
- Language Toggle (EN/JA) — upper-right language switch
- Scenario Filters — quality/schedule grid (2×2), with visual comparison
All graphs are consistently styled and labeled, with markdown hints in both languages.
The CLI version automatically reads recent Gerrit logs (e.g. data/sample_changes.json) and:
- extracts submission and review data
- computes work vs review durations
- exports summary metrics for visualization
- serves as reproducible backend for the GUI
To update the dataset, replace data/sample_changes.json with your own JSON export from Gerrit.
-
If you later re-enable pyenv, simply replace the first block with the previous pyenv logic; everything else stays the same.
-
The Streamlit app reads Gerrit live each time, so the GUI reflects the same data that the CLI just printed.
-
The latest version reflects improvements in visualization clarity, parameter control,
and reproducibility for academic use.