SuperAPI AI 工具集

slopwatch

通用与其它

查看项目

更新于 10-16 01:13

技能介绍

Slopwatch 是面向 .NET 的静态分析 CLI,专用于识别 LLM 在修改代码时引入的取巧模式(reward hacking),即让测试通过或构建成功却没有真正解决问题的做法。

用途:每当 LLM 修改 C# 源文件(.cs)、项目文件(.csproj)、props 文件(Directory.Build.props、Directory.Packages.props)或测试文件后,运行 slopwatch 验证是否引入“slop”。

主要能力:内置六条规则。SW001 捕获禁用测试(Skip=、Ignore、#if false);SW002 捕获警告抑制(#pragma warning disable、SuppressMessage);SW003 捕获吞掉异常的空 catch;SW004 捕获测试中的任意延迟(Task.Delay、Thread.Sleep);SW005 捕获项目文件中的 NoWarn、TreatWarningsAsErrors=false;SW006 捕获绕过中央包管理(VersionOverride、内联 Version)。

使用方式:可作为本地工具加入 .config/dotnet-tools.json 后运行 dotnet tool restore,或全局安装 dotnet tool install --global Slopwatch.Cmd。首次使用建议先运行 slopwatch init 建立基线 .slopwatch/baseline.json 并提交,使工具只捕获新引入的问题。常用命令为 slopwatch analyze,可加 -d 指定目录、--fail-on warning 严格模式、--output json 供工具集成、--stats 查看性能;--update-baseline 更新基线应极为罕见并附代码注释说明理由。配置文件 .slopwatch/slopwatch.json 可设置 minSeverity、各规则开关与严重级别、exclude 排除路径。在 Claude Code 中可配置 PostToolUse 钩子调用 slopwatch analyze -d . --hook,该标志只分析 git 脏文件,输出到 stderr,发现警告或错误时以退出码 2 阻止编辑。CI 中可集成 GitHub Actions 或 Azure Pipelines,安装后运行 slopwatch analyze -d . --fail-on warning。

适用场景:在 LLM 参与 .NET 项目改动的开发流程中持续校验,作为本地钩子或 CI 门禁。

限制:工具仅针对 .NET 生态;资料未提供其支持的具体 .NET 版本范围、性能数据或除 NuGet 之外的获取方式。基线仅供隔离遗留问题,不应作为随意收纳新问题的垃圾桶;更新基线或禁用规则需有文档化理由。