up
This commit is contained in:
45
bench/reachability-benchmark/baselines/codeql/run_all.sh
Normal file
45
bench/reachability-benchmark/baselines/codeql/run_all.sh
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cases_root="${1:-cases}"
|
||||
out_dir="${2:-/tmp/codeql-baseline}"
|
||||
|
||||
cases_root="$(cd "${cases_root}" && pwd)"
|
||||
mkdir -p "${out_dir}"
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
tmp_dir="$(mktemp -d "${out_dir}/codeql-all-XXXX")"
|
||||
submission="${out_dir}/submission.json"
|
||||
|
||||
find "${cases_root}" -name case.yaml -print | sort | while read -r case_file; do
|
||||
case_dir="$(dirname "${case_file}")"
|
||||
case_out="${tmp_dir}/$(basename "${case_dir}")"
|
||||
mkdir -p "${case_out}"
|
||||
"${script_dir}/run_case.sh" "${case_dir}" "${case_out}" >/dev/null
|
||||
done
|
||||
|
||||
python - <<'PY'
|
||||
import json, pathlib, sys
|
||||
tmp_dir = pathlib.Path(sys.argv[1])
|
||||
dest = pathlib.Path(sys.argv[2])
|
||||
|
||||
subs = []
|
||||
for path in sorted(tmp_dir.glob("*/submission.json")):
|
||||
subs.append(json.loads(path.read_text()))
|
||||
|
||||
merged = {
|
||||
"version": "1.0.0",
|
||||
"tool": {"name": "codeql", "version": "aggregate"},
|
||||
"run": {"platform": "codeql-baseline-offline"},
|
||||
"cases": []
|
||||
}
|
||||
|
||||
for sub in subs:
|
||||
merged["cases"].extend(sub.get("cases", []))
|
||||
|
||||
merged["cases"] = sorted(merged["cases"], key=lambda c: c.get("case_id",""))
|
||||
|
||||
dest.write_text(json.dumps(merged, indent=2, sort_keys=True))
|
||||
print(f"submission written: {dest}")
|
||||
PY "${tmp_dir}" "${submission}"
|
||||
Reference in New Issue
Block a user