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 框架的项目提供专用规则组,防止不正确的服务构造函数导入。
  • 支持代理安装:提供打包好的代理技能,可自动完成规则的初始复制和项目配置。

相关

  • 项目