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 專案中強制執行嚴格型別安全標準,並避免程式碼庫中常見低訊號模式的開發者與團隊。

主要亮點

  • 嚴格的型別證據:拒絕鏈式型別斷言,以及將已知值擴展為 unknownobject 的行為。
  • 邊界強制:要求使用邊界解析而非隨意的 typeof 窄化,並拒絕在函式參數與回傳值中使用 unknown
  • 安全理由強制:強制開發者為非常數型別斷言提供 SAFETY 註解(或自訂標記)以說明合理性。
  • Effect 框架整合:為使用 Effect 框架的專案提供專用規則群組,防止不正確的服務建構子匯入。
  • 支援代理安裝:提供打包好的代理技能,可自動完成規則的初始複製與專案設定。

相關

  • 專案