Files
wenzi/scripts/verify_review_evidence.sh

43 lines
1.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
SUMMARY_FILE="${1:?summary file required}"
PROJECT_DIR="${2:-/home/long/project/蚊子}"
[ -s "$SUMMARY_FILE" ] || { echo "summary missing/empty" >&2; exit 2; }
# 1) 必须包含结构化字段
for k in "执行命令" "修改文件" "测试结果" "剩余未完成"; do
grep -q "$k" "$SUMMARY_FILE" || { echo "missing section: $k" >&2; exit 3; }
done
# 2) 至少有3条命令证据bash代码块内或行内命令
cmd_count=$(grep -E "(mvn|npm|npx|pnpm|yarn|pytest|go test|gradle|playwright)" "$SUMMARY_FILE" | wc -l | tr -d ' ')
if [ "${cmd_count:-0}" -lt 3 ]; then
echo "insufficient command evidence: $cmd_count" >&2
exit 4
fi
# 3) 提取日志路径并验证至少2个真实存在
# 允许绝对路径,或相对 logs/ target/ frontend/**/test-results/
mapfile -t paths < <(grep -Eo '/[^ )`"]+\.(log|txt|md|xml|json)|((logs|target|frontend)/[^ )`"]+\.(log|txt|md|xml|json))' "$SUMMARY_FILE" | sort -u)
exists=0
for p in "${paths[@]:-}"; do
if [[ "$p" = /* ]]; then
fp="$p"
else
fp="$PROJECT_DIR/$p"
fi
if [ -f "$fp" ]; then
exists=$((exists+1))
fi
done
if [ "$exists" -lt 2 ]; then
echo "insufficient raw log path evidence: $exists" >&2
exit 5
fi
echo "evidence ok: cmd_count=$cmd_count existing_logs=$exists"