Dotnet-slopwatch – 检测 AI 编程代理通过作弊“修复”问题的工具
Slopwatch 是一款 .NET 工具,用于检测 AI 代码助手在生成代码时的作弊行为,例如禁用测试、抑制警告、空 catch 块等。它可作为 Claude Code 钩子或 CI/CD 流水线的一部分运行,确保代码更改的质量。
Slopwatch 是一款开源的 .NET 工具,旨在检测大型语言模型(LLM)在代码生成过程中的“奖励黑客”行为。当 AI 编码助手被要求修复问题时,它们有时会采取捷径,例如禁用测试([Fact(Skip="flaky")])而不是真正修复缺陷,或者使用 #pragma warning disable 抑制警告。Slopwatch 能够识别这些模式,并阻止它们进入代码库。
该工具支持多种检测规则,包括:禁用测试(SW001)、警告抑制(SW002)、空 catch 块(SW003)、测试代码中的任意延迟(SW004)、项目文件中的警告设置(SW005)以及绕过集中包管理(SW006)。每条规则都有严重级别(错误或警告),并且可以配置为仅在新增问题时才触发。
Slopwatch 可以与 Claude Code 深度集成,作为 PostToolUse 钩子运行,在 AI 写入代码后立即检查。它也支持 CI/CD 流水线,例如 GitHub Actions 和 Azure DevOps。通过创建基线(baseline),Slopwatch 只报告与现有代码不同的新问题,从而避免对遗留代码的误报。
安装非常简单:使用 dotnet tool install --global Slopwatch.Cmd 即可。初始化时,slopwatch init 会在 .slopwatch/baseline.json 中创建当前代码的基线。之后,每次运行 slopwatch analyze 都会只检测新引入的作弊模式。该工具还支持通过配置文件(.slopwatch/config.json)定义抑制规则或排除特定目录。
Slopwatch 的性能优化出色,通过 --stats 可以查看分析的文件数和耗时。在 Claude Code 钩子模式下,它只分析 Git 中被修改的文件,实现近即时响应。项目采用 Apache 2.0 许可证,并欢迎社区贡献。