Skip to main content

コンテンツ リンターを使用する

コンテンツ リンターを使って、コントリビューションのエラーをチェックできます。

GitHub Docs コンテンツ リンターについて

私たちのコンテンツリンターは、Markdown コンテンツにスタイルガイドのルールを適用します。

リンターでは、markdownlint をフレームワークとして使ってチェックを実行し、欠陥を報告し、可能な場合はコンテンツを自動的に修正します。 このフレームワークは、柔軟に特定のルールを実行し、わかりやすいエラー メッセージを提供し、エラーを修正することができます。 GitHub Docs コンテンツ リンターは、いくつかの既存の markdownlint ルールと追加のカスタム ルールを使って、content ディレクトリと data ディレクトリ内の Markdown コンテンツをチェックします。 カスタム ルールでは、markdownlint フレームワークでまだ使用できないチェックか、GitHub Docs コンテンツに固有のチェックを実装します。 ルールによって、Markdown と Liquid の両方の構文がチェックされます。

GitHub Docs のコンテンツ リンターを実行する

GitHub Docs コンテンツ リンターは、事前コミット時に自動的に実行されますが、手動で実行することもできます。

事前コミット時にリンターを自動的に実行する

ローカルでコンテンツを記述し、コマンド ラインを使ってファイルをコミットすると、それらのステージングされたファイルはコンテンツ リンターによって自動的にリンティングされます。 警告とエラーの両方が報告されますが、コミットの完了を妨げるのはエラーのみです。

エラーが報告された場合、コミットは完了しません。 報告されたエラーを修正し、変更したファイルを再追加して、変更を再度コミットする必要があります。 報告されたエラーはすべて修正して、GitHub Docs スタイル ガイドに違反するエラーがコンテンツに含まれないようにする必要があります。 警告が報告された場合は、必要に応じて修正するかどうかを選択できます。

コンテンツをローカルで記述する場合、コマンド ラインで自動的に修正できるルールがいくつかあります。 修正できるエラーを自動的に修正する場合は、「修正できるエラーを自動的に修正する」をご覧ください。

GitHub UI でファイルを編集している場合、自動的にエラーを修正したり、コミット時にリンターを実行することはできません。しかし、コンテンツが重大度errorのルールに違反している場合、CI が失敗します。

リンターを手動で実行する

ステージング済みおよび変更されたファイルに対してリンターを実行する

次のコマンドを使って、ステージングされたファイルと変更されたファイルに対してリンターをローカルで実行します。 warningerror 両方の重大度の欠陥が出力されます。

npm run lint-content

ステージング済みおよび変更されたファイルに対してリンターを実行しエラーだけを報告する

次のコマンドを使ってステージングされたファイルと変更されたファイルに対してリンターをローカルで実行すると、重大度 error の欠陥だけが報告されます。

npm run lint-content -- --errors

特定のファイルまたはディレクトリに対してリンターを実行する

次のコマンドを使うと、特定のファイルまたはディレクトリに対してリンターをローカルで実行できます。 複数のパスはスペースで区切ってください。 ファイルとディレクトリの両方を同じコマンドに含めることができます。

Shell
npm run lint-content -- \
  --paths content/FILENAME.md content/DIRECTORY

修正できるエラーを自動的に修正する

エラーの説明に fixable: true が指定されている場合は、次のコマンドを使って自動的に修正できます。

次のコマンドを実行すると、ステージングされたファイルと変更されたファイルだけが修正されます。

npm run lint-content -- --fix

次のコマンドを実行すると、特定のファイルまたはディレクトリだけが修正されます。

npm run lint-content -- \
  --fix --paths content/FILENAME.md content/DIRECTORY

リンター ルールの特定のセットを実行する

以下のコマンドを使うと、1 つ以上の特定のリンター ルールを実行できます。 これらの例では、heading-increment ルールと code-fence-line-length ルールが実行されます。 heading-increment code-fence-line-length を、実行する 1 つ以上のリンター エイリアスに置き換えます。 このオプションに渡すことができるリンター ルールの一覧を表示するには、npm run lint-content -- --help を実行します。 リンター ルールの短い名前 (例: MD001) または長い名前 (例: heading-increment) を使用できます。

すべてのステージングされたファイルと変更されたファイルに対して、指定したリンター ルールを実行します。

npm run lint-content -- \
  --rules heading-increment code-fence-line-length

特定のファイルまたはディレクトリに対して、指定したリンター ルールを実行します。

npm run lint-content -- \
  --rules heading-increment code-fence-line-length \
  --path content/FILENAME.md content/DIRECTORY

コミット フックをバイパスする

リンターが導入していないエラーをキャッチした場合は、変更をコミットするときに--no-verify オプションを 使用して git コミット フックをバイパスできます。

git commit -m 'MESSAGE' --no-verify

コンテンツ リンター スクリプトのヘルプ メニューを表示する

npm run lint-content -- --help

リンティング規則

各ルールは src/content-linter/style 内のファイルで構成されます。ここで、ルールの重大度が定義されます。

変更を main ブランチにマージする前に、エラーを解決する必要があります。 警告を解決する必要がありますが、変更が main ブランチにマージされるのを妨げるものではありません。 コンテンツに警告違反がなくなると、ほとんどのルールは最終的にエラーに昇格します。

ルールの IDルール名説明重要度Tags
MD001heading-increment見出しレベルは、一度に 1 レベルだけ増分する必要がありますエラー見出し
MD011no-reversed-links逆リンク構文エラーlinks
MD014commands-show-output出力を表示しないコマンドの前に使用するドル記号エラーコード
MD018no-missing-space-atxatx スタイルの見出しでハッシュの後にスペースがありませんエラー見出し、atx、スペース
MD019no-multiple-space-atxatx スタイルの見出しでハッシュの後に複数のスペースがありますエラー見出し、atx、スペース
MD023heading-start-left見出しは行の先頭から始まる必要がありますエラー見出し、スペース
MD027no-multiple-space-blockquoteブロック引用記号の後に複数のスペースがありますエラーブロック引用、空白文字、インデント
MD029ol-prefix順序指定済みリスト アイテムのプレフィックスエラーol
MD030list-marker-spaceリスト マーカーの後のスペースエラーol、ul、空白文字
MD031blanks-around-fencesフェンスされたコード ブロックは、空白行で囲む必要がありますエラーコード、blank_lines (空白行)
MD037no-space-in-emphasis複数の強調マーカー内のスペースエラー空白文字、強調
MD039no-space-in-linksリンク テキスト内のスペースエラー空白文字、リンク
MD040fenced-code-languageフェンスされたコード ブロックは言語を指定する必要がありますエラーコード、言語
MD042no-empty-links空のリンクがありませんエラーlinks
MD050strong-style強力なスタイルエラー強調
GH001no-default-alt-text画像に、意味のある代替テキスト (alt text) を割り当てる必要がありますエラーアクセシビリティ、画像
GH002no-generic-link-text
Learn moreClick here のような汎用リンク テキストを避けてくださいエラーアクセシビリティ、リンク
GHD001link-punctuation内部リンク タイトルに句読点を含めてはなりませんエラーリンク、URL
GHD002internal-links-no-lang内部リンクに、ハードコーディングされた言語コードを含めてはなりませんエラーリンク、URL
GHD003internal-links-slash内部リンクは / で始める必要がありますエラーリンク、URL
GHD004image-file-kebab-caseイメージ ファイル名には kebab-case を使用する必要がありますエラーimages
GHD005hardcoded-data-variable"personal access token" (個人用アクセス トークン)を含む文字列は、代わりに製品変数を使用する必要がありますエラーsingle-source
GHD006internal-links-old-version内部リンクに、古いバージョン管理構文を使用してハードコーディングされたバージョンを含めてはなりませんエラーリンク、URL、バージョン管理
GHD007code-annotationsMarkdown 内で定義するコード注釈に、特定のレイアウトに対応する frontmatter プロパティを含める必要がありますエラーコード、機能、注釈、frontmatter
GHD008early-access-references早期アクセスではないファイルは、早期アクセスと早期アクセス ファイルのどちらも参照してはなりませんエラー機能、早期アクセス
GHD009frontmatter-early-access-references早期アクセスではないファイルに、早期アクセスを参照する frontmatter を含めてはなりませんエラーfrontmatter、機能、早期アクセス
GHD010frontmatter-hidden-docsfrontmatter プロパティ hidden を持つアーティクルは、特定の製品内にのみ配置できますエラーfrontmatter、機能、早期アクセス
GHD012frontmatter-schemaFrontmatter はスキーマに準拠している必要がありますエラーfrontmatter、スキーマ
GHD013github-owned-action-referencesGitHub所有のアクション参照はハードコーディングしないでくださいエラー機能、アクション
GHD014liquid-data-references-definedLiquid データまたはインデントされたデータ参照が、値を持たないコンテンツまたはデータ ディレクトリに存在しないコンテンツの中で見つかりましたエラーliquid
GHD015liquid-data-tag-formatLiquid データまたはインデントされたデータ参照タグは、正しい形式である必要があり、正しい数の引数の番号とスペーシングが必要ですエラーliquid、形式
GHD016liquid-quoted-conditional-argLiquid の条件付きタグは、条件付き引数を引用符で囲んではなりませんエラーliquid、形式
GHD017frontmatter-liquid-syntaxFrontmatter プロパティは、有効な Liquid を使用する必要がありますエラーliquid、frontmatter
GHD018liquid-syntaxMarkdown コンテンツは、有効な Liquid を使用する必要がありますエラーliquid
GHD019liquid-if-tags引数が有効なバージョンの場合は、ifversion タグの代わりに Liquid if タグを使用する必要がありますエラーliquid、バージョン管理
GHD020liquid-ifversion-tagsLiquid ifversion タグには、有効なバージョン名を引数として含める必要がありますエラーliquid、バージョン管理
GHD021yaml-scheduled-jobsスケジュールされたワークフローを含む YAML スニペットは、正時に実行してはなりません。また、一意である必要がありますエラー機能、アクション
GHD022liquid-ifversion-versionsLiquid の ifversionelsifelse 各タグを有効にする必要があり、サポートされていないバージョンが含まれていてはなりません。エラーliquid、バージョン管理
GHD031image-alt-text-exclude-words画像の代替テキストは、「image」や「graphic」などの単語で始めてはなりませんエラーアクセシビリティ、画像
GHD032image-alt-text-end-punctuation画像の代替テキストは、句読点で終わる必要がありますエラーアクセシビリティ、画像
GHD033incorrect-alt-text-length画像の代替テキストは 40 から 150 文字にする必要がありますエラーアクセシビリティ、画像
GHD034frontmatter-curly-quotesFrontmatter のタイトルと概要に、曲線的な引用符 (有向引用符) を含めないようにするエラーfrontmatter、format
GHD036image-no-gif画像は、GIF と、スタイルガイド参照 contributing/style-guide-and-content-model/style-guide.md#images のどちらであってもなりませんエラーimages
GHD038expired-content期限切れのコンテンツは修復する必要があります。警告expired
GHD039expiring-soon間もなく期限切れになるコンテンツは、事前に対処する必要があります。警告expired
GHD040table-liquid-versioningテーブルは、適切な liquid バージョン管理形式を使用する必要がありますエラーテーブル
GHD041third-party-action-pinningサード パーティのアクションを使用するコード例では、必ず完全なコミット SHA に固定する必要がありますエラー機能、アクション
GHD042liquid-tag-whitespaceLiquid タグは、1 つの空白文字で開始し、1 つの空白文字で終了する必要があります。 Liquid タグの引数は、ただ 1 個の空白文字で区切る必要があります。エラーliquid、形式
GHD043link-quotation内部リンクのタイトルは引用符で囲んではなりませんエラーリンク、URL
GHD045code-annotation-comment-spacing注釈ブロック内にあるコード コメントは、コメント文字の後に厳密にただ 1 個のスペースを含める必要がありますエラーコード、コメント、注釈、スペーシング
GHD046outdated-release-phase-terminology古いリリース フェーズの用語は、現在のGitHub用語に置き換える必要がありますエラー用語、一貫性、release-phases (リリース フェーズ)
GHD047table-column-integrityテーブルのすべての行で列数が一致している必要がありますエラーテーブル、アクセシビリティ、形式
GHD051frontmatter-versions-whitespaceバージョンの frontmatter に不要な空白文字が含まれていてはなりませんエラーfrontmatter、バージョン
GHD054third-party-actions-reusableサード パーティのアクションを使用するコード例に、再利用可能な免責事項を含める必要がありますエラーアクション、再利用可能、サード パーティ
GHD056frontmatter-landing-carouselsカルーセルを含めることができるのはランディング ページのみであり、重複する記事はなく、すべての記事が存在する必要がありますエラーフロントマター、ランディングページ、カルーセル
GHD057ctas-schemaCTA URL はスキーマに準拠している必要がありますエラーCTAS、スキーマ、URL
GHD058journey-tracks-liquidジャーニートラックのプロパティでは、有効なLiquid 構文を使用する必要があります。エラーfrontmatter、ジャーニー トラック、liquid
GHD059journey-tracks-guide-path-exists体験トラックのガイドパスは、既存のコンテンツファイルを参照する必要がありますエラーフロントマター、ジャーニートラックス
GHD060journey-tracks-unique-ids体験トラック ID は、ページ内で一意である必要がありますエラーfrontmatter、journey-track、unique-ids
GHD061frontmatter-hero-imageヒーロー イメージ のパスは絶対パス、拡張子なし、および /assets/images/banner-images/ 内の有効なイメージを指す必要があります。エラーフロントマター, 画像
GHD062フロントマターイントロリンクintroLinks キーは、product_landingのデータ/ui.ymlで定義されている有効なキーである必要がありますエラーfrontmatter、単一ソース
GHD063フロントマター-チルドレン子フロントマッター パスが存在する必要があります。 クロスプロダクト インクルージョンの相対パスと絶対 /content/ パスをサポートします。エラーfrontmatter、子
GHD065frontmatter-content-typeコンテンツ タイプ ディレクトリ内のコンテンツ ファイルには、親ディレクトリと一致する contentType frontmatter プロパティが必要です。エラーfrontmatter、content-type
GHD066フロントマター文書チームメトリクスパスに docsTeamMetrics 値が含まれるアーティクルは、その値を docsTeamMetrics frontmatter プロパティに含める必要があります。エラーフロントマター、ドキュメントチームメトリクス
search-replace非推奨の liquid 構文: octicon-使用されている octicon の liquid 構文は非推奨です。 代わりにこの形式を使用してください octicon "<octicon-name>" aria-label="<Octicon aria label>"エラー
search-replace非推奨の Liquid 構文: site.data非推奨の Liquid データ構文の発生をキャッチします。エラー
search-replacedeveloper-domaindeveloper.gitub.com ドメインの発生をキャッチします。エラー
search-replacedocs-domaindocs.github.com ドメインの発生をキャッチします。エラー
search-replacehelp-domainhelp.github.com ドメインの発生をキャッチします。エラー
search-replacetodocs-placeholderTODOCS プレースホルダーの発生をキャッチします。エラー

リンティング規則の構文

一部のリンティング ルールでは、記事に追加できる HTML コメントに基づいて警告またはエラーが返されます。

期限切れ間近および期限切れのコンテンツの構文

ルール GHD038GHD039 は、手動で有効期限日が指定されたコンテンツをチェックします。 指定した日付の 14 日前に、コンテンツ リンターは、コンテンツが間もなく期限切れであることを示す警告を返します。 指定した日付以降、コンテンツ リンターは警告を返し、修復対象のコンテンツにフラグを設定します。

コンテンツに有効期限日を追加するには、次の形式で有効期限日を含む HTML タグでラップします: <!-- expires yyyy-mm-dd --> <!-- end expires yyyy-mm-dd -->

以下を使用してください。

This content does not expire.
<!-- expires 2022-01-28 -->
This content expires on January 28, 2022.
<!-- end expires 2022-01-28 -->
This content also does not expire.

期限切れのタグを HTML table要素に配置する場合は、セルだけでなく行全体をタグが囲むようにしてください。 次に例を示します。

<!-- expires 2024-06-28 -->
<tr>
<td>
macOS
</td>
<td>
The <code>macos-11</code> label is 閉鎖 and will no longer be available after 28 June 2024.
</td>
</tr>
<!-- end expires 2024-06-28 -->

リンター規則を抑制する

まれに、1 つまたは複数のリンター ルールに違反するものを文書化することが必要になる場合があります。 このような場合は、Markdown ファイルにコメントを追加することで、ルールを抑制できます。 すべてのルールまたは特定のルールを無効にすることができます。 制限するルールは常にできるだけ少なくしてください。 ファイル全体、Markdown ファイルのセクション、特定の行、または次の行のルールを無効にすることができます。

たとえば、逆リンク構文をチェックする正規表現 (^|/)[Cc]+odespace/ を含むアーティクルを作成する場合、逆リンクをチェックする MD011 ルールがトリガーされます。 次のコメントを追加することで、その特定の行でルール MD011 を無効にすることができます。

(^|/)[Cc]+odespace/ <!-- markdownlint-disable-line MD011 -->

無視したい行がコード ブロック内にある場合は、次のコメントで囲むことで、コード ブロックを無視できます。

<!-- markdownlint-disable MD011 -->
```
(^|/)[Cc]+odespace/
```
<!-- markdownlint-enable MD011 -->

これらのコメントを使用して、ルールを有効または無効にすることができます。

コメント効果
<!-- markdownlint-disable -->すべてのルールを無効にする
<!-- markdownlint-enable -->すべてのルールを有効にする
<!-- markdownlint-disable-line -->現在の行のすべてのルールを無効にする
<!-- markdownlint-disable-next-line -->次の行のすべてのルールを無効にする
<!-- markdownlint-disable RULE-ONE RULE-TWO -->
<!-- markdownlint-enable RULE-ONE RULE-TWO -->名前ごとに 1 つまたは複数のルールを有効にする
<!-- markdownlint-disable-line RULE-NAME -->現在の行の名前ごとに 1 つまたは複数のルールを無効にする
<!-- markdownlint-disable-next-line RULE-NAME -->次の行の名前ごとに 1 つまたは複数のルールを無効にする