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

5.9 KiB
Raw Blame History

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 = 0extra = 0


三、全覆盖的达成机制

126 种内置规则中,有 6 条规则无法在常规 .js(module 模式)样例中触发,通过 legacysyntax.cjs 单文件解决,机制如下:

  1. 5 条宽松模式规则no-nonoctal-decimal-escapeno-octalno-withno-delete-varno-dupe-args):触发代码('\8' 转义、八进制 010withdelete 变量、重复参数)在严格模式下本身是 SyntaxError,结构上只可能在宽松(sloppy)模式触发。.cjs 文件被 flat config 默认按 sourceType: "commonjs"(宽松模式)解析,无需任何配置文件。
  2. preserve-caught-erroreslint 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.cjs14 条诊断、无 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-error10.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