mcpField
F
fuzz

fuzz

github.com/millionco测试与质量15.1k283 次安装2 周前更新
代码仓库

关于 fuzz

用于通过模糊测试框架检查代码分析规则的技能,指导开发者运行针对性或语料库测试,并处理发现、保存回归用例和报告结果。

主要功能

  1. 01运行针对规则的模糊测试
  2. 02按标签测试规则组
  3. 03使用预备的仓库语料库
  4. 04排查崩溃与误报
  5. 05保存回归用例并重放种子

适用场景

  1. 01在定向测试通过后检查规则
  2. 02在真实仓库中测试规则行为
  3. 03重现并调查模糊测试发现

安装

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

$npx skills add https://github.com/millionco/react-doctor --skill fuzz

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

详细介绍

模糊测试规则

通过针对性规则测试后,使用 packages/fuzz。阅读其 README.md,了解测试框架架构和语料库设置。

运行测试框架

先运行目标规则:

FUZZ_RULE=<rule-id> FUZZ_STRICT=1 FUZZ_ITERATIONS=500 nr fuzz

有用的变体:

nr fuzz
FUZZ_RULE=<rule-id> FUZZ_SEED=42 nr fuzz
FUZZ_INVARIANTS=1 nr fuzz
FUZZ_CORPUS_DIR=<repository-directory> nr fuzz
FUZZ_RULE=<rule-id> FUZZ_PRINT_SILENT=1 nr fuzz

确认目标规则会触发。未触发的规则只会执行提前退出逻辑。如果规则一直未触发,请在 packages/fuzz/src/snippet-pools.ts 中添加可触发的代码形态,然后重新运行。

使用 FUZZ_TAG=<tag> 代替 FUZZ_RULE,以测试整个注册表类别。

建议进行完整扫描(例如在发布一批规则之前),并将语料库指向真实代码仓库。现成的语料库可在任何机器上使用,详见软件包 README 中的“Canonical corpora”:bun scripts/sync-fuzz-corpus.ts 会生成一个固定版本的 48 个仓库样本(存在 RDE 缓存时创建符号链接,否则克隆仓库),而 bun scripts/build-bench-corpus.ts 会从 react-bench 中提取 RD-health 诊断密集型目标文件:

cd packages/fuzz
bun scripts/sync-fuzz-corpus.ts
FUZZ_INVARIANTS=1 FUZZ_ITERATIONS=100 FUZZ_CORPUS_DIR=tmp/corpus-repos nr fuzz

当规则变更影响常见语法时,运行直接误报检查:

cd packages/fuzz
bun scripts/hunt-false-positives.ts

分类处理发现

复现用例位于 packages/fuzz/tmp/fuzz-findings/。

  • 崩溃:精简程序,添加不会抛出异常的回归测试,修复规则,并重放种子
  • 慢速用例:分析异常代码形态,限制遍历范围,并保留现有阈值
  • 判定结果下降:修复依赖偶然语法结构的检测逻辑,并在适当时将规则添加到稳健性门禁
  • 不变量违反:判断规则是否应对重写作出反应;修复意外变更并进行测试
  • 误报:将有效程序添加到规则测试和模糊测试回归语料库中

重放一条发现记录:

FUZZ_RULE=<rule-id> FUZZ_SEED=<seed> FUZZ_ITERATIONS=1 nr fuzz

保留误报用例

对于每个确认的误报:

  1. 在 packages/fuzz/corpus/regressions/<rule-id>--<slug>.tsx 中添加最小测试样例。
  2. 在测试样例头部注明规则 ID、弱点类别和源代码。
  3. 在规则测试套件中添加一个针对性的有效用例。
  4. 如果现有代码池无法生成该弱点,则添加一个生成器代码片段。
  5. 运行 nr -C packages/fuzz test 并重放目标规则。

使用稳定的弱点名称,例如 library-idiom、control-flow、wrapper-transparency、name-heuristic、alias-guard、cross-file、framework-gating、paren-shape、default-parameter、dynamic-computed、private-member 或 copy-tracking。

项目级死代码和依赖项发现应放在核心测试中,而不是规则模糊测试器中。

报告结果

记录命令、目标规则触发次数、发现结果、重放种子、语料库测试样例和生成器变更。将已确认的实现问题交给 rule-validate 处理。

评论

支持 Markdown