コンテンツにスキップ
svelte-vitals
日本語
Esc
移動開く⌘Jプレビュー
このページの内容

a11y/unverified-id-ref · 未検証の id 参照

オプトイン: 合成が完全には解決していないルート上で、検証できない id 参照を検出します。

重大度: info · カテゴリ: a11y · オプトイン(デフォルトでは無効)

チェック内容

a11y/no-missing-id-ref がスキップせざるを得ないルート、つまり解決できないコンポーネント・スプレッド属性・{@html}・合成対象のどこかにある動的な id のいずれかにより構成を解決しきれないルートを対象に、このルールはすべての literal な id 参照を、解析が実際に見えたすべての literal な id(全ブランチ、解決済みコンポーネント、src/app.html シェル)と照合します。何にも一致しない参照は未検証として報告し、意図的に「欠落」とはしません。その id は、解析が見えなかった内容の中にまさに存在しているかもしれないからです。各検出結果は、そのルートが未解決のままである原因をファイルと行つきで示すため、手作業で内容を確認できます。2つのルールはきれいに棲み分けます。解決しきったルートは a11y/no-missing-id-ref が、それ以外はすべてこのルールが担当し、同じルートが両方から報告されることはありません。

href="#top" とテキストフラグメントのディレクティブは、姉妹ルールと同じ除外を維持します。

なぜオプトインなのか

svelte-vitals はデフォルトで誤検出ゼロを目指します。姉妹ルールは推測せずスキップし、JSON レポートの skipped マップがどこで・なぜスキップしたかを示します。このルールはその保証と引き換えに、より広い範囲をカバーします。ここでの不一致な参照は_証明済みの不具合ではなく候補_なので、有効化しない限り一切実行されません。9 アプリでの計測では、サンプリングした 31 の検出箇所のうち 8 箇所(72 件の検出のうち 49 件)が実際の不具合で、20 箇所が誤検出、3 箇所は判定不能でした。

// svelte-vitals.config.js
export default {
  rules: { 'a11y/unverified-id-ref': 'info' }
};

または1回限りなら: npx svelte-vitals --rules a11y/unverified-id-refoverrides エントリではこのルールを有効化できません。overrides は解析後の結果に適用されるためです。ただし一度グローバルに有効化すれば、overrides は通常どおりスコープを絞れます(たとえばルート配下を 'off' にするなど)。

モードによる違い

ソースモード(CLI、ダッシュボードの静的レイヤー)のみで動作します。レンダリングモード(vite build)ではプリレンダリングされたドキュメントは常に解決しきっているため、このルールはそこでは決して発火しません。レンダリング済みドキュメントは a11y/no-missing-id-ref がすべてカバーしており、このルールがビルドで有効化されている場合はプラグインが notice を出力します。

修正方法

レンダリングされたページで参照を確認してください。id が本当にどこにもレンダリングされないのであれば、a11y/no-missing-id-ref の検出結果と同じように修正します。ライブラリコンポーネントの中にある場合は id を渡すようにするか、suppressions エントリで検出を抑制してください。

無効化

オプトインであるため、有効化しないことがそのままデフォルトの無効化になります。有効化した後は、検出が指す行の直上にインラインの svelte-vitals-disable-next-line コメントを置けば抑制できます。共有コンポーネントのすべての呼び出し箇所でディレクティブを繰り返す必要がある場合は、suppressions ファイル(npx svelte-vitals --update-suppressions)がルート単位の抑制手段です。overrides でルートやパス単位に絞ることもでき、あらためて無効化するには、次のように設定します。

export default {
  rules: {
    'a11y/unverified-id-ref': 'off'
  }
};