返回

文章详情

展示 HN:Deslop - AI 生成的 TypeScript 的 Oxlint 规则

Hacker News2026年10月13日 17:52

有观点的 Oxlint 规则拒绝低证据、低信号的 AI 垃圾代码模式。规则来源于 dmmulroy/anti-slop(通用规则),以及额外的 deslop 规则,均重命名为 deslop/* 命名空间。来源的许可为 MIT;具体见下方的致谢。\n安装 npm install --save-dev ai-deslop # @oxlint/plugins 作为运行时依赖项一同提供 - 确保与您的 oxlint 版本保持同步。提供编译后的 JavaScript - 可与任何 oxlint JS 插件运行时(Bun、Deno 或 Node.js)一起使用。使用方法 import { defineConfig } from "oxlint"; import { configs as deslopConfigs } from "ai-deslop"; export default defineConfig({ jsPlugins: ["ai-deslop"], options: deslopConfigs.recommended.options, rules: deslopConfigs.recommended.rules });\n规则\n类型安全和证据规则状态描述\nno-chained-type-assertions 推荐 拒绝嵌套的 as / angle-bracket 断言,以伪造证据。\nno-conditional-empty-object-spread 推荐 报告使用条件 {} 分支省略字段的对象扩展。\nno-known-value-widening 推荐 拒绝流入显式 unknown、object 或开放字典的已知表达式。\nno-object-parameters 推荐 拒绝函数输入中的对象。\nno-runtime-typeof 推荐 需要边界解析,而不是随意的 typeof 缩小。\nno-unknown-parameters 推荐 拒绝函数输入中的 unknown。\nno-unknown-returns 推荐 拒绝解析为 unknown 的返回合同。\nno-unknown-type-aliases 推荐 拒绝解析类型为 unknown 的别名。\nno-unsafe-dictionary-type 推荐 拒绝基于不安全逃生通道的字典值。\nno-widen-then-assert 推荐 拒绝在缩小断言之前扩大已知证据。\nrequire-safety-comment-for-type-assertion 推荐 需要对非 const 断言的必要性进行说明。\nno-pass-through-type-alias 推荐 不允许仅重命名另一个类型的别名。\n代码质量和 API\n规则状态描述\nno-array-filter-map 推荐 拒绝相邻的急切数组过滤器/映射传递;允许惰性迭代器管道。\nno-reduce-accumulator-copy 推荐 拒绝减少器内部的非扩展累加器复制。启用原生 oxc/no-accumulating-spread。\nno-reflect-apply 推荐 拒绝全局 Reflect.apply。\nno-reflect-get 推荐 拒绝全局 Reflect.get。\nno-shape-in-symbol-names 推荐 拒绝本地拥有符号名称中的形状。\n测试\n规则状态描述\nno-call-only-assertions 推荐 标记仅检查模拟调用的测试中的断言。\nno-module-mocking 推荐 拒绝 Vitest 和 Jest 模块模拟。\nno-poor-substring-tests 推荐 拒绝测试常量字符串是否包含子字符串。\nno-repeated-expect-call 推荐 标记在测试文件中重复相同调用的相邻断言。重复使用结果,无修复。\n可选择规则\n规则状态描述\nno-duplicate-consts 可选择 报告不同文件中相同静态值的全大写常量。\nno-duplicate-types 可选择 报告完全重复的对象合同。无修复。\nno-renamed-imports 可选择 修复不必要的命名导入别名,当原始名称没有模块级别冲突时。\ncanonical-class-names 可选择 修复非规范的 Tailwind CSS v4 类名拼写。\n推荐配置启用的标准规则\n标准规则状态描述\ntypescript/no-deprecated 推荐 不允许使用标记为 @deprecated 的代码。需要类型感知的 linting。\ntypescript/no-require-imports 推荐 不允许 CommonJS require() 导入。\ntypescript/no-floating-promises 推荐 不允许悬挂的 Promise。需要类型感知的 linting。\ntypescript/no-unnecessary-condition 推荐 不允许始终为真/假/空值的条件。需要类型感知的 linting。\nno-unreachable 推荐 不允许不可到达的代码。\n指南\n指南内容\n无重复常量\n配置和精确静态值比较行为。\n无重复类型\n精确比较行为、工作者范围、完整的 TypeScript/JSON 示例以及支持的所有选项。\n无重命名导入\n何时修复命名导入别名以及如何处理冲突。\nTailwind 规范类名\nTailwind v4 设置、完整的 TypeScript/JSON 示例,以及支持的所有选项。\n致谢\n通用规则原文来自 dmmulroy/anti-slop(MIT,© Dillon Mulroy),包括 src/shared/*。许可 MIT

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡