用途
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。
关键策略:隔离修复。每条规则必须在完全隔离的情况下修复,以防止合并冲突并允许精确审查:
- 从干净状态开始,确保工作目录干净
- 只修复指定规则,不做顺手修复
- 每条规则一个提交,绝不批量提交多条规则
- 提交前验证,确保修复不会破坏任何内容
修复流程:
-
验证工作目录干净:运行
git status。若有未提交更改,停止并警告用户,建议先 stash 或提交,仅在用户明确确认后继续。 -
尝试自动修复:
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"
- 若自动修复成功:
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"
- 若需手动修复(规则不可自动修复,或自动修复后仍有剩余违规):
列出所有剩余违规:
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 等工具链,命令示例基于特定项目结构。其他环境下的具体命令、平台支持、收费与价格等信息暂未提供。