docs: 归档 demo 工程样例与插件实测报告
- 新增三个 demo 工程(demo-eslint / demo-sqlfluff / demo-stylelint):各含 src/ 样例代码与覆盖率映射(run-coverage.mjs、coverage_map.json、stylelint_line_map.json) - 归档各 demo 的插件实测导出报告(reports/): - demo-eslint:common.js / esm-demo.js / legacysyntax.cjs / typescript.ts 审查报告 + 覆盖率报告(292/292 条零偏差,126 种规则全覆盖) - demo-sqlfluff:11 个 SQL 样例审查报告 + 覆盖率报告(113/113 条零偏差,57 种规则全覆盖,含 JJ01 行号缺陷修复后的复测验证) - demo-stylelint:common.css / empty-source.css 审查报告 + 覆盖率报告(145/145 条零偏差,68 种规则全覆盖)
This commit is contained in:
@@ -0,0 +1,472 @@
|
||||
# 代码审查报告
|
||||
|
||||
**文件:** `data\demo-stylelint\src\common.css`
|
||||
**语言:** css
|
||||
**耗时:** 218.1s
|
||||
**分析工具:** stylelint
|
||||
|
||||
---
|
||||
|
||||
总计: 150 | 错误: 145 | 警告: 4 | 建议: 1
|
||||
|
||||
静态分析 · 144 个问题
|
||||
|
||||
- 🔴 `stylelint:import-notation` L6
|
||||
应使用字符串形式导入,而不是 url()。
|
||||
建议: 将 @import url("/x.css") 改为 @import "/x.css";。
|
||||
- 🔴 `stylelint:color-named` L9
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:no-invalid-position-at-import-rule` L13
|
||||
@import 规则位置非法(位于其他规则之后)。
|
||||
建议: 将所有 @import 规则移到其他样式规则之前。如果使用构建工具,应改用 link 标签或合并导入文件。
|
||||
- 🔴 `stylelint:at-rule-descriptor-no-unknown` L18
|
||||
@font-face 中使用了未知描述符“unknown-descriptor”。
|
||||
建议: 删除 unknown-descriptor,或将其替换为合法的 @font-face 描述符,例如 font-family、src、font-weight。
|
||||
- 🔴 `stylelint:at-rule-descriptor-value-no-unknown` L23
|
||||
字体描述符 font-display 的取值“invalid-display-value”非法。
|
||||
建议: 使用合法的 font-display 值,如 auto、block、swap、fallback、optional。建议改为 font-display: swap;。
|
||||
- 🔴 `stylelint:at-rule-no-deprecated` L27
|
||||
已废弃的 @ 规则“@viewport”。
|
||||
建议: 不要再使用 @viewport,改用 viewport meta 标签或现代 CSS 视口单位方案;直接删除该规则。
|
||||
- 🔴 `stylelint:at-rule-no-unknown` L32
|
||||
未知的 @ 规则“@unknown-rule”。
|
||||
建议: 删除该未知规则,或改为有意义的规则,例如 @media 或 @supports。
|
||||
- 🔴 `stylelint:block-no-empty` L32
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:at-rule-prelude-no-invalid` L36
|
||||
@layer 规则的 prelude“foo.bar.”无效。
|
||||
建议: 层名称不能以点结尾,应改为合法的层名称,如 foo.bar。
|
||||
- 🔴 `stylelint:block-no-empty` L36
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:at-rule-no-vendor-prefix` L40
|
||||
使用了带厂商前缀的 @ 规则“@-webkit-keyframes”。
|
||||
建议: 去掉厂商前缀,并使用标准 @keyframes;若需兼容旧浏览器,可在标准规则旁保留前缀版本。
|
||||
- 🔴 `stylelint:block-no-empty` L40
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:block-no-empty` L45
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:media-feature-name-no-unknown` L45
|
||||
未知媒体特性“unknown-feature”。
|
||||
建议: 使用有效的媒体特性,如 min-width、max-width、orientation。
|
||||
- 🔴 `stylelint:block-no-empty` L49
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:media-feature-name-value-no-unknown` L49
|
||||
媒体特性 width 的值“10”未知。
|
||||
建议: 媒体查询中的长度值需要单位,改为 10px。
|
||||
- 🔴 `stylelint:block-no-empty` L53
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:media-query-no-invalid` L53
|
||||
无效的媒体查询“(min-width: )”。
|
||||
建议: 补全媒体特性的值,如 min-width: 100px。
|
||||
- 🔴 `stylelint:block-no-empty` L57
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:media-type-no-deprecated` L57
|
||||
已废弃的媒体类型“tv”。
|
||||
建议: 改为 screen 或移除该媒体查询。
|
||||
- 🔴 `stylelint:block-no-empty` L61
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:media-feature-name-no-vendor-prefix` L61
|
||||
带厂商前缀的媒体特性名。
|
||||
建议: 使用标准 min-resolution 替代 -webkit-min-device-pixel-ratio。
|
||||
- 🔴 `stylelint:block-no-empty` L65
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:no-unknown-custom-media` L65
|
||||
使用了未定义的自定义媒体查询“--my-custom-media”。
|
||||
建议: 先用 @custom-media 定义,或改用标准媒体查询替代。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L70
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:annotation-no-unknown` L71
|
||||
未知注解“!foo”。
|
||||
建议: 删除 !foo,只保留 color: red。
|
||||
- 🔴 `stylelint:color-named` L71
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L71
|
||||
无法解析属性 color 的值“red !foo”。
|
||||
建议: 删除 !foo,color 的值应为合法颜色。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L75
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:color-no-invalid-hex` L77
|
||||
非法十六进制颜色“#12345”。
|
||||
建议: 十六进制颜色必须是 3、4、6 或 8 位,改为 #123456 或 #123。
|
||||
- 🔴 `stylelint:declaration-block-no-duplicate-properties` L77
|
||||
重复的属性“color”。
|
||||
建议: 同一规则块中只能有一个 color 声明,删除多余声明。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L77
|
||||
属性 color 的值“#12345”未知。
|
||||
建议: 使用合法的十六进制颜色,如 #123456。
|
||||
- 🔴 `stylelint:color-hex-length` L80
|
||||
十六进制颜色过长,应缩短。
|
||||
建议: 将 #ffffff 缩写为 #fff。
|
||||
- 🔴 `stylelint:color-function-notation` L83
|
||||
应使用现代颜色函数记号。
|
||||
建议: 使用空格分隔的现代语法,例如 rgb(255 0 0)。
|
||||
- 🔴 `stylelint:alpha-value-notation` L86
|
||||
预计将“50%”改为“0.5”。
|
||||
建议: alpha 通道值应使用 0~1 的数字,将 rgba(0, 0, 0, 50%) 改为 rgba(0, 0, 0, 0.5)。
|
||||
- 🔴 `stylelint:color-function-notation` L86
|
||||
应使用现代颜色函数记号。
|
||||
建议: 使用空格分隔的现代语法,例如 rgba(0 0 0 / 0.5)。
|
||||
- 🔴 `stylelint:color-function-notation` L89
|
||||
应使用现代颜色函数记号。
|
||||
建议: 使用空格分隔的现代语法,例如 hsl(120deg 50% 50%)。
|
||||
- 🔴 `stylelint:hue-degree-notation` L89
|
||||
色相值“120”应使用角度表示“120deg”。
|
||||
建议: 在 hsl/hwb 等颜色函数的色相值后添加 deg。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L93
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:color-named` L95
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:comment-no-empty` L100
|
||||
空注释。
|
||||
建议: 删除空注释,或在注释内添加说明文字。
|
||||
- 🔴 `stylelint:comment-whitespace-inside` L100
|
||||
注释内“/*”后应有空格。
|
||||
建议: 在注释内部加上空格,例如 /* comment */。
|
||||
- 🔴 `stylelint:comment-whitespace-inside` L100
|
||||
注释内“*/”前应有空格。
|
||||
建议: 在注释内部加上空格,例如 /* comment */。
|
||||
- 🔴 `stylelint:comment-whitespace-inside` L103
|
||||
注释内“/*”后应有空格。
|
||||
建议: 在注释内容两侧加空格,例如 /* comment */。
|
||||
- 🔴 `stylelint:comment-whitespace-inside` L103
|
||||
注释内“*/”前应有空格。
|
||||
建议: 在注释内容两侧加空格,例如 /* comment */。
|
||||
- 🔴 `stylelint:no-invalid-double-slash-comments` L106
|
||||
非法的双斜杠 CSS 注释。
|
||||
建议: CSS 不支持 // 注释,改为 /* */ 注释或删除该行。
|
||||
- 🔴 `stylelint:color-named` L109
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:color-named` L114
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L117
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:custom-property-no-missing-var-function` L119
|
||||
自定义属性“--my-color”缺少 var() 函数。
|
||||
建议: 使用 var() 包裹自定义属性,如 color: var(--my-color);。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L119
|
||||
属性 color 的值“--my-color”未知。
|
||||
建议: 应该使用 var(--my-color) 取自定义属性值。
|
||||
- 🔴 `stylelint:declaration-block-no-duplicate-custom-properties` L123
|
||||
重复的自定义属性“--dup”。
|
||||
建议: 删除重复的自定义属性声明,只保留一个 --dup。
|
||||
- 🔴 `stylelint:no-unknown-custom-properties` L126
|
||||
使用了未定义的自定义属性“--unknown-prop”。
|
||||
建议: 先在根或作用域内定义 --unknown-prop,或使用其他已定义的自定义属性。
|
||||
- 🔴 `stylelint:import-notation` L131
|
||||
应使用字符串形式导入,而不是 url()。
|
||||
建议: 将 @import url("/a.css") 改为 @import "/a.css";。
|
||||
- 🔴 `stylelint:no-invalid-position-at-import-rule` L131
|
||||
@import 规则位置非法(位于其他规则之后)。
|
||||
建议: 将所有 @import 规则移到其他样式规则之前。如果使用构建工具,应改用 link 标签或合并导入文件。
|
||||
- 🔴 `stylelint:import-notation` L132
|
||||
应使用字符串形式导入,而不是 url()。
|
||||
建议: 将 @import url("/a.css") 改为 @import "/a.css";。
|
||||
- 🔴 `stylelint:no-duplicate-at-import-rules` L132
|
||||
重复的 @import 规则“/a.css”。
|
||||
建议: 删除重复的 @import。
|
||||
- 🔴 `stylelint:no-invalid-position-at-import-rule` L132
|
||||
@import 规则位置非法(位于其他规则之后)。
|
||||
建议: 将所有 @import 规则移到其他样式规则之前。如果使用构建工具,应改用 link 标签或合并导入文件。
|
||||
- 🔴 `stylelint:color-named` L136
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:no-descending-specificity` L138
|
||||
低特异性选择器“.bar .foo”应放在高特异性选择器“#high .foo”之前。
|
||||
建议: 将 .bar .foo 规则移到 #high .foo 规则之前,避免特异性顺序混乱。
|
||||
- 🔴 `stylelint:color-named` L139
|
||||
不允许使用命名颜色“blue”。
|
||||
建议: 改用十六进制或颜色函数,如 #00f。
|
||||
- 🔴 `stylelint:color-named` L144
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L146
|
||||
重复的选择器“.dup”,首次使用在第 143 行。
|
||||
建议: 合并两个 .dup 规则块。
|
||||
- 🔴 `stylelint:color-named` L147
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:color-named` L152
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:declaration-block-no-duplicate-properties` L152
|
||||
重复的属性“color”。
|
||||
建议: 删除其中的一个 color 声明,避免覆盖。
|
||||
- 🔴 `stylelint:color-named` L153
|
||||
不允许使用命名颜色“blue”。
|
||||
建议: 改用十六进制或颜色函数,如 #00f。
|
||||
- 🔴 `stylelint:color-named` L158
|
||||
不允许使用命名颜色“blue”。
|
||||
建议: 改用十六进制或颜色函数,如 #00f。
|
||||
- 🔴 `stylelint:color-named` L159
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:declaration-block-no-shorthand-property-overrides` L159
|
||||
简写属性“background”覆盖了“background-color”。
|
||||
建议: 避免被覆盖,删除 background-color 或调整顺序。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L163
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:font-family-no-duplicate-names` L165
|
||||
字体族名“Arial”重复。
|
||||
建议: 删除重复的 Arial,或换成其他字体族名。
|
||||
- 🔴 `stylelint:font-family-no-missing-generic-family-keyword` L165
|
||||
缺少通用字体族关键字。
|
||||
建议: 在字体族列表末尾添加通用族,如 sans-serif、serif、monospace。
|
||||
- 🔴 `stylelint:font-family-no-missing-generic-family-keyword` L168
|
||||
缺少通用字体族关键字。
|
||||
建议: 添加通用族,如 font-family: Arial, sans-serif;。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L173
|
||||
属性 font-family 的值“2Fancy”未知。
|
||||
建议: 给字体名加引号,例如 font-family: "2Fancy";。
|
||||
- 🔴 `stylelint:font-family-name-quotes` L173
|
||||
字体名“2Fancy”应加引号。
|
||||
建议: 以数字开头的字体名必须用引号包裹:"2Fancy"。
|
||||
- 🔴 `stylelint:font-family-no-missing-generic-family-keyword` L173
|
||||
缺少通用字体族关键字。
|
||||
建议: 添加通用族,如 font-family: "2Fancy", sans-serif;。
|
||||
- 🔴 `stylelint:unit-no-unknown` L173
|
||||
未知单位“Fancy”。
|
||||
建议: 这实际上是字体名 2Fancy 被误解析为数字+单位;应该用引号包裹:"2Fancy"。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L177
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L179
|
||||
属性 color 的值“unknown-func()”未知。
|
||||
建议: 使用合法的颜色函数,如 rgb()、hsl(),或定义自定义函数不是 CSS 标准。
|
||||
- 🔴 `stylelint:function-no-unknown` L179
|
||||
未知函数“unknown-func”。
|
||||
建议: 使用 CSS 标准函数替换,或移除该声明。
|
||||
- 🔴 `stylelint:function-calc-no-unspaced-operator` L182
|
||||
calc 表达式中的“+”运算符前应有空格。
|
||||
建议: 在 + 两侧添加空格:calc(1px + 2px)。
|
||||
- 🔴 `stylelint:function-calc-no-unspaced-operator` L182
|
||||
calc 表达式中的“+”运算符后应有空格。
|
||||
建议: 在 + 两侧添加空格:calc(1px + 2px)。
|
||||
- 🔴 `stylelint:color-named` L185
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:color-named` L185
|
||||
不允许使用命名颜色“blue”。
|
||||
建议: 改用十六进制或颜色函数,如 #00f。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L185
|
||||
属性 background 的值“linear-gradient(top, red, blue)”未知。
|
||||
建议: 方向应使用 to bottom 语法,并避免命名颜色:linear-gradient(to bottom, #f00, #00f)。
|
||||
- 🔴 `stylelint:function-linear-gradient-no-nonstandard-direction` L185
|
||||
线性渐变使用了非标准方向。
|
||||
建议: 使用 to bottom 替代 top,表示从顶部到底部。
|
||||
- 🔴 `stylelint:no-unknown-animations` L188
|
||||
未知动画“my-anim”。
|
||||
建议: 为 my-anim 添加 @keyframes 定义,或修改 animation 名称。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L193
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:named-grid-areas-no-invalid` L196
|
||||
命名网格区域每个字符串的单元格数量不一致。
|
||||
建议: 调整网格区域字符串,使每行单元格数量相同。
|
||||
- 🔴 `stylelint:keyframe-selector-notation` L202
|
||||
应使用百分比选择器“0%”替代“from”。
|
||||
建议: 将 from 改为 0%。
|
||||
- 🔴 `stylelint:keyframe-block-no-duplicate-selectors` L205
|
||||
关键帧块内重复的选择器“from”。
|
||||
建议: 合并两个 from 块,保留一个。
|
||||
- 🔴 `stylelint:keyframe-selector-notation` L205
|
||||
应使用百分比选择器“0%”替代“from”。
|
||||
建议: 将 from 改为 0%。
|
||||
- 🔴 `stylelint:keyframe-selector-notation` L212
|
||||
应使用百分比选择器“0%”替代“from”。
|
||||
建议: 将 from 改为 0%。
|
||||
- 🔴 `stylelint:keyframe-declaration-no-important` L213
|
||||
关键帧声明中不允许使用 !important。
|
||||
建议: 删除 !important。
|
||||
- 🔴 `stylelint:keyframe-selector-notation` L219
|
||||
应使用百分比选择器“0%”替代“from”。
|
||||
建议: 将 from 改为 0%。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L225
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:length-zero-no-unit` L227
|
||||
长度为 0 时不应带单位。
|
||||
建议: 将 0px 改为 0。
|
||||
- 🔴 `stylelint:number-max-precision` L230
|
||||
数值精度超过 4 位,期望“1.1235”。
|
||||
建议: 将 1.123456 四舍五入为 1.1235。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L233
|
||||
重复的选择器“b”,首次使用在第 171 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L235
|
||||
属性 width 的值“10unknown”未知。
|
||||
建议: 10unknown 不是合法长度,请改为 10px、10rem 等有效值。
|
||||
- 🔴 `stylelint:unit-no-unknown` L235
|
||||
未知单位“unknown”。
|
||||
建议: 10unknown 不是合法长度,改为 10px 或 10rem 等。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L239
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:color-named` L240
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:block-no-redundant-nested-style-rules` L242
|
||||
冗余嵌套样式规则。
|
||||
建议: 删除无意义的嵌套 & 块,因为外层 a 已经设置了相同样式。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L242
|
||||
重复的选择器“&”,首次使用在第 8 行。
|
||||
建议: 嵌套选择器 & 不能视为独立选择器,应删除冗余嵌套块。
|
||||
- 🔴 `stylelint:color-named` L243
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:nesting-selector-no-missing-scoping-root` L249
|
||||
缺少嵌套作用域根,顶层出现了嵌套选择器“&”。
|
||||
建议: 将 &:hover 放入某个选择器内部,或改为普通选择器 a:hover。
|
||||
- 🔴 `stylelint:color-named` L250
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:color-named` L255
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:no-invalid-position-declaration` L255
|
||||
声明位置非法(位于 @media 块内但没有选择器)。
|
||||
建议: 将 color: red; 放入一个选择器内部,或删除该声明。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L259
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:color-named` L261
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:property-no-unknown` L261
|
||||
未知属性“colour”。
|
||||
建议: CSS 中没有 colour,应改为 color。
|
||||
- 🔴 `stylelint:property-no-deprecated` L264
|
||||
已废弃的属性“word-wrap”。
|
||||
建议: 改用标准属性 overflow-wrap。
|
||||
- 🔴 `stylelint:property-no-vendor-prefix` L267
|
||||
带厂商前缀的属性“-webkit-transform”。
|
||||
建议: 使用标准 transform 属性,无需前缀。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L270
|
||||
属性 width 的值“unknownvalue”未知。
|
||||
建议: width 不接受未定义关键字,请改用 auto、百分比、长度等。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L273
|
||||
重复的选择器“b”,首次使用在第 171 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:declaration-property-value-keyword-no-deprecated` L275
|
||||
废弃的颜色关键字“activeborder”应替换为“ButtonBorder”。
|
||||
建议: 使用系统颜色关键字 ButtonBorder,替换 activeborder。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L279
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:declaration-block-no-redundant-longhand-properties` L282
|
||||
冗余的长手写属性“margin-top”位于简写属性“margin”之后。
|
||||
建议: 删除冗余的 margin-top,因为 margin: 1px; 已设置所有边距。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L285
|
||||
重复的选择器“b”,首次使用在第 171 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:shorthand-property-no-redundant-values` L287
|
||||
简写值冗余,期望“1px”。
|
||||
建议: margin: 1px 1px 1px 1px 可以简写为 margin: 1px;。
|
||||
- 🔴 `stylelint:block-no-empty` L292
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-pseudo-class-no-unknown` L292
|
||||
未知伪类选择器“:unknown-pseudo”。
|
||||
建议: 使用合法的伪类,如 :hover、:focus、:first-child,或删除该规则。
|
||||
- 🔴 `stylelint:block-no-empty` L296
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-pseudo-element-no-unknown` L296
|
||||
未知伪元素“::unknown-element”。
|
||||
建议: 使用合法的伪元素,如 ::before、::after、::placeholder,或删除该规则。
|
||||
- 🔴 `stylelint:block-no-empty` L300
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-pseudo-element-colon-notation` L300
|
||||
伪元素应使用双冒号写法。
|
||||
建议: 将 :before 改为 ::before。
|
||||
- 🔴 `stylelint:block-no-empty` L304
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-type-no-unknown` L304
|
||||
未知元素类型“unknowntag”。
|
||||
建议: 使用合法的 HTML 标签,或为自定义元素添加连字符(如 unknown-tag)并确保已在 HTML 中注册。
|
||||
- 🔴 `stylelint:block-no-empty` L308
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-no-vendor-prefix` L308
|
||||
带厂商前缀的选择器“::-webkit-input-placeholder”。
|
||||
建议: 使用标准伪元素 ::placeholder,并最好为旧浏览器保留前缀版本(如同时提供 ::-webkit-input-placeholder 和 ::placeholder)。
|
||||
- 🔴 `stylelint:block-no-empty` L312
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:selector-anb-no-unmatchable` L312
|
||||
无法匹配任何元素的 An+B 选择器“:nth-child(0n)”。
|
||||
建议: 删除该规则,或改用能匹配元素的表达式,如 nth-child(n)。
|
||||
- 🔴 `stylelint:block-no-empty` L316
|
||||
空规则块。
|
||||
建议: 删除空块,或在其中添加实际样式声明。
|
||||
- 🔴 `stylelint:string-no-newline` L321
|
||||
字符串包含换行。
|
||||
建议: 属性选择器中的字符串不能跨行,应使用转义(如 \a)或调整属性值。
|
||||
- 🔴 `stylelint:color-named` L323
|
||||
不允许使用命名颜色“red”。
|
||||
建议: 改用十六进制或颜色函数,如 #f00。
|
||||
- 🔴 `stylelint:syntax-string-no-invalid` L328
|
||||
非法的语法字符串“<invalid>”。
|
||||
建议: @property 的 syntax 必须使用合法的 CSS 语法关键字,如 <length>、<color>、<number>。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L333
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:value-no-vendor-prefix` L335
|
||||
带厂商前缀的值“-webkit-flex”。
|
||||
建议: 使用标准值 flex。
|
||||
- 🔴 `stylelint:no-duplicate-selectors` L340
|
||||
重复的选择器“a”,首次使用在第 8 行。
|
||||
建议: 合并相同选择器的规则,避免重复。
|
||||
- 🔴 `stylelint:declaration-property-value-no-unknown` L341
|
||||
属性 margin 的值“0 ”未知(包含不间断空格)。
|
||||
建议: 删除 margin 值中的不可见空格,改为 margin: 0;。
|
||||
- 🔴 `stylelint:no-irregular-whitespace` L341
|
||||
发现不规则空白字符(通常为不换行空格)。
|
||||
建议: 删除 0 后面的不换行空格,保留普通空格。
|
||||
|
||||
AI 审查 · 6 条建议
|
||||
|
||||
- 🔴 [AI] [bug] `font-face-required-descriptors` L17
|
||||
**@font-face 缺少必需的 font-family 和 src 描述符**
|
||||
文件中的两个 @font-face 规则都没有定义 font-family 和 src。根据 CSS Fonts 规范,@font-face 必须包含这两个描述符,否则整个规则无效,浏览器不会加载任何自定义字体。当前示例中还包含未知描述符/非法值,更加重了问题。
|
||||
建议: 为每个 @font-face 补齐 font-family(自定义字体名称)和 src(字体资源路径与格式),例如:@font-face { font-family: "MyFont"; src: url("/fonts/myfont.woff2") format("woff2"); font-display: swap; }
|
||||
- 🟡 [AI] [performance] `uncompressed-merged-output` L2
|
||||
**声称是合并压缩文件,但实际未压缩,存在大量冗余**
|
||||
文件注释说明“由 22 个 CSS 文件合并压缩而来”,但内容保留了所有源文件注释、空行、重复选择器和重复声明。这种“压缩”并未减小体积,仍会产生大量冗余下载流量,且重复规则会增加层叠冲突和样式表解析时间。
|
||||
建议: 使用 CSS 压缩工具(如 cssnano、clean-css、csso)对合并产物进行压缩,并在构建流程中剥离开发注释、合并重复选择器。
|
||||
- 🟡 [AI] [performance] `import-performance` L6
|
||||
**@import 引入额外样式会阻塞渲染,应避免**
|
||||
文件中存在多个 @import 规则(包括第 6、13、131、132 行),即使将位置移到顶部,@import 也会使浏览器必须串行下载依赖样式,延迟页面渲染。更严重的是一部分 @import 位于非法位置,会被浏览器忽略,导致依赖样式缺失。
|
||||
建议: 改用 <link rel="stylesheet"> 在 HTML 中引用样式,或在构建阶段将 @import 的文件直接合并进当前文件。
|
||||
- 🟡 [AI] [bug] `dead-color-declarations` L89
|
||||
**同一规则块内多条 color 声明相互覆盖,形成死代码**
|
||||
从第 75 行开始的 a 规则块中依次声明了 #12345、#ffffff、rgb(255, 0, 0)、rgba(0, 0, 0, 50%) 和 hsl(120, 50%, 50%),但同一属性在同一个块中只有最后一个会生效,前面的颜色值全部被覆盖,属于无效代码。这也导致该块变得难以理解。
|
||||
建议: 删除被覆盖的 color 声明,只保留最终需要生效的 hsl(120deg 50% 50%)(并根据 color-function-notation 的规则写为现代空格式)。
|
||||
- 🟡 [AI] [design] `missing-standard-prefix-fallback` L267
|
||||
**仅使用带厂商前缀的语法,缺少标准无前缀写法**
|
||||
代码中只出现了 -webkit-transform、-webkit-keyframes、-webkit-min-device-pixel-ratio、-webkit-flex、::-webkit-input-placeholder 等带前缀的写法,但没有对应的标准写法。现代浏览器可能不再支持旧前缀语法,导致这些样式在主流环境中失效;同时也忽略了其他需要前缀的浏览器。
|
||||
建议: 同时提供标准属性和前缀属性(通常标准写法靠后),例如 transform 和 -webkit-transform 都写,或者直接使用标准属性并配合 Autoprefixer 等工具自动添加前缀。
|
||||
- 🔵 [AI] [design] `missing-charset-declaration` L1
|
||||
**文件包含非 ASCII 字符但未声明 @charset**
|
||||
该 CSS 文件中包含大量中文注释,但在文件开头没有 @charset "UTF-8"; 声明。如果通过 file:// 协议打开或 HTTP 头未指定编码,中文注释可能被错误解码,导致注释边界解析错误。
|
||||
建议: 在文件第一行添加 @charset "UTF-8";,并确保文件保存为 UTF-8 编码。
|
||||
@@ -0,0 +1,129 @@
|
||||
# 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 回退写法正确)
|
||||
|
||||
**实测进度总览**(四个 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`*
|
||||
@@ -0,0 +1,16 @@
|
||||
# 代码审查报告
|
||||
|
||||
**文件:** `data\demo-stylelint\src\empty-source.css`
|
||||
**语言:** css
|
||||
**耗时:** 10.6s
|
||||
**分析工具:** stylelint
|
||||
|
||||
---
|
||||
|
||||
总计: 1 | 错误: 1 | 警告: 0 | 建议: 0
|
||||
|
||||
静态分析 · 1 个问题
|
||||
|
||||
- 🔴 `stylelint:no-empty-source` L1
|
||||
源文件为空:未包含任何有效内容。
|
||||
建议: 删除此空文件,或添加至少一条 CSS(或所用预处理器)样式规则,使其不再为空。
|
||||
@@ -0,0 +1,342 @@
|
||||
/* ============ common.css(合并文件) ============ */
|
||||
/* 由 Stylelint 演示工程除 empty-source.css 外的 22 个 CSS 文件合并压缩而来。 */
|
||||
|
||||
/* ===== 原 import.css ===== */
|
||||
/* import-notation: 应使用字符串形式 */
|
||||
@import url("/x.css");
|
||||
|
||||
a {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* no-invalid-position-at-import-rule: @import 位置非法(位于其他规则之后) */
|
||||
@import "/late.css";
|
||||
|
||||
/* ===== 原 at-rules.css ===== */
|
||||
/* at-rule-descriptor-no-unknown: @font-face 内未知描述符 */
|
||||
@font-face {
|
||||
unknown-descriptor: 1;
|
||||
}
|
||||
|
||||
/* at-rule-descriptor-value-no-unknown: font-display 描述符值非法 */
|
||||
@font-face {
|
||||
font-display: invalid-display-value;
|
||||
}
|
||||
|
||||
/* at-rule-no-deprecated: 已废弃的 at-rule */
|
||||
@viewport {
|
||||
width: 100vh;
|
||||
}
|
||||
|
||||
/* at-rule-no-unknown: 未知 at-rule */
|
||||
@unknown-rule {
|
||||
}
|
||||
|
||||
/* at-rule-prelude-no-invalid: 无效的 prelude */
|
||||
@layer foo.bar. {
|
||||
}
|
||||
|
||||
/* at-rule-no-vendor-prefix: 带厂商前缀的 at-rule */
|
||||
@-webkit-keyframes vendor-keyframes {
|
||||
}
|
||||
|
||||
/* ===== 原 media.css ===== */
|
||||
/* media-feature-name-no-unknown: 未知媒体特性 */
|
||||
@media (unknown-feature) {
|
||||
}
|
||||
|
||||
/* media-feature-name-value-no-unknown: 媒体特性值非法 */
|
||||
@media (width: 10) {
|
||||
}
|
||||
|
||||
/* media-query-no-invalid: 无效 media 查询 */
|
||||
@media (min-width: ) {
|
||||
}
|
||||
|
||||
/* media-type-no-deprecated: 已废弃媒体类型 */
|
||||
@media tv {
|
||||
}
|
||||
|
||||
/* media-feature-name-no-vendor-prefix: 带厂商前缀的媒体特性 */
|
||||
@media (-webkit-min-device-pixel-ratio: 2) {
|
||||
}
|
||||
|
||||
/* no-unknown-custom-media: 引用未定义的自定义媒体 */
|
||||
@media (--my-custom-media) {
|
||||
}
|
||||
|
||||
/* ===== 原 annotation.css ===== */
|
||||
/* annotation-no-unknown: 未知的注解 "!foo" */
|
||||
a {
|
||||
color: red !foo;
|
||||
}
|
||||
|
||||
/* ===== 原 color.css ===== */
|
||||
a {
|
||||
/* color-no-invalid-hex: 非法十六进制颜色(5 位) */
|
||||
color: #12345;
|
||||
|
||||
/* color-hex-length: 十六进制过长(应缩短为 3 位) */
|
||||
color: #ffffff;
|
||||
|
||||
/* color-function-notation: 应使用现代空格分隔语法 */
|
||||
color: rgb(255, 0, 0);
|
||||
|
||||
/* alpha-value-notation: alpha 应使用数字而非百分比 */
|
||||
color: rgba(0, 0, 0, 50%);
|
||||
|
||||
/* hue-degree-notation: 色相应使用角度 */
|
||||
color: hsl(120, 50%, 50%);
|
||||
}
|
||||
|
||||
/* ===== 原 color-named.css ===== */
|
||||
a {
|
||||
/* color-named: 禁止使用命名颜色 */
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* ===== 原 comments.css ===== */
|
||||
/* comment-no-empty: 空注释 */
|
||||
/**/
|
||||
|
||||
/* comment-whitespace-inside: 注释内部缺少空格 */
|
||||
/*comment*/
|
||||
|
||||
/* no-invalid-double-slash-comments: 非法双斜杠注释 */
|
||||
// invalid double slash comment
|
||||
|
||||
a {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* ===== 原 custom-properties.css ===== */
|
||||
:root {
|
||||
--my-color: red;
|
||||
}
|
||||
|
||||
a {
|
||||
/* custom-property-no-missing-var-function: 自定义属性未包裹 var() */
|
||||
color: --my-color;
|
||||
|
||||
/* declaration-block-no-duplicate-custom-properties: 重复自定义属性 */
|
||||
--dup: 1;
|
||||
--dup: 2;
|
||||
|
||||
/* no-unknown-custom-properties: 使用未定义的自定义属性 */
|
||||
background: var(--unknown-prop);
|
||||
}
|
||||
|
||||
/* ===== 原 duplicates.css ===== */
|
||||
/* no-duplicate-at-import-rules: 重复导入同一文件 */
|
||||
@import url("/a.css");
|
||||
@import url("/a.css");
|
||||
|
||||
/* no-descending-specificity: 低特异性选择器位于高特异性之后 */
|
||||
#high .foo {
|
||||
color: red;
|
||||
}
|
||||
.bar .foo {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
/* no-duplicate-selectors: 重复选择器 */
|
||||
.dup {
|
||||
color: red;
|
||||
}
|
||||
.dup {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* declaration-block-no-duplicate-properties: 重复属性 */
|
||||
.dup2 {
|
||||
color: red;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
/* declaration-block-no-shorthand-property-overrides: 简写属性被覆盖 */
|
||||
.dup3 {
|
||||
background-color: blue;
|
||||
background: red;
|
||||
}
|
||||
|
||||
/* ===== 原 font-family.css ===== */
|
||||
a {
|
||||
/* font-family-no-duplicate-names: 重复字族名 */
|
||||
font-family: Arial, Arial;
|
||||
|
||||
/* font-family-no-missing-generic-family-keyword: 缺少通用字族 */
|
||||
font-family: Arial;
|
||||
}
|
||||
|
||||
b {
|
||||
/* font-family-name-quotes: 需加引号的字族名 */
|
||||
font-family: 2Fancy;
|
||||
}
|
||||
|
||||
/* ===== 原 functions.css ===== */
|
||||
a {
|
||||
/* function-no-unknown: 未知函数 */
|
||||
color: unknown-func();
|
||||
|
||||
/* function-calc-no-unspaced-operator: calc 运算符缺少空格 */
|
||||
width: calc(1px+2px);
|
||||
|
||||
/* function-linear-gradient-no-nonstandard-direction: 非标准方向 */
|
||||
background: linear-gradient(top, red, blue);
|
||||
|
||||
/* no-unknown-animations: 引用未定义的动画 */
|
||||
animation: my-anim 1s;
|
||||
}
|
||||
|
||||
/* ===== 原 grids.css ===== */
|
||||
/* named-grid-areas-no-invalid: 命名网格区域行列数量不一致 */
|
||||
a {
|
||||
grid-template-areas:
|
||||
"a b"
|
||||
"c d e";
|
||||
}
|
||||
|
||||
/* ===== 原 keyframes.css ===== */
|
||||
/* keyframe-block-no-duplicate-selectors: 关键帧块内重复选择器 */
|
||||
@keyframes duplicate-selector {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* keyframe-declaration-no-important: 关键帧声明使用 !important */
|
||||
@keyframes important {
|
||||
from {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* keyframe-selector-notation: 应使用百分比选择器 */
|
||||
@keyframes notation {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== 原 length.css ===== */
|
||||
a {
|
||||
/* length-zero-no-unit: 零值不应带单位 */
|
||||
margin: 0px;
|
||||
|
||||
/* number-max-precision: 数值精度超过 4 位 */
|
||||
width: 1.123456px;
|
||||
}
|
||||
|
||||
b {
|
||||
/* unit-no-unknown: 未知单位 */
|
||||
width: 10unknown;
|
||||
}
|
||||
|
||||
/* ===== 原 nested-redundant.css ===== */
|
||||
a {
|
||||
color: red;
|
||||
/* block-no-redundant-nested-style-rules: 冗余嵌套样式规则 */
|
||||
& {
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
/* ===== 原 nesting.css ===== */
|
||||
/* nesting-selector-no-missing-scoping-root: 顶层出现嵌套选择器 */
|
||||
&:hover {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* no-invalid-position-declaration: 声明处于非法位置(media 块内无选择器) */
|
||||
@media (min-width: 100px) {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* ===== 原 properties.css ===== */
|
||||
a {
|
||||
/* property-no-unknown: 未知属性 */
|
||||
colour: red;
|
||||
|
||||
/* property-no-deprecated: 已废弃属性 */
|
||||
word-wrap: break-word;
|
||||
|
||||
/* property-no-vendor-prefix: 带厂商前缀的属性 */
|
||||
-webkit-transform: rotate(1deg);
|
||||
|
||||
/* declaration-property-value-no-unknown: 属性值未知 */
|
||||
width: unknownvalue;
|
||||
}
|
||||
|
||||
b {
|
||||
/* declaration-property-value-keyword-no-deprecated: 已废弃颜色关键字 */
|
||||
color: activeborder;
|
||||
}
|
||||
|
||||
/* ===== 原 redundancy.css ===== */
|
||||
a {
|
||||
/* declaration-block-no-redundant-longhand-properties: 冗余长手写属性 */
|
||||
margin: 1px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
b {
|
||||
/* shorthand-property-no-redundant-values: 冗余简写值 */
|
||||
margin: 1px 1px 1px 1px;
|
||||
}
|
||||
|
||||
/* ===== 原 selectors.css ===== */
|
||||
/* selector-pseudo-class-no-unknown: 未知伪类 */
|
||||
a:unknown-pseudo {
|
||||
}
|
||||
|
||||
/* selector-pseudo-element-no-unknown: 未知伪元素 */
|
||||
a::unknown-element {
|
||||
}
|
||||
|
||||
/* selector-pseudo-element-colon-notation: 伪元素应使用双冒号 */
|
||||
a:before {
|
||||
}
|
||||
|
||||
/* selector-type-no-unknown: 未知元素类型 */
|
||||
unknowntag {
|
||||
}
|
||||
|
||||
/* selector-no-vendor-prefix: 带厂商前缀的伪元素选择器 */
|
||||
::-webkit-input-placeholder {
|
||||
}
|
||||
|
||||
/* selector-anb-no-unmatchable: 无法匹配的 An+B 选择器 */
|
||||
li:nth-child(0n) {
|
||||
}
|
||||
|
||||
/* block-no-empty: 空规则块 */
|
||||
div {
|
||||
}
|
||||
|
||||
/* ===== 原 strings.css ===== */
|
||||
/* string-no-newline: 字符串包含换行 */
|
||||
[data-x="line
|
||||
break"] {
|
||||
color: red;
|
||||
}
|
||||
|
||||
@property --foo {
|
||||
/* syntax-string-no-invalid: 非法语法字符串 */
|
||||
syntax: "<invalid>";
|
||||
inherits: false;
|
||||
}
|
||||
|
||||
/* ===== 原 vendor-value.css ===== */
|
||||
a {
|
||||
/* value-no-vendor-prefix: 带厂商前缀的值 */
|
||||
display: -webkit-flex;
|
||||
}
|
||||
|
||||
/* ===== 原 whitespace.css ===== */
|
||||
/* no-irregular-whitespace: value contains NBSP */
|
||||
a {
|
||||
margin: 0 ;
|
||||
}
|
||||
@@ -0,0 +1,1448 @@
|
||||
{
|
||||
"target_rules_count": 68,
|
||||
"hit_count": 55,
|
||||
"target_rules": [
|
||||
"alpha-value-notation",
|
||||
"annotation-no-unknown",
|
||||
"at-rule-descriptor-no-unknown",
|
||||
"at-rule-descriptor-value-no-unknown",
|
||||
"at-rule-no-deprecated",
|
||||
"at-rule-no-unknown",
|
||||
"at-rule-no-vendor-prefix",
|
||||
"at-rule-prelude-no-invalid",
|
||||
"block-no-empty",
|
||||
"block-no-redundant-nested-style-rules",
|
||||
"color-function-notation",
|
||||
"color-hex-length",
|
||||
"color-named",
|
||||
"color-no-invalid-hex",
|
||||
"comment-no-empty",
|
||||
"comment-whitespace-inside",
|
||||
"custom-property-no-missing-var-function",
|
||||
"declaration-block-no-duplicate-custom-properties",
|
||||
"declaration-block-no-duplicate-properties",
|
||||
"declaration-block-no-redundant-longhand-properties",
|
||||
"declaration-block-no-shorthand-property-overrides",
|
||||
"declaration-property-value-keyword-no-deprecated",
|
||||
"declaration-property-value-no-unknown",
|
||||
"font-family-name-quotes",
|
||||
"font-family-no-duplicate-names",
|
||||
"font-family-no-missing-generic-family-keyword",
|
||||
"function-calc-no-unspaced-operator",
|
||||
"function-linear-gradient-no-nonstandard-direction",
|
||||
"function-no-unknown",
|
||||
"hue-degree-notation",
|
||||
"import-notation",
|
||||
"keyframe-block-no-duplicate-selectors",
|
||||
"keyframe-declaration-no-important",
|
||||
"keyframe-selector-notation",
|
||||
"length-zero-no-unit",
|
||||
"media-feature-name-no-unknown",
|
||||
"media-feature-name-no-vendor-prefix",
|
||||
"media-feature-name-value-no-unknown",
|
||||
"media-query-no-invalid",
|
||||
"media-type-no-deprecated",
|
||||
"named-grid-areas-no-invalid",
|
||||
"nesting-selector-no-missing-scoping-root",
|
||||
"no-descending-specificity",
|
||||
"no-duplicate-at-import-rules",
|
||||
"no-duplicate-selectors",
|
||||
"no-empty-source",
|
||||
"no-invalid-double-slash-comments",
|
||||
"no-invalid-position-at-import-rule",
|
||||
"no-invalid-position-declaration",
|
||||
"no-irregular-whitespace",
|
||||
"no-unknown-animations",
|
||||
"no-unknown-custom-media",
|
||||
"no-unknown-custom-properties",
|
||||
"number-max-precision",
|
||||
"property-no-deprecated",
|
||||
"property-no-unknown",
|
||||
"property-no-vendor-prefix",
|
||||
"selector-anb-no-unmatchable",
|
||||
"selector-no-vendor-prefix",
|
||||
"selector-pseudo-class-no-unknown",
|
||||
"selector-pseudo-element-colon-notation",
|
||||
"selector-pseudo-element-no-unknown",
|
||||
"selector-type-no-unknown",
|
||||
"shorthand-property-no-redundant-values",
|
||||
"string-no-newline",
|
||||
"syntax-string-no-invalid",
|
||||
"unit-no-unknown",
|
||||
"value-no-vendor-prefix"
|
||||
],
|
||||
"missing": [
|
||||
"at-rule-descriptor-no-unknown",
|
||||
"at-rule-descriptor-value-no-unknown",
|
||||
"at-rule-no-deprecated",
|
||||
"at-rule-prelude-no-invalid",
|
||||
"declaration-block-no-redundant-longhand-properties",
|
||||
"declaration-property-value-keyword-no-deprecated",
|
||||
"declaration-property-value-no-unknown",
|
||||
"media-feature-name-value-no-unknown",
|
||||
"media-type-no-deprecated",
|
||||
"nesting-selector-no-missing-scoping-root",
|
||||
"no-invalid-position-declaration",
|
||||
"property-no-deprecated",
|
||||
"syntax-string-no-invalid"
|
||||
],
|
||||
"triggered_extra": [],
|
||||
"file_rule_map": {
|
||||
"common.css": [
|
||||
{
|
||||
"rule": "alpha-value-notation",
|
||||
"line": 86,
|
||||
"col": 24
|
||||
},
|
||||
{
|
||||
"rule": "annotation-no-unknown",
|
||||
"line": 71,
|
||||
"col": 14
|
||||
},
|
||||
{
|
||||
"rule": "at-rule-no-unknown",
|
||||
"line": 32,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "at-rule-no-vendor-prefix",
|
||||
"line": 40,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 292,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 296,
|
||||
"col": 20
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 300,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 304,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 308,
|
||||
"col": 29
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 312,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 316,
|
||||
"col": 5
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 32,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 36,
|
||||
"col": 17
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 40,
|
||||
"col": 37
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 45,
|
||||
"col": 26
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 49,
|
||||
"col": 20
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 53,
|
||||
"col": 22
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 57,
|
||||
"col": 11
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 61,
|
||||
"col": 44
|
||||
},
|
||||
{
|
||||
"rule": "block-no-empty",
|
||||
"line": 65,
|
||||
"col": 28
|
||||
},
|
||||
{
|
||||
"rule": "block-no-redundant-nested-style-rules",
|
||||
"line": 242,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "color-function-notation",
|
||||
"line": 83,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-function-notation",
|
||||
"line": 86,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-function-notation",
|
||||
"line": 89,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-hex-length",
|
||||
"line": 80,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 9,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 71,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 95,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 109,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 114,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 136,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 139,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 144,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 147,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 152,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 153,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 158,
|
||||
"col": 21
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 159,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 185,
|
||||
"col": 36
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 185,
|
||||
"col": 41
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 240,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 243,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 250,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 255,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 261,
|
||||
"col": 11
|
||||
},
|
||||
{
|
||||
"rule": "color-named",
|
||||
"line": 323,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "color-no-invalid-hex",
|
||||
"line": 77,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "comment-no-empty",
|
||||
"line": 100,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "comment-whitespace-inside",
|
||||
"line": 100,
|
||||
"col": 4
|
||||
},
|
||||
{
|
||||
"rule": "comment-whitespace-inside",
|
||||
"line": 100,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "comment-whitespace-inside",
|
||||
"line": 103,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "comment-whitespace-inside",
|
||||
"line": 103,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "custom-property-no-missing-var-function",
|
||||
"line": 119,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "declaration-block-no-duplicate-custom-properties",
|
||||
"line": 123,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "declaration-block-no-duplicate-properties",
|
||||
"line": 77,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "declaration-block-no-duplicate-properties",
|
||||
"line": 152,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "declaration-block-no-shorthand-property-overrides",
|
||||
"line": 159,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "font-family-name-quotes",
|
||||
"line": 173,
|
||||
"col": 16
|
||||
},
|
||||
{
|
||||
"rule": "font-family-no-duplicate-names",
|
||||
"line": 165,
|
||||
"col": 23
|
||||
},
|
||||
{
|
||||
"rule": "font-family-no-missing-generic-family-keyword",
|
||||
"line": 165,
|
||||
"col": 23
|
||||
},
|
||||
{
|
||||
"rule": "font-family-no-missing-generic-family-keyword",
|
||||
"line": 168,
|
||||
"col": 16
|
||||
},
|
||||
{
|
||||
"rule": "font-family-no-missing-generic-family-keyword",
|
||||
"line": 173,
|
||||
"col": 16
|
||||
},
|
||||
{
|
||||
"rule": "function-calc-no-unspaced-operator",
|
||||
"line": 182,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"rule": "function-calc-no-unspaced-operator",
|
||||
"line": 182,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"rule": "function-linear-gradient-no-nonstandard-direction",
|
||||
"line": 185,
|
||||
"col": 31
|
||||
},
|
||||
{
|
||||
"rule": "function-no-unknown",
|
||||
"line": 179,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "hue-degree-notation",
|
||||
"line": 89,
|
||||
"col": 14
|
||||
},
|
||||
{
|
||||
"rule": "import-notation",
|
||||
"line": 6,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "import-notation",
|
||||
"line": 131,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "import-notation",
|
||||
"line": 132,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-block-no-duplicate-selectors",
|
||||
"line": 205,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-declaration-no-important",
|
||||
"line": 213,
|
||||
"col": 16
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-selector-notation",
|
||||
"line": 202,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-selector-notation",
|
||||
"line": 205,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-selector-notation",
|
||||
"line": 212,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "keyframe-selector-notation",
|
||||
"line": 219,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "length-zero-no-unit",
|
||||
"line": 227,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"rule": "media-feature-name-no-unknown",
|
||||
"line": 45,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "media-feature-name-no-vendor-prefix",
|
||||
"line": 61,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "media-query-no-invalid",
|
||||
"line": 53,
|
||||
"col": 8
|
||||
},
|
||||
{
|
||||
"rule": "named-grid-areas-no-invalid",
|
||||
"line": 196,
|
||||
"col": 5
|
||||
},
|
||||
{
|
||||
"rule": "no-descending-specificity",
|
||||
"line": 138,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-at-import-rules",
|
||||
"line": 132,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 70,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 75,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 93,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 117,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 146,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 163,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 177,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 193,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 225,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 233,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 239,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 242,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 259,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 273,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 279,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 285,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 333,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-duplicate-selectors",
|
||||
"line": 340,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-invalid-double-slash-comments",
|
||||
"line": 106,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-invalid-position-at-import-rule",
|
||||
"line": 13,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-invalid-position-at-import-rule",
|
||||
"line": 131,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-invalid-position-at-import-rule",
|
||||
"line": 132,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "no-irregular-whitespace",
|
||||
"line": 341,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"rule": "no-unknown-animations",
|
||||
"line": 188,
|
||||
"col": 14
|
||||
},
|
||||
{
|
||||
"rule": "no-unknown-custom-media",
|
||||
"line": 65,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "no-unknown-custom-properties",
|
||||
"line": 126,
|
||||
"col": 19
|
||||
},
|
||||
{
|
||||
"rule": "number-max-precision",
|
||||
"line": 230,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"rule": "property-no-unknown",
|
||||
"line": 261,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "property-no-vendor-prefix",
|
||||
"line": 267,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "selector-anb-no-unmatchable",
|
||||
"line": 312,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"rule": "selector-no-vendor-prefix",
|
||||
"line": 308,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "selector-pseudo-class-no-unknown",
|
||||
"line": 292,
|
||||
"col": 2
|
||||
},
|
||||
{
|
||||
"rule": "selector-pseudo-element-colon-notation",
|
||||
"line": 300,
|
||||
"col": 2
|
||||
},
|
||||
{
|
||||
"rule": "selector-pseudo-element-no-unknown",
|
||||
"line": 296,
|
||||
"col": 2
|
||||
},
|
||||
{
|
||||
"rule": "selector-type-no-unknown",
|
||||
"line": 304,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"rule": "shorthand-property-no-redundant-values",
|
||||
"line": 287,
|
||||
"col": 11
|
||||
},
|
||||
{
|
||||
"rule": "string-no-newline",
|
||||
"line": 321,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"rule": "unit-no-unknown",
|
||||
"line": 173,
|
||||
"col": 17
|
||||
},
|
||||
{
|
||||
"rule": "unit-no-unknown",
|
||||
"line": 235,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"rule": "value-no-vendor-prefix",
|
||||
"line": 335,
|
||||
"col": 12
|
||||
}
|
||||
],
|
||||
"empty-source.css": [
|
||||
{
|
||||
"rule": "no-empty-source",
|
||||
"line": 1,
|
||||
"col": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"rule_locations": {
|
||||
"alpha-value-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 86,
|
||||
"col": 24
|
||||
}
|
||||
],
|
||||
"annotation-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 71,
|
||||
"col": 14
|
||||
}
|
||||
],
|
||||
"at-rule-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 32,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"at-rule-no-vendor-prefix": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 40,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"block-no-empty": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 292,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 296,
|
||||
"col": 20
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 300,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 304,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 308,
|
||||
"col": 29
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 312,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 316,
|
||||
"col": 5
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 32,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 36,
|
||||
"col": 17
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 40,
|
||||
"col": 37
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 45,
|
||||
"col": 26
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 49,
|
||||
"col": 20
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 53,
|
||||
"col": 22
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 57,
|
||||
"col": 11
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 61,
|
||||
"col": 44
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 65,
|
||||
"col": 28
|
||||
}
|
||||
],
|
||||
"block-no-redundant-nested-style-rules": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 242,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"color-function-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 83,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 86,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 89,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"color-hex-length": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 80,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"color-named": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 9,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 71,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 95,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 109,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 114,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 136,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 139,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 144,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 147,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 152,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 153,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 158,
|
||||
"col": 21
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 159,
|
||||
"col": 15
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 185,
|
||||
"col": 36
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 185,
|
||||
"col": 41
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 240,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 243,
|
||||
"col": 12
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 250,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 255,
|
||||
"col": 10
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 261,
|
||||
"col": 11
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 323,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"color-no-invalid-hex": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 77,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"comment-no-empty": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 100,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"comment-whitespace-inside": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 100,
|
||||
"col": 4
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 100,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 103,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 103,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"custom-property-no-missing-var-function": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 119,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"declaration-block-no-duplicate-custom-properties": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 123,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"declaration-block-no-duplicate-properties": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 77,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 152,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"declaration-block-no-shorthand-property-overrides": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 159,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"font-family-name-quotes": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 173,
|
||||
"col": 16
|
||||
}
|
||||
],
|
||||
"font-family-no-duplicate-names": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 165,
|
||||
"col": 23
|
||||
}
|
||||
],
|
||||
"font-family-no-missing-generic-family-keyword": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 165,
|
||||
"col": 23
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 168,
|
||||
"col": 16
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 173,
|
||||
"col": 16
|
||||
}
|
||||
],
|
||||
"function-calc-no-unspaced-operator": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 182,
|
||||
"col": 18
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 182,
|
||||
"col": 18
|
||||
}
|
||||
],
|
||||
"function-linear-gradient-no-nonstandard-direction": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 185,
|
||||
"col": 31
|
||||
}
|
||||
],
|
||||
"function-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 179,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"hue-degree-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 89,
|
||||
"col": 14
|
||||
}
|
||||
],
|
||||
"import-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 6,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 131,
|
||||
"col": 9
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 132,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"keyframe-block-no-duplicate-selectors": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 205,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"keyframe-declaration-no-important": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 213,
|
||||
"col": 16
|
||||
}
|
||||
],
|
||||
"keyframe-selector-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 202,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 205,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 212,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 219,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"length-zero-no-unit": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 227,
|
||||
"col": 12
|
||||
}
|
||||
],
|
||||
"media-feature-name-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 45,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"media-feature-name-no-vendor-prefix": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 61,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"media-query-no-invalid": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 53,
|
||||
"col": 8
|
||||
}
|
||||
],
|
||||
"named-grid-areas-no-invalid": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 196,
|
||||
"col": 5
|
||||
}
|
||||
],
|
||||
"no-descending-specificity": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 138,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"no-duplicate-at-import-rules": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 132,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"no-duplicate-selectors": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 70,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 75,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 93,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 117,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 146,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 163,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 177,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 193,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 225,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 233,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 239,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 242,
|
||||
"col": 3
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 259,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 273,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 279,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 285,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 333,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 340,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"no-invalid-double-slash-comments": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 106,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"no-invalid-position-at-import-rule": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 13,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 131,
|
||||
"col": 1
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 132,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"no-irregular-whitespace": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 341,
|
||||
"col": 12
|
||||
}
|
||||
],
|
||||
"no-unknown-animations": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 188,
|
||||
"col": 14
|
||||
}
|
||||
],
|
||||
"no-unknown-custom-media": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 65,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"no-unknown-custom-properties": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 126,
|
||||
"col": 19
|
||||
}
|
||||
],
|
||||
"number-max-precision": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 230,
|
||||
"col": 10
|
||||
}
|
||||
],
|
||||
"property-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 261,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"property-no-vendor-prefix": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 267,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"selector-anb-no-unmatchable": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 312,
|
||||
"col": 3
|
||||
}
|
||||
],
|
||||
"selector-no-vendor-prefix": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 308,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"selector-pseudo-class-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 292,
|
||||
"col": 2
|
||||
}
|
||||
],
|
||||
"selector-pseudo-element-colon-notation": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 300,
|
||||
"col": 2
|
||||
}
|
||||
],
|
||||
"selector-pseudo-element-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 296,
|
||||
"col": 2
|
||||
}
|
||||
],
|
||||
"selector-type-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 304,
|
||||
"col": 1
|
||||
}
|
||||
],
|
||||
"shorthand-property-no-redundant-values": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 287,
|
||||
"col": 11
|
||||
}
|
||||
],
|
||||
"string-no-newline": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 321,
|
||||
"col": 9
|
||||
}
|
||||
],
|
||||
"unit-no-unknown": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 173,
|
||||
"col": 17
|
||||
},
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 235,
|
||||
"col": 12
|
||||
}
|
||||
],
|
||||
"value-no-vendor-prefix": [
|
||||
{
|
||||
"file": "common.css",
|
||||
"line": 335,
|
||||
"col": 12
|
||||
}
|
||||
],
|
||||
"no-empty-source": [
|
||||
{
|
||||
"file": "empty-source.css",
|
||||
"line": 1,
|
||||
"col": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user