mcpField
R
reproduce-bug

reproduce-bug

github.com/trailofbits测试与质量7.9k216 次安装2 天前更新
代码仓库

关于 reproduce-bug

reproduce-bug 是用于在本地基线检出版本中测试已报告错误的技能。它将构建和复现证据记录为结构化包,并区分已复现、未复现和受阻结果。

主要功能

  1. 01构建项目基线
  2. 02编辑前测试指定输入
  3. 03记录进程输出与耗时
  4. 04打包 PoC、收据和结果记录

适用场景

  1. 01根据 PoC 复现运行时错误
  2. 02依据诊断信息验证编译器失败

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trailofbits/skills --skill reproduce-bug

安装后在 Claude Code 中输入/reproduce-bug确认已加载。

详细介绍

重现 Bug

适用场景

当你要使用一份 finding.json 和本地基线检出,执行 patching-bugs 的重现步骤时使用。请阅读记录约定。 执行目标命令前,请遵循其项目指南。

不适用场景

不要用于发现 Bug、修补 Bug,或验证无法在本地运行的声明。如果构建或环境无法验证该声明,请报告阻碍因素。

流程

  1. 从记录约定中选择 failure_type。使用项目自身的命令构建当前基线。在进行任何编辑前,使用计划中的限定输入进行验证,并保留观察结果,包括有效的对照样例。保存原始 stdout、stderr、退出状态和耗时。如果有可信证据表明问题未出现,请报告 not_reproduced;如果设置或观察结果不可靠,请报告 blocked。

  2. 运行时:使用 PoC 验证已构建的 target_artifact,并按照约定记录 PATCH_LOADED,然后在断言之前立即输出 PATCH_REACHED。Bug 存在时以非零状态退出,否则以零状态退出;设置阶段崩溃不具结论性。 编译:记录编译器调用失败时目标 expected_diagnostic;使用空的 poc_argv 和 null target_artifact。

  3. 将任何未更改的 PoC 源代码保存到 reproduce/poc/,并将原始凭据保存到 reproduce/receipts/。编写 reproduce.json,其中包含基线提交、命令参数数组、制品路径、观察结果、结论和你的 Agent 身份。根据结果将 finding.status 设为 reproduced 或 not_reproduced。如果重现被 blocked,请将 finding.status 保持为 hypothesis。

    重现记录架构:

{
  "schema_version": 1,
  "failure_type": "runtime",
  "outcome": "reproduced",
  "baseline_commit": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "build_argv": ["python", "build.py"],
  "poc_argv": ["python", "poc.py"],
  "target_artifact": "dist/app.py",
  "observed": "The PoC wrote outside uploads after PATCH_REACHED.",
  "blocker": null,
  "agent": "reproducer-1"
}
  1. 使用记录辅助工具为完整的 reproduce/ 目录(包括 PoC 和记录)生成清单:运行 uv run --no-project <script> manifest <reproduce-step-dir>。然后在交接前检查记录。如果构建或设置导致无法有效运行,请根据实际故障说明 blocked。

应拒绝的借口

走捷径必须采取的操作
单元测试模拟了 Bug。验证目标编译器或已构建的运行时制品。
非零退出状态证明重现成功。必须有目标诊断,或运行时标记和断言。

评论

支持 Markdown