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

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

Note

この機能は限定パブリック プレビュー段階です。 組織へのアクセスを要求するには、 パブリック プレビューにサインアップします。

機能は予告なく変更または削除される場合があります。 プレビュー機能には、サービス レベル アグリーメント (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 行を超え、必要に応じて他のファイルへの変更を含めることができます。

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自動修正を有効にします。

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

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

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

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

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

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

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

Copilot Autofix は修正を生成し、copilot-autofix/... という名前のブランチからプル リクエストを作成します。 修正が生成されると、アラートの詳細ビューの [関連するプル要求] にプル要求 が表示されます。

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

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

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

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

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

Tip

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

修正プログラムが利用できない場合

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

  • アラートの種類は現在、Copilot Autofix ではサポートされていません。
  • Copilotは、アラートが誤検知であると判断します。
  • CodeQL ではなく、カスタム クエリまたはサード パーティ製ツールによってアラートが生成されます。

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