返回资讯中心
外部精选
软件工程
#社区热议

Show HN: Deslop – Oxlint rules for AI-generated TypeScript

Catches unsafe types, duplicate code, and low-value tests.

Hacker Newsmaharshi3652026/10/13 · 15 天前11 分钟阅读

以下正文同步自 Hacker News,版权归原站所有,已转换为易读排版。

Opinionated Oxlint rules that reject low-evidence, low-signal, AI-slop code patterns.

Rules are vendored from dmmulroy/anti-slop (generic rules) alongside additional deslop rules, all renamed under the deslop/* namespace. The vendored source is MIT licensed; see Credits below.

npm install --save-dev ai-deslop

@oxlint/plugins comes along as a runtime dependency — keep it in sync with your oxlint version

Ships compiled JavaScript — works with any oxlint JS-plugin runtime (Bun, Deno, or 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 });

Rules

Type safety and evidence

Rule Status Description

no-chained-type-assertions Recommended Rejects nested as / angle-bracket assertions that fabricate evidence.

no-conditional-empty-object-spread Recommended Reports object spreads using a conditional {} branch to omit fields.

no-known-value-widening Recommended Rejects known expressions flowing into explicit unknown, object, or open dictionaries.

no-object-parameters Recommended Rejects object on function inputs.

no-runtime-typeof Recommended Requires boundary parsing instead of ad hoc typeof narrowing.

no-unknown-parameters Recommended Rejects unknown on function inputs.

no-unknown-returns Recommended Rejects return contracts resolving to unknown.

no-unknown-type-aliases Recommended Rejects aliases whose resolved type is unknown.

no-unsafe-dictionary-type Recommended Rejects dictionary values based on unsafe escape hatches.

no-widen-then-assert Recommended Rejects widening known evidence before narrowing assertions.

require-safety-comment-for-type-assertion Recommended Requires an invariant justification for non-const assertions.

no-pass-through-type-alias Recommended Disallows aliases that only rename another type.

Code quality and APIs

Rule Status Description

no-array-filter-map Recommended Rejects adjacent eager array filter/map passes; allows lazy iterator pipelines.

no-reduce-accumulator-copy Recommended Rejects non-spread accumulator copies inside reducers. Enable native oxc/no-accumulating-spread alongside it.

no-reflect-apply Recommended Rejects global Reflect.apply.

no-reflect-get Recommended Rejects global Reflect.get.

no-shape-in-symbol-names Recommended Rejects shape in locally owned symbol names.

Tests

Rule Status Description

no-call-only-assertions Recommended Flags tests whose assertions only check mock calls.

no-module-mocking Recommended Rejects Vitest and Jest module mocks.

no-poor-substring-tests Recommended Rejects testing that a constant string contains substrings.

no-repeated-expect-call Recommended Flags adjacent assertions that repeat the same call in test files. Reuse the result instead. No fixer.

Opt-in rules

Rule Status Description

no-duplicate-consts Opt-in Reports all-caps constants with the same static value in different files.

no-duplicate-types Opt-in Reports exact duplicate object contracts. No fixer.

no-renamed-imports Opt-in Fixes unnecessary named-import aliases when the original name has no module-level conflict.

canonical-class-names Opt-in Fixes non-canonical Tailwind CSS v4 class spellings.

Standard rules enabled by the recommended config

Standard rule Status Description

typescript/no-deprecated Recommended Disallows using code marked @deprecated. Requires type-aware linting.

typescript/no-require-imports Recommended Disallows CommonJS require() imports.

typescript/no-floating-promises Recommended Disallows floating promises. Requires type-aware linting.

typescript/no-unnecessary-condition Recommended Disallows always truthy/falsy/nullish conditions. Requires type-aware linting.

no-unreachable Recommended Disallows unreachable code.

Guides

Guide Contents

No duplicate consts Configuration and exact static-value comparison behavior.

No duplicate types Exact comparison behavior, worker scope, complete TypeScript/JSON examples, and every supported option.

No renamed imports When named-import aliases are fixed and how conflicts are handled.

Tailwind canonical class names Tailwind v4 setup, complete TypeScript/JSON examples, and every supported option.

Credits

Generic rules vendored verbatim from dmmulroy/anti-slop (MIT, © Dillon Mulroy), including src/shared/*.

License

MIT

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →