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 許可證,並歡迎社群貢獻。