为 AI 生成代码写 lint 规则:最难的是拒绝重复造轮子
Goldziher · reddit · 2026-08-31
作者维护一个 linter,将 ruff、oxc、biome、mago 作为库编译,并添加自己的 ast-grep 规则包,针对 agent 输出的失败模式(如编译通过的桩、无断言的测试、静默丢弃的错误、无理由的抑制注释)。
核心约束:拒绝重复 tier-1 后端的规则。通过按语言延迟表,避免重复报告 ruff 的 C901、PLR0913 或 oxlint 的 max-depth 等。这删除了大多数想先写的规则,因为现有工具已覆盖大部分。
幸存规则(JS/TS):无断言的测试体、整个函数体为 throw new Error("Not implemented")、空的 .catch(() => {});Python:无 assert 和 pytest.raises 的 test 函数、抽象方法外的 raise NotImplementedError 作为整个函数体。
默认关闭:26 条规则中 13 条默认关闭,每条都附有语料测量数据。例如,捕获 Rust todo!() 的规则报告 324 个发现,其中 320 个在生成的 FFI 胶水代码中,手写代码中 4 个有 3 个是真实桩,1 个是 mock,25% 的误报率不足以启用。另一条规则 100% 正确但 94.4% 在 vendored FFI 绑定中,只有 1% 在第一方代码中,正确和可操作是不同的问题。
模式:大部分噪音是路径形状而非模式形状,AST 模式无法表达“不在生成输出中”。
结论:规则是便宜的部分,决定是否启用需要针对真实语料测量并愿意说“不”。
项目:github.com/Goldziher/poly(Rust, MIT)
「编程与Agent」频道最新
- Awesome Python 达 31.7 万星,成 GitHub 星标第十名 — bibryam · 2026-08-31
- Codex 上下文压缩能力改变开发工作流 — corbtt · 2026-08-31
- Compound 代码审查工具升级:减少子代理并支持自定义规范 — iamrobotbear · 2026-08-31
- 开发者用 OpenClaw 2.0 给妻子做财务助手:信托、持仓与目标看板 — steipete · 2026-08-31
- 「AI 写 Rust 是天作之合」遭反驳:AI 的 Rust 代码不配上生产 — RSync25 · 2026-08-31
- 工具报错也是提示词:给 agent 错误信息加上排查线索 — coldoven · 2026-08-31