用途
rde-eval 用于对尚未提交的 React Doctor 规则改动运行有界的本地评估循环(React Doctor Evals,简称 RDE)。它适合在聚焦的规则测试通过之后、检查真实开源项目命中情况时使用。只有在改动已经推送并创建拉取请求(pull request)之后,才应使用 run-parity。
主要能力
- 读取 React Doctor 的未提交改动,并在本地运行 RDE 命令。
- 运行有界样本:通过
node dist/cli.js run "path:$REACT_DOCTOR_CHECKOUT" --runner local --take 100执行。 - 生成摘要:通过
node dist/cli.js digest "path:$REACT_DOCTOR_CHECKOUT" --rule <rule-id>查看指定规则的命中情况。 - 导出 JSON 工件:通过
node dist/cli.js digest "path:$REACT_DOCTOR_CHECKOUT" --json --rule <rule-id> > <artifact-directory>/hits.json。 - 检查目标规则命中:打开被固定(pinned)的仓库对应位置,将代码与规则契约比较,把命中分类为真阳性、假阳性或不支持。
- 为每个假阳性添加规则回归测试,并将确认的假阳性加入模糊回归语料(fuzz regression corpus)。
- 重建并重新运行同一样本。
使用方式
- 准备两个检出(checkout):
export REACT_DOCTOR_CHECKOUT=/absolute/path/to/react-doctor
export RDE_CHECKOUT=/absolute/path/to/react-doctor-evals
git -C "$RDE_CHECKOUT" pull --ff-only
ni -C "$RDE_CHECKOUT"
nr -C "$RDE_CHECKOUT" build
nr -C "$REACT_DOCTOR_CHECKOUT" build
- 从 eval 检出目录运行 RDE 命令,运行有界样本:
cd "$RDE_CHECKOUT"
node dist/cli.js run "path:$REACT_DOCTOR_CHECKOUT" --runner local --take 100
node dist/cli.js digest "path:$REACT_DOCTOR_CHECKOUT" --rule <rule-id>
node dist/cli.js digest "path:$REACT_DOCTOR_CHECKOUT" --json --rule <rule-id> > <artifact-directory>/hits.json
只有在测试和第一个样本通过之后,才增加 --take 的值。
-
检查目标规则命中:对每个命中,或在计数较高时选取有代表性的样本,打开被固定的仓库对应位置,将代码与规则契约比较,分类为真阳性、假阳性或不支持。为每个假阳性添加规则回归测试,并将确认的假阳性加入模糊回归语料。然后重建并重新运行同一样本。
-
报告结果:报告检出修订版本、目标规则、仓库数、项目根数、诊断信息、已检查的命中、已修复的假阳性以及工件路径。说明任何设置错误或跳过的仓库。
-
本地验证之后,返回 rule-validate。该技能决定是否调用拉取请求对等检查(pull request parity)。
适用场景
- 在聚焦的规则测试通过后,对未提交的规则改动进行本地迭代验证。
- 检查真实开源项目中的规则命中情况。
- 区分真阳性与假阳性,并补充回归测试。
限制与注意事项
- 该技能用于有界的本地迭代;只有在改动已推送并创建拉取请求后才使用 run-parity。
- 只有在测试和第一个样本通过之后,才增加
--take的值。 - 记录仓库数时应与项目根数分开记录。不要将错误记录视为干净的扫描结果。
- 报告时需说明任何设置错误或跳过的仓库。
- 本地验证之后应返回 rule-validate,由该技能决定是否调用拉取请求对等检查。