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

ルールの改名と分割

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

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

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

カテゴリ

v4 は 5 分類(validationa11ynaming-conventionmaintainabilitystyle)。v5 は各 meta.tscategory による 9 分類です。設定ファイルには出ません。

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

naming-conventionclass-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-attrrequire-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-*roleinvalid-attr 系の仕様検査 3 ルールでは対象外です。ARIA ルールが担当します。

オプション連動の分割

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

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

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

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

attr-orderform-attr-references-formhead-element-orderinput-list-references-datalistitemprop-requires-itemscopelabel-for-references-labelablelabel-no-multiple-controlslink-typesmap-id-name-matchmeta-charset-positionmeter-value-boundsno-always-matching-sourceno-aria-hidden-on-hidden-until-foundno-content-after-bodyno-duplicate-autofocusno-duplicate-visible-mainno-experimental-featuresno-extra-selected-optionsno-input-file-valueno-mismatched-aspect-rationo-mixed-srcset-descriptorsno-nonstandard-featuresno-redundant-accessible-nameno-stray-head-or-body-tagno-unclosed-element-at-eofno-unpaired-srcset-sizesno-unsupported-browser-featuresprogress-value-boundsrequire-dialog-autofocussizes-auto-requires-lazy-loadingusemap-references-mapvalid-importmapvalid-speculation-rules

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

require-parent-roletab-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-ancestorrequire-ancestorno-duplicate-sibling-attr
no-refer-to-non-existent-idno-broken-fragment-link
label-has-controllabel-no-multiple-controls

markuplint:html-standardpermitted-contents の兄弟と label-no-multiple-controls を既に入れています。markuplint:a11yno-broken-fragment-linklabel-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-trackwarningtable-row-column-alignmenterror
consistent-table-row-lengthwarning(同じ複合ルール)warning
no-duplicate-dterrorwarning
no-obsolete-attr / no-obsolete-elementerrordeprecated-*error
no-deprecated-attr / no-deprecated-elementerror(同じ複合)warning
no-broken-fragment-linkerrorno-refer-to-non-existent-id の一部)warning
require-h1 / no-duplicate-h1errorrequired-h1warning
require-adjacent-popovererrorneighbor-popoverswarning

no-consecutive-brwarning のままです。

注意

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

プリセットの変更

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

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

どのプリセットにも入らない: attr-orderattr-value-quotesclass-namingno-boolean-attr-valueno-default-valueno-empty-palpable-contentno-duplicate-dtno-ineffective-attrno-experimental-features