40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
case_dir="${1:-}"
|
|
out_dir="${2:-}"
|
|
|
|
if [[ -z "${case_dir}" ]]; then
|
|
echo "usage: run_case.sh <case_dir> [output_dir]" >&2
|
|
exit 1
|
|
fi
|
|
|
|
case_dir="$(cd "${case_dir}" && pwd)"
|
|
if [[ -z "${out_dir}" ]]; then
|
|
out_dir="${case_dir}/baselines/codeql"
|
|
fi
|
|
mkdir -p "${out_dir}"
|
|
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
analysis_out="$(mktemp -p "${out_dir}" codeql-results-XXXX.json)"
|
|
|
|
codeql_version="$(codeql version --format=text 2>/dev/null | head -n1 || echo "codeql-missing")"
|
|
|
|
# Optional real analysis hook (no-op by default to stay offline-safe)
|
|
if command -v codeql >/dev/null 2>&1; then
|
|
# Placeholder: a minimal, language-agnostic database creation would require build steps per language.
|
|
# To keep deterministic and offline-friendly behavior, we skip execution and rely on normalize to
|
|
# produce conservative predictions. Users can replace this block with real CodeQL invocations.
|
|
echo '{"results":[]}' > "${analysis_out}"
|
|
else
|
|
echo '{"results":[]}' > "${analysis_out}"
|
|
fi
|
|
|
|
python "${script_dir}/normalize.py" \
|
|
--case "${case_dir}/case.yaml" \
|
|
--codeql "${analysis_out}" \
|
|
--tool-version "${codeql_version}" \
|
|
--output "${out_dir}/submission.json"
|
|
|
|
echo "submission written: ${out_dir}/submission.json"
|