SuperAPI AI 工具集

rde-eval

测试与质量

查看项目

更新于 10-15 15:40

技能介绍

用途

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)。
  • 重建并重新运行同一样本。

使用方式

  1. 准备两个检出(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
  1. 从 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 的值。

  1. 检查目标规则命中:对每个命中,或在计数较高时选取有代表性的样本,打开被固定的仓库对应位置,将代码与规则契约比较,分类为真阳性、假阳性或不支持。为每个假阳性添加规则回归测试,并将确认的假阳性加入模糊回归语料。然后重建并重新运行同一样本。

  2. 报告结果:报告检出修订版本、目标规则、仓库数、项目根数、诊断信息、已检查的命中、已修复的假阳性以及工件路径。说明任何设置错误或跳过的仓库。

  3. 本地验证之后,返回 rule-validate。该技能决定是否调用拉取请求对等检查(pull request parity)。

适用场景

  • 在聚焦的规则测试通过后,对未提交的规则改动进行本地迭代验证。
  • 检查真实开源项目中的规则命中情况。
  • 区分真阳性与假阳性,并补充回归测试。

限制与注意事项

  • 该技能用于有界的本地迭代;只有在改动已推送并创建拉取请求后才使用 run-parity。
  • 只有在测试和第一个样本通过之后,才增加 --take 的值。
  • 记录仓库数时应与项目根数分开记录。不要将错误记录视为干净的扫描结果。
  • 报告时需说明任何设置错误或跳过的仓库。
  • 本地验证之后应返回 rule-validate,由该技能决定是否调用拉取请求对等检查。