- 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 间接执行)
119 lines
6.6 KiB
Markdown
119 lines
6.6 KiB
Markdown
# 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 工程的插件实测验证完成**:
|
||
|
||
1. ✅ 内置规则全覆盖达成(68/68 种 · 145 处)
|
||
2. ✅ 插件行为零偏差(145/145 条逐条一致)
|
||
3. ✅ 「内置配置回退」路径完整验证(工程无 `.stylelintrc` 场景)
|
||
4. ✅ 零缺陷(对照 SQLFlutt 发现的 JJ01 NaN 问题,Stylelint 适配器的 endLine 回退写法正确)
|
||
|
||
---
|
||
|
||
*报告生成于 2026-08-25 · demo-stylelint 插件实测 · 比对脚本:`stylelint-compare.mjs` · 数据:`stylelint-final-compare.json`*
|