Files
2026Technology-Competition/data/demo-eslint/reports/demo-eslint-coverage-report.md
T
范智鹏 3c390cfa90 feat: demo-pmd 样本工程入库 + Windows spawn cmd EINVAL 修复 + 实测报告清理
- 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 间接执行)
2026-08-26 22:04:47 +08:00

115 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`*