用途:在代码修改后运行 Slopwatch.Cmd 作为自动化质量门禁,检测“slop”——即让构建或测试通过但未真正解决问题的捷径。
主要能力:检测被禁用的测试(Skip=、Ignore、#if false)、警告抑制(#pragma warning disable、SuppressMessage)、吞掉异常的空 catch 块、测试中的任意延迟(Task.Delay、Thread.Sleep)、项目文件 slop(NoWarn、TreatWarningsAsErrors=false)以及 CPM 绕过(VersionOverride、内联 Version 属性)。规则编号为 SW001 至 SW006,可配置严重级别。
使用方式:需 .NET 8.0+ SDK 和 Slopwatch.Cmd NuGet 包(v0.3.3+)。推荐作为本地工具加入 .config/dotnet-tools.json 后执行 dotnet tool restore;也可全局安装:dotnet tool install --global Slopwatch.Cmd。基本分析命令为 slopwatch analyze,可加 -d 指定目录、--fail-on warning 严格模式、--output json 输出、--stats 显示性能统计。首次使用可执行 slopwatch init 建立基线,将 .slopwatch/baseline.json 提交到 git。配置写入 .slopwatch/slopwatch.json,可设置 minSeverity、各规则开关与严重级别、exclude 排除路径。
集成:可作为 Claude Code 的 PostToolUse 钩子,在 .claude/settings.json 中配置命令 slopwatch analyze -d . --hook,仅分析 git 脏文件并在警告或错误时阻止编辑(退出码 2)。也可用于 GitHub Actions 和 Azure Pipelines 的 CI/CD 流程。
限制与注意:不要抑制 Slopwatch 的发现,应修复代码而非更新基线或禁用规则;基线不是垃圾桶,更新需有文档化理由;每次代码更改后运行而非仅在最后运行;钩子模式应使用 --hook 而非裸 analyze;优先使用本地工具以固定版本。模式识别与人工代码审查不在本技能范围内。