SuperAPI AI 工具集

git-bisect

测试与质量

查看项目

更新于 10-15 10:10

技能介绍

用途

git-bisect 是一个帮助定位引入测试失败或测试不稳定(flakiness)提交的提示词技能。它让 AI 扮演资深软件工程师,通过 git bisect 系统性地二分查找 git 历史,找出导致问题的确切提交。

主要能力

  • 解析用户提供的参数,提取坏提交/分支(BAD_REF)、好提交/分支(GOOD_REF)和测试命令(TEST_COMMAND)。
  • 验证问题是否存在于坏提交上,并检查测试文件是否存在。
  • 启动 git bisect,并通过自动化脚本(git bisect run)执行二分查找。
  • 在自动化失败时支持手动二分,逐提交运行测试并标记 good/bad/skip。
  • 识别罪魁提交后,输出包含作者、日期、提交信息、变更文件及后续步骤的结果报告。
  • 处理构建错误、测试文件缺失、意外失败等特殊情况,支持跳过提交。
  • 提供处理 flaky 测试、多测试文件组合、超时包装等常见模式。

使用方式

用户通过命令参数提供信息,格式可以是:

  • bad=<ref> good=<ref> test="<command>" 完整指定
  • <bad-ref> <good-ref> "<test-command>" 位置参数
  • "<test-command>" 仅提供测试命令,再提示输入坏/好引用

示例:

/git/bisect bad=HEAD good=origin/b12.3.0 test="yarn nx test package-name --testPathPattern='test.test.ts'"
/git/bisect HEAD origin/b12.3.0 "yarn nx test package-name --testPathPattern='test.test.ts'"
/git/bisect "yarn nx test package-name --testPathPattern='test.test.ts'"

工作流程分为多个阶段:解析参数、验证问题、启动 bisect、自动化二分、手动二分(如需要)、识别罪魁提交、报告结果。

适用场景

  • 需要快速定位引入测试失败或 flakiness 的提交。
  • 仓库使用 Nx 测试命令(如 yarn nx test),并希望避免 Nx 守护进程异步问题。
  • 支持 git worktree,并处理 node_modules 共享情况。
  • 需要自动化或手动二分查找的软件开发与调试场景。

限制

  • 必须满足工具要求:Git CLI 可用、仓库干净或仅有预期变更、测试命令可执行。
  • 建议使用 NX_DAEMON=false 以避免异步 Nx 守护进程项目图重算影响执行稳定性。
  • 测试命令必须成功时退出码为 0,失败时非零。
  • 长时间运行的测试可能需要超时包装(如 timeout 60)。
  • 对于 flaky 测试,可能需要多次运行或更宽松的脚本,并在报告中记录。
  • 构建错误、合并冲突、意外失败或已知无关损坏的提交应跳过。
  • 使用 worktree 时,如果 node_modules 共享,构建可能较慢。
  • 对于非常大的二分范围,建议先缩小范围。
  • 其他具体功能、收费、价格、平台、效果或使用步骤暂未提供。