- data/demo-pmd 全量入库(26 源文件 + pom/mvnw/lib/reports),.gitignore 排除 target/ - 归档 demo-pmd 实测覆盖率报告(279/279 全覆盖)至 reports/ - 删除 4 份覆盖率报告中的后续建议/实测进度总览(全部实测已收官) - 修复 Windows spawn .cmd/.bat EINVAL(auxClasspath.ts 经 cmd.exe /d /s /c 间接执行)
115 lines
5.9 KiB
Markdown
115 lines
5.9 KiB
Markdown
# demo-eslint 插件实测覆盖率报告
|
||
|
||
> **工程**:`demo-eslint`(纯内置配置形态:无 `eslint.config.*`)
|
||
> **测试对象**:插件 ESLint 适配器(引擎 eslint 9.39.4 + @eslint/js 9.39.4 + typescript-eslint 8.60.1)
|
||
> **实测日期**:2026-08-25
|
||
> **比对基线**:插件同版本依赖复现的模拟基线(比对键 = 规则 + 行号 + 严重级别)
|
||
|
||
---
|
||
|
||
## 一、核心结论
|
||
|
||
| 指标 | 结果 | 状态 |
|
||
|---|---|---|
|
||
| 插件行为一致性(vs 模拟基线) | **292/292 条逐条一致,零偏差** | ✅ 100% |
|
||
| 规则覆盖率(真实规则口径) | **126/126 种(100%)** | ✅ 全覆盖 |
|
||
| 解析错误 | **0 处** | ✅ |
|
||
| 诊断总数 | 292 条静态(error 268 / warning 24) | — |
|
||
|
||
**实测完全达成全覆盖基准**:插件在「工程无配置文件 → 回退内置默认配置」路径下,输出的 292 条静态诊断与模拟基线逐条一致,126 种内置规则全部触发、零解析错误。**ESLint 适配器静态分析链路(规则加载、解析、诊断映射)验证通过。**
|
||
|
||
---
|
||
|
||
## 二、逐文件比对(实测 vs 基线)
|
||
|
||
| 文件 | 实测 | 基线 | 一致性 | 说明 |
|
||
|---|---:|---:|---|---|
|
||
| `common.js` | 210 | 210 | ✅ 逐条一致 | core ESLint 规则主样例文件 |
|
||
| `typescript.ts` | 65 | 65 | ✅ 逐条一致 | `@typescript-eslint/` 规则主样例文件 |
|
||
| `legacysyntax.cjs` | 14 | 14 | ✅ 逐条一致 | 旧式(宽松模式)语法规则样例文件 |
|
||
| `esm-demo.js` | 3 | 3 | ✅ 逐条一致 | ESM 相关规则样例文件 |
|
||
| **合计** | **292** | **292** | **✅ 零偏差** | — |
|
||
|
||
> 比对方法:将插件报告中的每条静态诊断(规则名 + 行号 + 严重级别)与模拟基线做多重集合比对;四文件全部 `missing = 0`、`extra = 0`。
|
||
|
||
---
|
||
|
||
## 三、全覆盖的达成机制
|
||
|
||
126 种内置规则中,有 6 条规则无法在常规 `.js`(module 模式)样例中触发,通过 `legacysyntax.cjs` 单文件解决,机制如下:
|
||
|
||
1. **5 条宽松模式规则**(`no-nonoctal-decimal-escape`、`no-octal`、`no-with`、`no-delete-var`、`no-dupe-args`):触发代码(`'\8'` 转义、八进制 `010`、`with`、`delete` 变量、重复参数)在严格模式下本身是 SyntaxError,结构上只可能在宽松(sloppy)模式触发。`.cjs` 文件被 flat config 默认按 `sourceType: "commonjs"`(宽松模式)解析,无需任何配置文件。
|
||
2. **`preserve-caught-error`**:eslint 9.39.4 引擎已实现该规则,但 @eslint/js 9.39.4 的 recommended 未启用(10.0.1 才收录)。通过文件首行 `/* eslint preserve-caught-error: "error" */` 行内注释启用。
|
||
|
||
### 6 条规则验证明细(`legacysyntax.cjs`)
|
||
|
||
| 规则 | 实测行号 | 严重级别 | 状态 |
|
||
|---|---|---|---|
|
||
| `no-nonoctal-decimal-escape` | L8(×2) | error | ✅ 触发 |
|
||
| `no-octal` | L11 | error | ✅ 触发 |
|
||
| `no-with` | L16 | error | ✅ 触发 |
|
||
| `no-delete-var` | L22 | error | ✅ 触发 |
|
||
| `no-dupe-args` | L25 | error | ✅ 触发 |
|
||
| `preserve-caught-error` | L33 | error | ✅ 触发(行内注释) |
|
||
|
||
同文件连带触发的其他规则(与基线一致):`no-undef` L17(×3)/ L36、`no-var` L21、`no-redeclare` L25、`no-unused-vars` L32。
|
||
|
||
---
|
||
|
||
## 四、诊断分布统计
|
||
|
||
**按严重级别**(静态 292 条):
|
||
|
||
| 级别 | 数量 | 占比 |
|
||
|---|---:|---:|
|
||
| error(🔴) | 268 | 91.8% |
|
||
| warning(🟡) | 24 | 8.2% |
|
||
|
||
**按规则类别**(126 种):
|
||
|
||
| 类别 | 种数 | 说明 |
|
||
|---|---:|---|
|
||
| core ESLint 规则 | 94 | @eslint/js 9.39.4 recommended + 插件精选规则 |
|
||
| `@typescript-eslint/` 规则 | 32 | ts.configs.recommended + 插件精选规则 |
|
||
|
||
**按文件**:`common.js` 210 · `typescript.ts` 65 · `legacysyntax.cjs` 14 · `esm-demo.js` 3。
|
||
|
||
> 注:插件报告中另有 AI 审查建议 12 条(common.js 4 / legacysyntax.cjs 4 / esm-demo.js 2 / typescript.ts 2),属 AI 增强能力,不计入静态规则覆盖口径。
|
||
|
||
---
|
||
|
||
## 五、实测环境判定
|
||
|
||
实测报告的文件路径与预期部署一致:
|
||
|
||
- `data\demo-eslint\src\legacysyntax.cjs`(14 条诊断、无 parse-error → **`.cjs` 宽松模式解析生效,确认插件未发现任何工程配置、正确回退内置配置**)
|
||
- `data\demo-eslint\src\`(common.js / esm-demo.js / typescript.ts,诊断数与基线完全相同)
|
||
|
||
**配置路径验证**:工程不含任何 `eslint.config.*` 与 `.eslintrc*`,插件按设计走「内置默认配置回退」路径。该路径与工作区打开方式无关(打开工程根或外层目录结果一致),292/292 逐条一致即为最终确认。
|
||
|
||
---
|
||
|
||
## 六、数据口径说明
|
||
|
||
| 项 | 说明 |
|
||
|---|---|
|
||
| 覆盖率口径 | 126 种 = 插件内置配置实际生效 125 种(@eslint/js 9.39.4 recommended + 精选规则)+ `preserve-caught-error`(由 `.cjs` 首行行内注释启用);纯规则口径,不含 parse-error |
|
||
| 比对引擎 | eslint 9.39.4 + @eslint/js 9.39.4 + typescript-eslint 8.60.1(与插件 `package-lock.json` 逐字一致) |
|
||
| 基线数据 | `/data/user/work/results/round2-verify.json`(本轮比对明细) |
|
||
| 已知口径差异 | 工程自检脚本 `run-coverage.mjs`(用工程自带 @eslint/js 10.0.1)计 294 条:多出的 1 条为 `typescript.ts` L189 `preserve-caught-error`(10.0.1 的 recommended 启用该规则、插件 9.39.4 内置配置未启用),属引擎版本口径差异,非插件缺陷 |
|
||
| 版本备注 | 测试机 `typescript.ts` 为 202 行版本(65 条);当前版(212 行)多 1 条 `@typescript-eslint/no-unused-vars` L188,同步与否均不影响 126 种全覆盖结论 |
|
||
|
||
---
|
||
|
||
## 七、结论与后续
|
||
|
||
**demo-eslint 工程的插件实测验证完成**:
|
||
|
||
1. ✅ 插件行为零偏差(292/292 逐条一致)
|
||
2. ✅ 内置配置全覆盖达成(126/126 种规则,零解析错误)
|
||
3. ✅ 「内置配置回退」路径完整验证(工程无配置文件的场景)
|
||
|
||
---
|
||
|
||
*报告生成于 2026-08-25 · demo-eslint 插件实测 · 比对脚本:`round2-compare.mjs` · 数据:`round2-verify.json`*
|