Skip to main content

GitHub Copilot コード レビューのコーディング ガイドラインの構成

カスタム コーディング ガイドラインで Copilot コード レビュー をカスタマイズする方法について説明します。

Note

カスタム コーディング ガイドラインは、Copilot コード レビュー の パブリック プレビュー の選ばれた参加者のみが使用でき、GitHub Copilot Enterprise に対するサブスクリプションの一部としてのみ利用できます。

コーディング ガイドラインについて

自然言語で書かれたカスタム コーディング ガイドラインを使って、Copilot コード レビュー をカスタマイズできます。 Copilot コード レビュー の詳細については、「GitHub Copilot コード レビューの使用」を参照してください。

コーディング ガイドラインを使うと、Copilot は、organization の固有のコーディング スタイルとベスト プラクティスに基づいてフィードバックを提供できます。

Copilot コード レビュー は大規模言語モデルを搭載しているため、リンターまたは静的分析ツールではカバーされていないコーディング ガイドラインを適用するのに役立ちます。

コーディング ガイドラインは、リポジトリ レベルで構成されます。 リポジトリごとに最大 6 つのコーディング ガイドラインを作成して有効にできます。

Note

  • コーディング ガイドラインは、Copilot のコード レビューでサポートされている言語でのみ機能します。 サポートされている言語の一覧については、「GitHub Copilot コード レビューの使用」を参照してください。
  • コーディング ガイドラインは、Copilot によって行われるコード レビューにのみ適用されます。 このガイドラインは、Copilot のコード補完候補や、Copilot Chat の応答で提案されるコードには影響しません。

コーディング ガイドラインについて行って良いことと悪いこと

  • 良い 平易で明確で簡潔な言語を使って、コーディング ガイドラインを記述する。
  • 良い Copilot が模索する必要のあるもの、つまり、コードに記述されてほしいものとほしくないものを、できるだけ具体的に指定する。
  • 良い 後述する「コーディング ガイドラインの例」を見て参考にする。
  • 悪い コーディング ガイドラインを使って、リンターまたは静的分析ツールで対応できるスタイル ガイドラインを適用しようとする。
  • 悪い あいまいな、または何通りにも解釈できる表現を使う。
  • 悪い 複数の異なるアイデアを 1 つのコーディング ガイドラインに盛り込もうとする。

コーディング ガイドラインの作成

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [Code & automation] セクションで、 Copilot をクリックしてから、[Code review] をクリックします。

  4. [Create guideline] をクリックします。

  5. [Name] で、コーディング ガイドラインの名前を指定します。

  6. [Description] で、コーディング ガイドラインの説明を最大 600 文字で指定します。 これは、Copilot がコーディング スタイルを理解し、コメントを残すべきときを判断するために使われます。

    説明の書き方は、Copilot が生成するコメントの品質に大きな影響を与えます。 効果的なコーディング ガイドラインの書き方については、前述の「コーディング ガイドラインについて行って良いことと悪いこと」と後述する「コーディング ガイドラインの例」を参照してください。

  7. 必要に応じて、[Add file path] をクリックしてパスのパターンを追加し、特定のファイルの種類またはパスにコーディング ガイドラインを制限します。

    fnmatch 構文を使い、任意の文字列に一致するワイルドカードとして * を使って、ターゲットのパスを定義できます。

    GitHub では File::FNM_PATHNAME フラグを File.fnmatch 構文で使うため、* のワイルドカードがディレクトリの区切り記号 (/) と照合されません。 たとえば、qa/* は、qa/ で始まり、1 つのスラッシュを含むすべてのブランチと照合されますが、qa/foo/bar とは照合されません。 qa の後には、qa/**/* を使用して任意の数のスラッシュを含めることができます。これは、たとえば qa/foo/bar/foobar/hello-world と一致します。 qa**/**/* を使い qa の文字列を拡張して、より包括的にすることもできます。

    構文のオプションについて詳しくは、fnmatch のドキュメントを参照してください。

  8. コーディング ガイドラインをテストして、期待どおりに動作することを確認します。

    1. [Add sample] をクリックします。
    2. 独自のサンプルを追加します。または、 [Generate code sample] をクリックして、タイトルと説明に基づいてコード サンプルを自動的に生成します。
    3. [Save] をクリックして、コード サンプルを保存します。
    4. [Run] をクリックし、サンプルに対してコーディング ガイドラインをテストします。
  9. [Save guideline] をクリックし、コーディング ガイドラインを保存して有効にします。

コーディング ガイドラインを使用したレビューの実行

Copilot にレビューを要求すると、リポジトリの有効なコーディング ガイドラインを自動的に使ってコードのレビューが行われます。 詳しくは、「GitHub Copilot コード レビューの使用」をご覧ください。

コーディング ガイドラインに基づいて生成されたコメントには、そのソースを明確に示すメッセージが含まれます。

カスタム コーディング ガイドラインから生成されたコメントのスクリーンショット。

コーディング ガイドラインの例

例 1: マジック ナンバーの使用を避ける

タイトル: Avoid using magic numbers

説明: Don't use magic numbers in code. Numbers should be defined as constants or variables with meaningful names.

パス パターン: **/*.py

例 2: SQL クエリで SELECT * を使用しない

タイトル: Don't use `SELECT *` in SQL queries

説明: Don't use `SELECT *` in SQL queries. Always specify the columns you want to select. `COUNT(*)` is allowed.

パス パターン: なし (SQL クエリはコードに埋め込まれる可能性があるため、すべてのファイルの種類に適用します)。

例 3: HTTP 要求に fetch を使用する

タイトル: Use `fetch` for HTTP requests

説明: Use `fetch` for HTTP requests, not `axios` or `superagent` or other libraries.

パス パターン: **/*.ts**/*.js**/*.jsx**/*.tsx

例 4: 常にメトリックに現在の環境でタグを付ける

タイトル: Always tag metrics with the current environment

説明: Always include a `env` tag with the current environment when emitting metrics, for example, `env:prod` or `env:dev`.

パス パターン: */*.go*/*.java