SuperAPI AI 工具集

batch-lint-cleanup

编程与开发

查看项目

更新于 10-15 10:11

技能介绍

用途

batch-lint-cleanup 是一个 ESLint 自动修复工具,用于分析 ESLint 违规情况,或针对某一条特定规则进行隔离修复。它通过报告模式帮助定位违规最多的规则,通过修复模式逐条清理规则,强调每次只修复一条规则,以减少合并冲突并便于精确审查。

主要能力

报告模式(无参数)

运行 /lint-fix 时,工具会执行 ESLint 并分析违规:

nx run-many -t lint:eslint 2>&1 | tee /tmp/eslint-output.txt

按规则统计违规数量:

grep -oE 'unicorn/[a-z-]+|@typescript-eslint/[a-z-]+|no-[a-z-]+|sonarjs/[a-z-]+' /tmp/eslint-output.txt | sort | uniq -c | sort -rn | head -20

生成格式化报告,内容包括:

  • 按类型(error > warning)再按数量排序的前 10-15 条违规
  • 哪些规则可自动修复(✅)与需手动修复(❌)
  • 推荐下一条修复的规则(数量最多的可自动修复规则)
  • 每条规则修复内容的简要说明
  • 警告/错误总数

报告以表格形式输出,例如:

## ESLint Violations Report

| Rank | Rule                             | Count | Auto-Fix | Description                            |
| ---- | -------------------------------- | ----- | -------- | -------------------------------------- |
| 1    | unicorn/prefer-number-properties | 170   | ✅       | Use `Number.*` APIs instead of globals |
| 2    | unicorn/no-array-for-each        | 166   | ✅       | Prefer for...of over .forEach()        |
| 3    | no-negated-condition             | 37    | ❌       | Prefer positive conditions             |

并提供可操作建议,例如:

### 🎯 Recommended Next Fix

**`unicorn/prefer-number-properties`** - 170 violations

-   Auto-fixable: ✅ Yes
-   Changes: `isNaN()` → `Number.isNaN()`, `parseInt()` → `Number.parseInt()`
-   Impact: Better global scope hygiene
-   Risk: Low - semantically equivalent

**To fix:** `/lint-fix unicorn/prefer-number-properties`

修复模式(带参数)

输入规则名,例如 /lint-fix unicorn/no-zero-fractions。

关键策略:隔离修复。每条规则必须在完全隔离的情况下修复,以防止合并冲突并允许精确审查:

  • 从干净状态开始,确保工作目录干净
  • 只修复指定规则,不做顺手修复
  • 每条规则一个提交,绝不批量提交多条规则
  • 提交前验证,确保修复不会破坏任何内容

修复流程:

  1. 验证工作目录干净:运行 git status。若有未提交更改,停止并警告用户,建议先 stash 或提交,仅在用户明确确认后继续。

  2. 尝试自动修复:

nx run-many -t lint:eslint -- --rule "<rule-name>: error" --fix 2>&1 | tee /tmp/lint-fix.txt

检查剩余违规:

grep -c "<rule-name>" /tmp/lint-fix.txt || echo "0"
  1. 若自动修复成功:
yarn nx format --sort-root-tsconfig-paths=false
yarn nx lint <affected-packages>
yarn nx build:types <affected-packages>

全部通过后:

git add -A
git commit -m "fix(lint): auto-fix <rule-name> violations"
  1. 若需手动修复(规则不可自动修复,或自动修复后仍有剩余违规):

列出所有剩余违规:

nx run-many -t lint:eslint -- --rule "<rule-name>: error" 2>&1 | grep "<rule-name>"

按文件/模式分组,逐文件系统修复:打开文件、一致地应用修复模式、继续下一个文件。每批修复后验证:

nx run-many -t lint:eslint -- --rule "<rule-name>: error"

完成后:

yarn nx format --sort-root-tsconfig-paths=false
yarn nx lint <affected-packages>
yarn nx build:types <affected-packages>
git add -A
git commit -m "fix(lint): manually fix <rule-name> violations"

常见可自动修复规则参考

Rule Auto-Fix Typical Change
unicorn/prefer-number-properties ✅ isNaN() → Number.isNaN()
unicorn/no-array-for-each ✅ .forEach() → for...of
unicorn/no-zero-fractions ✅ 1.0 → 1
unicorn/prefer-string-slice ✅ .substr() → .slice()
@typescript-eslint/no-unused-vars ❌ Remove or use variable
no-negated-condition ❌ Invert condition logic
sonarjs/cognitive-complexity ❌ Refactor complex function

安全检查

任何提交前需满足:

  • ✅ yarn nx format --sort-root-tsconfig-paths=false 通过
  • ✅ yarn nx lint <affected-packages> 通过
  • ✅ yarn nx build:types <affected-packages> 通过
  • ✅ 只更改与规则相关的文件
  • ✅ 不包含无关的“顺手”修复

若任一检查失败:停止并向用户报告。

适用场景

适用于使用 ESLint 并希望系统化清理违规的 JavaScript/TypeScript 项目,尤其是需要逐条规则隔离修复、便于代码审查和避免合并冲突的团队工作流。

限制

该技能依赖 nx、yarn 等工具链,命令示例基于特定项目结构。其他环境下的具体命令、平台支持、收费与价格等信息暂未提供。