コード スキャン向けの Copilot 自動修正 (プレビュー)

Copilot自動修正は、コード スキャン アラートに推奨される修正プログラムを生成する、Azure DevOps用の GitHub Advanced Security の AI を利用した機能です。 CodeQL で脆弱性またはコーディング エラーが特定されると、アラートの修正を [セキュリティの詳細設定] タブから直接生成できます。Copilot自動修正では、Copilot コーディング エージェントを使用して修正プログラムを生成し、提案された変更を含むプル要求を開きます。そのため、通常のプル要求ワークフローを通じて確認、編集、マージできます。

Note

この機能は限定パブリック プレビュー段階です。 Microsoftは現在、プレビューの追加ユーザーを受け入れていません。

機能は予告なく変更または削除される場合があります。 プレビュー機能には、サービス レベル アグリーメント (SLA) および制限付きサポートはありません。

GitHub Advanced Security for Azure DevOps は、Azure Repos と連携して動作します。 GitHub リポジトリで GitHub Advanced Security を使用する方法については、「GitHub Advanced Security」を参照してください。

Prerequisites

カテゴリ 必要条件
アクセス許可 - リポジトリのすべてのアラートの概要を表示するには、リポジトリに対する「コントリビューター」権限が必要です。
- Advanced Security でアラートを解除するには、プロジェクト管理者の権限が必要です。
- Advanced Security でアクセス許可を管理するには、プロジェクト コレクション管理者グループのメンバーであること、またはAdvanced Security: 設定の管理のアクセス許可が許可に設定されている必要があります。

高度なセキュリティの権限の詳細については、「高度なセキュリティ権限の管理」を参照してください。

  • 既定のセットアップまたは高度なセットアップを使用して、リポジトリ用に構成されたコード スキャン
  • 少なくとも 1 つの CodeQL コード スキャン アラート。

Copilot Autofix について

Copilot自動修正では、CodeQL の分析能力と、Copilot コーディング エージェントをサポートする大規模な言語モデルが組み合わせられます。 サポートされているコード スキャン アラートの修正プログラムを生成すると、Copilot自動修正によってアラートとその周辺のコードが分析され、次を含むプル要求が開きます。

  • 基になる脆弱性に対処する 推奨されるコード変更
  • アラート ID、重大度、変更の概要など、修正中のアラートの 説明

推奨される修正ではコード ベースのより広いコンテキストが考慮されるため、変更はアラートが発生した 1 行を超え、必要に応じて他のファイルへの変更を含めることができます。

Note

Copilot自動修正によって処理されるデータは、大規模言語モデル (LLM) のトレーニングには使用されません。

Important

Copilot自動修正候補は AI モデルによって生成され、正しい、完全、または安全であるとは限りません。 プル要求は常に注意深く確認し、新しい問題を発生させずにアラートが解決されることを検証し、変更をマージする前にテストします。

サポートされている言語

Copilot自動修正では、C/C++、C#、Go、Java/Kotlin、JavaScript/TypeScript、Python、Ruby、Swift など、CodeQL がコード スキャン用に分析するのと同じ言語がサポートされます。 CodeQL でサポートされている言語の現在の一覧については、「 言語とクエリのサポート」を参照してください。

Billing

Copilot自動修正は、GitHub Advanced Security for Azure DevOps ライセンスに含まれています。 修正プログラムを生成すると、組織のAzure課金メーターから AI クレジットが消費されます。

修正プログラムの生成ごとにトークンが使用されます。これには、モデルに送信されるコード コンテキストの入力トークン、推奨される変更の出力トークン、既存のコンテキストを再利用するキャッシュされたトークンが含まれます。

課金を簡単にするために、これらのトークンは、GitHub AI クレジットと呼ばれる標準ユニットに変換されます。1 クレジットは $0.01 USD です。 料金は、Azure DevOps組織にリンクされているAzure サブスクリプションに課金され、Azure Cost Managementでは別のメーターとして表示されます。

各修正プログラムのコストは、周囲のコード コンテキストのサイズと変更の複雑さによって異なります。

1 日の料金を監視するには、Azure ポータルでサブスクリプション>コスト管理>コスト分析に移動します

Copilot の自動修正を有効にする

Copilot自動修正は、組織、プロジェクト、またはリポジトリ のレベルで有効にすることができます。 より広範なスコープで自動修正を有効にすると、そのスコープ内のすべてのリポジトリに設定が適用されます。 設定を適用するリポジトリに基づいて自動修正を構成する場所を選択します。

Scope 自動修正を構成する場所
組織 組織の設定>Repositories を選択して、組織内のすべてのリポジトリに対して自動修正を有効にします。
プロジェクト Project設定>Repositories>すべてのリポジトリを選択して、project内のすべてのリポジトリに対して自動修正を有効にします。
リポジトリ Project設定>Repositories を選択し、そのリポジトリに対してのみ自動修正を有効にするリポジトリを選択します。

Copilot Autofix を有効にするには:

  1. Azure DevOps 組織 (https://dev.azure.com/{yourorganization}) にサインインします。
  2. 構成する組織、プロジェクト、またはリポジトリのスコープの設定ページに移動します。
  3. [Advanced Security]\( 高度なセキュリティ \) セクションで、[ Code Security features]\(コード セキュリティ機能 \) パネルを開きます。
  4. コード スキャン アラートの自動修正 チェック ボックスをオンにして、Copilot コーディング エージェントによって生成されたコード スキャン アラートの自動修正を作成します。
  5. [適用] を選択して変更を保存します。

[コード セキュリティ機能] パネルのスクリーンショット。[コード スキャンアラートの自動修正] チェックボックスが強調表示されています。

CodeQL は既に実行されており、リポジトリのアラートを生成している必要があります。 詳細については、「コード スキャンの設定および GitHubセキュリティ強化機能の構成を参照してください。

アラートの修正プログラムを生成する

Copilot自動修正を有効にすると、サポートされているコード スキャン アラートから修正プログラムを生成できます。

  1. Repos>Advanced Security を選択します。
  2. [ コード スキャン ] タブを選択し、アラートを選択して詳細ビューを開きます。
  3. アラートの 場所説明および推奨事項 を確認して、結果を理解します。
  4. [ 修正プログラムの生成] を選択します

右上の [修正の生成] ボタンを使用したコード スキャン アラートの詳細ビューのスクリーンショット。

Copilot Autofix が修正作業を進めている間、アラート詳細ビューには修正が進行中であることが示されます。 Copilot Autofix は、修正の準備が整うとプル リクエストを作成します。

pull request を開く前に Copilot Autofix が修正に取り組んでいることを示す、コード スキャン アラートの詳細ビューのスクリーンショット。

Copilot Autofix は修正を生成し、copilot-autofix/... という名前のブランチからプル リクエストを作成します。 pull request には Copilot Autofix タグが付けられています。このタグを使用すると、pull requests リストで自動修正 pull request を識別できます。

CodeQL アラートの場合、プル要求はアラートの詳細ビューの [関連するプル要求 ] の下に自動的に表示され、生成と完了の進行状況として引き続き更新されるため、ページを更新する必要はありません。

[関連するプル要求] の下のアクティブな自動修正プル要求を示すコード スキャン アラートの詳細ビューのスクリーンショット。

Copilot自動修正によってアラートのコード変更が生成されない場合、分岐またはプル要求は作成されません。また、アラートの詳細ビューでプル要求がリンクされることはありません。 この場合は、アラートを手動で修復します。 詳細については、「 修正プログラムは使用できません」を参照してください。

修正内容を確認してマージする

Copilot Autofix が作成するプル リクエストは、他の Azure Repos のプル リクエストと同様に動作します。 その説明は、修正プログラムが対処するアラートをまとめたものです。

Copilot Autofix によって作成されたプル リクエストのスクリーンショット。説明には、アラート ID、重大度、修正の詳細が表示されています。

Copilot自動修正ラベルは、自動修正プル要求を識別します。

  1. アラートの Related pull requests セクション、または Repos>Pull requests からプル要求を開きます。
  2. 影響を受けるすべてのファイルの [ ファイル ] タブで、提案された変更を確認します。
  3. コード スタイル、名前付け規則、またはプロジェクトの要件を一致させる必要がある場合は、変更を編集します。
  4. 通常のレビュー ワークフローを使用して、pull request を承認して完了します。

プル要求のマージと次のコード スキャンの実行が完了すると、修正によって基になる脆弱性が削除されると、アラートは自動的に閉じます。

Tip

生成された修正は、最終的な答えではなく、出発点です。 pull request を他の変更と同様に扱います。マージする前に、必要に応じて確認し、テストし、追加のレビュー担当者を要求します。

Copilot の自動修正の問題を解決する

修正プログラムが生成されましたが、コミットまたはプッシュできませんでした

Copilot自動修正では、コミット作成者の電子メールとしてnoreply@dev.azure.comが使用されます。 コミット作成者の電子メール検証ポリシーでこのアドレスが許可されていない場合、Copilot Autofix はコード変更を生成できますが、pull request を作成するためにコミットまたはプッシュすることはできません。

アラートの詳細ビューには、ブロックされたコミット作成者の電子メールを識別するエラーが表示されます。

コミット作成者の電子メールが許可されていないため、Copilot自動修正で生成された修正プログラムをコミットできなかったことを示すコード スキャン アラートのスクリーンショット。

コミット作成者の電子メール検証ポリシーで許可されている電子メール パターンに noreply@dev.azure.com を追加します。

  1. プロジェクト 設定>Repositories を選択します。
  2. [すべてのリポジトリ] を選択してプロジェクト レベルのポリシーを更新するか、ポリシーを持つリポジトリを選択します。
  3. [ポリシー] を選択します。
  4. [ リポジトリ ポリシー] で、[ 作成者の電子メールの検証のコミット] を見つけます。
  5. 許可されている電子メール パターンに noreply@dev.azure.com を追加します。
  6. コード スキャン アラートに戻り、[ 再試行の修正] を選択します。

許可されたコミット作成者の電子メール パターンに Copilot Autofix 電子メールを追加するリポジトリ ポリシー設定のスクリーンショット。

実行が失敗する

Copilot自動修正の実行を完了できない場合、アラートには顕著なエラー状態が表示されるため、実行が成功しなかったことをすぐに確認できます。 エラー状態から、実行を再試行して新しい修正プログラムを生成できます。

Copilot自動修正の実行が失敗した状態で実行を再試行するオプションを示すコード スキャン アラートのスクリーンショット。

一時的な理由や、実行で使用可能なコード変更が生成されない場合は、実行が失敗する可能性があります。 実行を再試行して、修正プログラムをもう一度生成します。

修正プログラムは使用できません

Copilot自動修正では、すべてのアラートに対して修正プログラムを生成することはできません。 次の場合、修正プログラムを使用できない場合があります。

  • アラートの種類は現在、Copilot Autofix ではサポートされていません。
  • Copilotは、アラートが誤検知である可能性があることを判断します。
  • CodeQL ではなく、カスタム クエリまたはサード パーティ製ツールによってアラートが生成されます。
  • Copilot自動修正は実行されますが、コードの変更は生成されません。 この場合、ブランチまたはプル要求は作成されません。

Copilot自動修正によって、アラートが誤検知である可能性があり、変更が生成されないと判断された場合、アラートの詳細ビューに結果が表示されます。 実行を確認するか、修正を再試行できます。

コード スキャン アラートの詳細ビューのスクリーンショット。Copilot がそのアラートは誤検知の可能性があると判断し、修正を提示しなかったこと、および実行結果を表示するか修正を再試行するためのオプションが表示されています。

修正プログラムが利用できない場合は、アラートの 推奨事項 のセクションを使用して修復するか、アラートを手動で無視します。 詳細については、「アラートの詳細」を参照してください。