dmmulroy/anti-slop
Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns
解決的問題
Anti-slop 提供一組針對 TypeScript 與 JavaScript 的有立場 lint 規則,用以消除『低證據』或『低訊號』的程式碼模式(即『slop』)。其目標是透過拒絕偽造證據(例如鏈式型別斷言)或丟棄型別資訊(例如將已知值擴展為 unknown)的模式,強制提升型別安全性與更嚴格的架構邊界。
工作原理
以 Oxlint 的插件形式實作,使用 Oxlint 的 ESTree 與 lexical-scope API 來分析程式碼。不依賴 TypeScript 型別檢查器,而是透過解析同檔案內的別名與透明泛型別名來識別違規。此專案設計為可直接複製至程式碼庫中(即 vendored),而非作為固定相依安裝,讓團隊能依自身標準自訂規則。
適用對象
希望在 TypeScript 與 JavaScript 專案中強制執行嚴格型別安全標準,並避免程式碼庫中常見低訊號模式的開發者與團隊。
主要亮點
- 嚴格的型別證據:拒絕鏈式型別斷言,以及將已知值擴展為
unknown或object的行為。 - 邊界強制:要求使用邊界解析而非隨意的
typeof窄化,並拒絕在函式參數與回傳值中使用unknown。 - 安全理由強制:強制開發者為非常數型別斷言提供
SAFETY註解(或自訂標記)以說明合理性。 - Effect 框架整合:為使用 Effect 框架的專案提供專用規則群組,防止不正確的服務建構子匯入。
- 支援代理安裝:提供打包好的代理技能,可自動完成規則的初始複製與專案設定。
相關
- 專案