- src/test 迁移至根目录 tests/(16 测试 + fixtures/manual),导入改为 ../src/ - 新增 tsconfig.test.json 独立编译测试;.vscode-test.mjs / package.json / .gitignore 同步 - 新增 tests/test-execution-log.md、tests/test-cases.md(116 用例清单) - 新增 tests/measure/measure-review-time.mjs + performance-comparison.md(提效测量) - 重命名 3 个中文报告文件为 demo-*-coverage-report.md - git rm --cached 解除 vsix 跟踪;README 标注演示视频进行中
7.3 KiB
demo-stylelint 插件实测覆盖率报告
工程:
demo-stylelint(common.css/empty-source.css两个样例文件,无.stylelintrc工程配置 → 插件回退内置配置) 测试对象:插件 Stylelint 适配器(引擎 stylelint 17.14.0 + stylelint-config-recommended 18.0.0) 实测日期:2026-08-25 比对基线:与插件依赖版本逐字一致的本地复现(比对键 = 规则 + 行号 + 严重级别)
一、核心结论
| 指标 | 结果 | 状态 |
|---|---|---|
| 规则覆盖率(内置启用 68 条) | 68/68 种全部触发(100%) | ✅ 全覆盖 |
| 插件行为一致性(vs 基线) | 145/145 条逐条一致,零偏差 | ✅ 100% |
| 诊断总数 | 145 处(common.css 144 + empty-source.css 1) | ✅ 与基线完全一致 |
| 缺陷发现 | 无(无 NaN 行号、无解析错误、无规则丢失) | ✅ |
实测完全达成全覆盖基准:插件在「工程无配置文件 → 回退内置配置」路径下,内置启用的 68 条规则全部触发,145 处诊断与模拟基线逐条零偏差。Stylelint 适配器静态分析链路一次通过完整验证,未发现任何缺陷。
二、逐文件比对(实测 vs 基线)
| 文件 | 实测 | 基线 | 一致性 | 触发规则数 |
|---|---|---|---|---|
common.css |
144 | 144 | ✅ 逐条一致 | 67 种 |
empty-source.css |
1 | 1 | ✅ 逐条一致 | 1 种(no-empty-source,仅此文件触发) |
| 合计 | 145 | 145 | ✅ 零偏差 | 68 种(67 + 1 独有) |
比对方法:将插件报告中每条静态诊断(规则名 + 行号 + 严重级别)与基线做多重集合比对;两个文件均
missing = 0、extra = 0。
三、规则覆盖拆解(68/68 = 100%)
内置配置 = stylelint-config-recommended 18.0.0 原生规则 41 条 + 插件追加 stylelintExtraRules 27 条(无重叠,合并 68 条),两部分实测全部触发:
| 来源 | 启用 | 触发 | 说明 |
|---|---|---|---|
| recommended 18.0.0 原生 | 41 | 41/41 | 含 at-rule-descriptor-no-unknown、declaration-property-value-no-unknown、no-duplicate-selectors、selector-pseudo-class-no-unknown 等核心规则 |
| 插件 extra 追加 | 27 | 27/27 | 校验类 7 条(color-no-invalid-hex、function-no-unknown、unit-no-unknown 等)+ 厂商前缀类 5 条 + 记号规范类 8 条 + 其他 7 条 |
| 合计 | 68 | 68(100%) | — |
extra 追加 27 条明细(全部触发):
- 校验类(7):
color-no-invalid-hex、function-linear-gradient-no-nonstandard-direction、function-no-unknown、unit-no-unknown、no-unknown-animations、no-unknown-custom-media、no-unknown-custom-properties - 厂商前缀类(5):
at-rule-no-vendor-prefix、media-feature-name-no-vendor-prefix、property-no-vendor-prefix、selector-no-vendor-prefix、value-no-vendor-prefix - 记号规范类(8):
color-hex-length、color-function-notation、length-zero-no-unit、selector-pseudo-element-colon-notation、import-notation、alpha-value-notation、hue-degree-notation、keyframe-selector-notation - 其他(7):
declaration-block-no-redundant-longhand-properties、shorthand-property-no-redundant-values、block-no-redundant-nested-style-rules、color-named、font-family-name-quotes、number-max-precision、comment-whitespace-inside
四、诊断分布统计
按严重级别(静态 145 条):
| 级别 | 数量 | 占比 |
|---|---|---|
| error(🔴) | 145 | 100% |
| warning(🟡) | 0 | 0% |
按文件:common.css 144 · empty-source.css 1。
高频规则 Top 8(common.css):
| 规则 | 出现次数 |
|---|---|
color-named(不允许命名颜色) |
21 |
no-duplicate-selectors(重复选择器) |
18 |
block-no-empty(空规则块) |
16 |
declaration-property-value-no-unknown(未知属性值) |
9 |
comment-whitespace-inside(注释内空格) |
4 |
keyframe-selector-notation(关键帧选择器记号) |
4 |
import-notation(导入记号) |
3 |
no-invalid-position-at-import-rule(@import 位置非法) |
3 |
注:插件报告中另有 AI 审查建议 6 条(common.css:bug 2 / performance 2 / design 2),属 AI 增强能力,不计入静态规则覆盖口径。
五、实测环境判定
实测报告的文件路径与预期部署一致:
data\demo-stylelint\src\common.css(144 条诊断,行号与基线逐条吻合 → 文件与当前工作区版本一致)data\demo-stylelint\src\empty-source.css(1 条no-empty-source,覆盖该规则在 recommended 中的唯一触发途径——空源文件)
配置路径验证:工程不含任何 .stylelintrc / stylelint.config.*,插件按设计走「内置默认配置回退」路径(recommended.rules + stylelintExtraRules 直接作为 config 对象传入 stylelint.lint())。实测 145/145 逐条一致即为该路径的最终确认。
与 SQLFluff JJ01 缺陷的对照:Stylelint 适配器对 warnings 的 endLine/endColumn 做了缺失回退(w.endLine ?? w.line),因此即使个别警告缺失结束坐标也不会出现 NaN 行号——实测无任何行号异常,该防御性写法经受住了 145 条诊断的验证。
六、数据口径说明
| 项 | 说明 |
|---|---|
| 覆盖率口径 | 68 条 = 内置配置实际启用规则数(recommended 41 + extra 27,无重叠);规则触发即计入 |
| 比对引擎 | stylelint 17.14.0 + stylelint-config-recommended 18.0.0(与插件 package-lock.json 锁定版本逐字一致) |
| 基线复现方式 | 与适配器 getDefaultConfig() 逻辑逐字一致:import('stylelint-config-recommended') 取 rules 后合并 stylelintExtraRules,作为 config 传入 stylelint.lint({ code, codeFilename, cwd }) |
| 基线数据 | /data/user/work/results/stylelint-final-compare.json(逐文件比对明细) |
| 严重级别口径 | 145 条全部 error:recommended 与 extra 均未配置 severity: warning 覆盖,stylelint 默认全部 error |
七、结论与后续
demo-stylelint 工程的插件实测验证完成:
- ✅ 内置规则全覆盖达成(68/68 种 · 145 处)
- ✅ 插件行为零偏差(145/145 条逐条一致)
- ✅ 「内置配置回退」路径完整验证(工程无
.stylelintrc场景) - ✅ 零缺陷(对照 SQLFlutt 发现的 JJ01 NaN 问题,Stylelint 适配器的 endLine 回退写法正确)
实测进度总览(四个 demo 工程):
| 工程 | 实测状态 | 结果 |
|---|---|---|
| demo-eslint | ✅ 完成 | 126/126 种 · 292/292 条逐条一致 |
| demo-sqlfluff | ✅ 完成 | 57/57 种 · 113 处(112 条零偏差 + JJ01 行号显示缺陷) |
| demo-stylelint | ✅ 完成 | 68/68 种 · 145/145 条逐条零偏差 |
| demo-pmd | ⏳ 待实测 | 预期 281 条规则(Java 269 + JSP 12),注意 Java 版本与 ruleset |
后续建议:仅剩 demo-pmd 待实测——测试机需 JDK 8+(插件用 PmdRunner.class 直跑,无沙箱 JDK 11 限制),打开 Java/JSP 样例文件后与预期基线比对即可,全套四工程验证收官。
报告生成于 2026-08-25 · demo-stylelint 插件实测 · 比对脚本:stylelint-compare.mjs · 数据:stylelint-final-compare.json