メインコンテンツまでスキップ

ルールの改名と分割

安定版 v4(v4.18.3)由来のルール名変更のマスターです。改名・分割を超えるオプション形式は rules/ 配下。ARIA バージョンと wai-aria の対応 も参照してください。

v5 は動詞 prefix、独立した検査ごとに 1 ルール、仕様準拠メタデータです。v4 の組み込み 38 ルールは v5 で 106 になります。 うち 12 がリネーム、10 が分割、wai-aria が 21 ルール、残りは v4 に前身のない新検査です。

改名・分割された旧名は非推奨警告付きで展開されます(v6 で削除)。名前が変わっていないルールにはエイリアスがありません。既知の移行ギャップ を参照してください。

カテゴリ​

v4 は 5 分類(validation、a11y、naming-convention、maintainability、style)。v5 は各 meta.ts の category による 9 分類です。設定ファイルには出ません。

カテゴリ内容
syntaxパースレベルの適合
structureコンテンツモデル、祖先、doctype、テーブルモデル
attributes属性名・値
referencesID・フラグメント参照
formsフォーム
a11yARIA とアクセシビリティ
style書式・命名の選好
maintainabilityプロジェクト衛生
compatbrowserslist × BCD、実験的・非標準

naming-convention(class-naming のみ)は style に入ります。

1:1 リネーム​

安定版 v4 に存在した 12 件です。

旧名 (v4)新名
attr-duplicationno-duplicate-attr
id-duplicationno-duplicate-id
required-attrrequire-attr
required-elementrequire-element
ineffective-attrno-ineffective-attr
end-tagrequire-end-tag
disallowed-elementno-restricted-element
heading-levelsno-skipped-heading-level
neighbor-popoversrequire-adjacent-popover
no-hard-code-idno-hardcoded-id
no-use-event-handler-attrno-event-handler-attr
use-listno-pseudo-list

required-attr → require-attr は { name, value } 照合を維持します。スコープ変更 を参照。

分割​

安定版 v4 に存在した 10 名です。分割先は独立して設定できます。

旧名 (v4)分割先検査内容
invalid-attrno-unknown-attr仕様にない名前
no-disallowed-attr定義はあるがここでは不許可
no-invalid-attr-value値の型・文法
no-restricted-attrユーザーの disallowAttrs のみ。未設定ならエイリアスに含めない
doctyperequire-doctypeDOCTYPE 欠如
no-obsolete-doctype旧 public/system 識別子。denyObsoleteType: false なら省略
character-referenceno-malformed-character-reference不正な文字参照
no-unescaped-charエスケープされていない < / 曖昧な &
deprecated-attrno-obsolete-attr仕様から削除された属性(error)
no-deprecated-attrMDN/BCD の非推奨(warning)
deprecated-elementno-obsolete-element廃止要素(error)
no-deprecated-element非推奨要素(warning)
landmark-rolesno-nested-top-level-landmark入れ子の banner / main / contentinfo
require-landmark-label重複ランドマークの名前。labelEachArea: false なら省略
no-refer-to-non-existent-idno-refer-to-non-existent-idDOMID / ARIA ID 参照(名前維持 — ギャップ)
no-broken-fragment-linka[href] / area[href] フラグメント
permitted-contentspermitted-contents子のコンテンツモデル(名前維持 — ギャップ)
no-disallowed-ancestorforbiddenAncestors
require-ancestordescendantOf
no-duplicate-sibling-attr兄弟間で一意な属性
required-h1require-h1<h1> 欠如
no-duplicate-h1重複 <h1>。expected-once: false なら省略
table-row-column-alignmentno-table-cell-overlapセル重なり(error)
no-table-span-overflow行グループを越える span(error)
no-empty-table-trackアンカーのない行・列(error)
consistent-table-row-length列数の不揃い(warning)

aria-* と role は invalid-attr 系の仕様検査 3 ルールでは対象外です。ARIA ルールが担当します。

オプション連動の分割​

  • doctype: denyObsoleteType が false なら no-obsolete-doctype を付けない。
  • landmark-roles: labelEachArea が false なら require-landmark-label を付けない。
  • required-h1: expected-once が false なら no-duplicate-h1 を付けない。
  • invalid-attr: disallowAttrs があるときだけ no-restricted-attr。振り分けは invalid-attr。

エイリアスが自動で行います。手書きするなら同じ振り分けにしてください。

v5 での新規(v4 に相当なし)​

移行元のない検査です。プリセットが有効化するものは プリセット を参照。

attr-order、form-attr-references-form、head-element-order、input-list-references-datalist、itemprop-requires-itemscope、label-for-references-labelable、label-no-multiple-controls、link-types、map-id-name-match、meta-charset-position、meter-value-bounds、no-always-matching-source、no-aria-hidden-on-hidden-until-found、no-content-after-body、no-duplicate-autofocus、no-duplicate-visible-main、no-experimental-features、no-extra-selected-options、no-input-file-value、no-mismatched-aspect-ratio、no-mixed-srcset-descriptors、no-nonstandard-features、no-redundant-accessible-name、no-stray-head-or-body-tag、no-unclosed-element-at-eof、no-unpaired-srcset-sizes、no-unsupported-browser-features、progress-value-bounds、require-dialog-autofocus、sizes-auto-requires-lazy-loading、usemap-references-map、valid-importmap、valid-speculation-rules。

label-no-multiple-controls はルール名としては新規ですが、検査自体は v4 の label-has-control 内にありました。既知の移行ギャップ。

require-parent-role と tab-requires-tabpanel は v4 の wai-aria 実装には無く、エイリアスと a11y プリセットでは有効になります。ARIA。

削除​

ルール名として消える v4 組み込みは wai-aria だけです。v6 までエイリアスで 21 ルールに展開されます。

スコープ変更​

  • require-attr: v4 required-attr と同じ範囲({ name, value } 含む)。
  • label-has-control: 関連コントロールが無い <label> のみ。2 つ目のコントロールは label-no-multiple-controls。

既知の移行ギャップ​

危険

旧名がそのまま残るため 非推奨警告はありません。 生設定で旧名だけ有効だと、分割先の検査が静かに落ちます。

使い続ける v4 名自分で足す分割先
permitted-contentsno-disallowed-ancestor、require-ancestor、no-duplicate-sibling-attr
no-refer-to-non-existent-idno-broken-fragment-link
label-has-controllabel-no-multiple-controls

markuplint:html-standard は permitted-contents の兄弟と label-no-multiple-controls を既に入れています。markuplint:a11y は no-broken-fragment-link と label-has-control です。markuplint:recommended は両方を extends します。

プリセットでも残る穴:

  • markuplint:html-standard だけ では no-broken-fragment-link は入りません(a11y のみ)。no-refer-to-non-existent-id は入ります。
  • markuplint:a11y だけ では label-no-multiple-controls は入りません(html-standard のみ)。v4 の a11y では label-has-control がこの検査もしていました。

severity の変更​

v4 の既定は createRule が指定しなければ error です。

ルールv4v5
no-table-cell-overlap / no-table-span-overflow / no-empty-table-trackwarning(table-row-column-alignment)error
consistent-table-row-lengthwarning(同じ複合ルール)warning
no-duplicate-dterrorwarning
no-obsolete-attr / no-obsolete-elementerror(deprecated-*)error
no-deprecated-attr / no-deprecated-elementerror(同じ複合)warning
no-broken-fragment-linkerror(no-refer-to-non-existent-id の一部)warning
require-h1 / no-duplicate-h1error(required-h1)warning
require-adjacent-popovererror(neighbor-popovers)warning

no-consecutive-br は warning のままです。

注意

テーブルモデル 3 件の error は、v4 では警告だったマークアップで CI を落とすことがあります。

プリセットの変更​

v4.18.3 の JSON と現行 preset.*.jsonc で確認しています。

  • markuplint:code-styles: v4 は {}。いまは case-sensitive-attr-name と case-sensitive-tag-name。
  • markuplint:security: v4 は {}。いまは no-event-handler-attr。
  • markuplint:compat: v4 には無い。v5 の recommended が extends し、no-unsupported-browser-features と no-nonstandard-features を有効化(no-experimental-features はオプトインのまま)。
  • markuplint:performance: head-element-order と no-mismatched-aspect-ratio を追加。既存 nodeRules の趣旨は同じ。
  • markuplint:html-standard: v4 にあった no-duplicate-dt と no-ineffective-attr を外す。新たに no-unknown-attr / no-disallowed-attr / no-invalid-attr-value(v4 の html-standard に invalid-attr は無かった)。パース構造・srcset・フォーム・itemprop-requires-itemscope・permitted-contents の兄弟なども追加。
  • markuplint:a11y: wai-aria 相当を名前付きグループに。v4 傘の既定オフ/未実装の検査も有効。ARIA。
  • no-refer-to-non-existent-id と no-duplicate-id は a11y と html-standard の両方に残る。
  • markuplint:recommended: 従来の extends に加え compat。

どのプリセットにも入らない: attr-order、attr-value-quotes、class-naming、no-boolean-attr-value、no-default-value、no-empty-palpable-content、no-duplicate-dt、no-ineffective-attr、no-experimental-features。