eslint-fix · diff

git:20260416.7573efe to git:20260715.81812dc

63 added, 63 removed. Audit A to A.

---
name: eslint-fix
- description: ESLint 自动修复专家 — 识别 ESLint 报错,批量修复,支持常见规则和自定义配置
+ description: 安全诊断并修复 ESLint error、warning 和配置兼容问题。用于用户要求运行 lint、解释 ESLint 报错、限定范围自动修复或迁移 ESLint 配置时;优先使用项目锁定的包管理器与版本,先预检再修改,不自动下载最新版或批量改写无关源码。
---
- # ESLint 自动修复专家
-
- ## 触发条件
- 当用户遇到 ESLint 错误或需要批量修复代码规范问题时激活此技能。
+ # ESLint 修复助手
## 工作流程
- 1. **检测项目配置**
- - 查找 `.eslintrc.*` 或 `eslint.config.*` 文件
- - 识别使用的 ESLint 版本(v8/v9)和插件
- - 检查是否有 `prettier`、`@typescript-eslint` 等扩展
+ ### 1. 识别项目工具链
- 2. **运行 ESLint 检查**
- - 执行 `npx eslint . --format json` 获取所有错误
- - 按文件和规则分组统计
- - 区分 warning 和 error
+ 读取:
- 3. **分类处理**
- - **可自动修复**(fixable):直接运行 `eslint --fix`
- - **需手动修复**:逐条分析,提供修改建议
- - **需配置调整**:建议禁用或调整规则
+ - `package.json` 中的 scripts、`devDependencies` 和 `packageManager`。
+ - npm、pnpm、Yarn 或 Bun 的 lockfile。
+ - `eslint.config.*`、`.eslintrc.*`、`.eslintignore`、Prettier 和 TypeScript 配置。
+ - 适用的仓库规则、Git 状态和用户指定的文件范围。
- 4. **批量修复**
- - 对可自动修复的文件批量执行修复
- - 对需要手动修改的文件,逐一展示 diff
- - 修复后再次运行 ESLint 验证
+ 优先运行仓库已有的 lint script。只有确认 ESLint 已被当前项目锁定并安装时,才使用对应包管理器的本地执行方式。若缺失依赖,先报告;安装包、更新 lockfile 或迁移配置需要单独授权。
- ## 输出格式
+ ### 2. 建立只读基线
- ```markdown
- ## 📊 ESLint 检查报告
+ 先对用户指定或本轮相关范围运行不修改文件的检查,记录:
- **项目:** [项目名]
- **ESLint 版本:** v8/v9
- **总错误数:** X 个 error,Y 个 warning
+ - 实际命令、ESLint 版本和退出状态。
+ - error / warning 数量、涉及文件和规则。
+ - 基线中已有的问题与本轮引入的问题。
- ### 📁 按文件统计
- | 文件 | Error | Warning |
- |------|-------|---------|
- | src/index.ts | 3 | 1 |
- | src/utils.ts | 0 | 2 |
+ 不要默认扫描整个大型仓库,也不要用未锁定依赖、可能联网下载新版本的 `npx` 调用。
- ## 🔧 修复结果
+ ### 3. 预览可修复范围
- ### ✅ 自动修复(X 个)
- 已修复文件:
- - `src/index.ts` — 修复了 3 个问题
+ - 使用项目现有命令支持的 `--fix-dry-run`、JSON 输出或等价能力判断预计改动。
+ - 检查当前 Git diff,确认目标文件没有与用户修改重叠。
+ - 区分可自动修复、需要理解代码语义、需要配置决策三类问题。
+ - 展示预计修改范围;可能产生大面积格式 diff 或改变逻辑时先取得确认。
- ### ⚠️ 需手动修复(Y 个)
- #### `src/utils.ts:15`
- **规则:** `@typescript-eslint/no-explicit-any`
- **当前代码:**
- \`\`\`typescript
- function process(data: any) { ... }
- \`\`\`
- **建议修复:**
- \`\`\`typescript
- function process(data: unknown) { ... }
- \`\`\`
+ ### 4. 限定范围修复
- ## 💡 配置建议
- - 建议在 `.eslintrc.js` 中添加以下规则以避免类似问题
- ```
+ - 只对已确认的文件执行 `--fix`,不自动扩大到整个仓库。
+ - 对 `no-explicit-any`、未处理 Promise、React Hooks 依赖等语义规则,结合类型、调用方和运行路径修改,不能机械替换。
+ - 不为消除报错而默认禁用规则、加入全局 ignore、修改 formatter 顺序或降低严重级别。
+ - Prettier 与 ESLint 的执行顺序以项目现有 scripts 和集成配置为准。
- ## 常见可自动修复的规则
- - `semi` — 分号
- - `quotes` — 引号风格
- - `indent` — 缩进
- - `no-trailing-spaces` — 行尾空格
- - `comma-dangle` — 尾逗号
- - `arrow-parements` — 箭头函数括号
- - `prefer-const` — const vs let
+ 常见可自动修复规则包括 `semi`、`quotes`、`indent`、`no-trailing-spaces`、`comma-dangle`、`arrow-parens` 和 `prefer-const`;dry-run 和 diff 只能预览改动,最终仍需按风险运行类型检查、测试或构建。
- ## 注意事项
- - 修复前先确认用户的 ESLint 配置偏好
- - 对可能影响逻辑的修改要先询问用户
- - 修复后确保代码仍然可编译运行
- - 如果有 Prettier 配置,先运行 Prettier 再运行 ESLint
+ ### 5. 复验
+
+ 实际修改后:
+
+ 1. 重新运行目标范围 lint。
+ 2. 按改动风险运行类型检查、相关测试或构建。
+ 3. 查看 Git diff,确认没有 lockfile、生成物或无关格式变化。
+ 4. 记录未解决规则、原因和建议下一步。
+
+ ## 安全边界
+
+ - 未经明确授权,不安装或升级依赖,不修改 lockfile、ESLint 配置、Prettier 配置或项目脚本。
+ - 不覆盖工作树中已有修改;目标文件存在重叠时先报告。
+ - 不声称“已修复”或“可编译”,除非对应命令真实运行并成功。
+ - Windows 与 Linux 都优先使用项目已有 scripts 和路径,不硬编码 shell 专属命令。
+
+ ## 输出
+
+ ```markdown
+ ## ESLint 检查结果
+
+ - 范围:
+ - ESLint / 包管理器版本:
+ - 基线:X error,Y warning
+ - 实际命令与退出状态:
+
+ ## 修改
+
+ | 文件 | 规则 | 处理方式 |
+ |------|------|----------|
+
+ ## 复验
+
+ - lint:
+ - 类型检查 / 测试 / 构建:
+ - 未解决问题与原因:
+ ```