ギットハブ コパイロット チャットアラートについてcode scanningに質問する
GitHub Copilot Enterprise ライセンスを使用すると、組織内のリポジトリのセキュリティ アラート (コパイロットチャット アラートなど) をより深く理解するためのヘルプをcode scanningに依頼できます。 「GitHubでGitHub Copilotに質問する」を参照してください。
でアラートを修正する Copilot
メモ
この機能は パブリック プレビュー であり、変更される可能性があります。 Copilot クラウドエージェント Copilot の自動修正はリポジトリで使用できる必要があります。
code scanningアラートをCopilotに割り当てて、アラートを修正することができます。 アラートを割り当てると、エージェント セッションが開始されます。 Copilot クラウドエージェント コードベースを調査し、修正プログラムを生成して検証し、pull request を開きます。
各エージェント型自動修正セッションは、Copilot クラウドエージェント セッションとして請求され、AI credits を消費します。 「クラウド エージェントGitHub Copilotについて」を参照してください。
個々のアラートを Copilotに割り当てるには:
- GitHub で、リポジトリのメイン ページに移動します。
- リポジトリ名の下にある [ Security and quality ] タブをクリックします。[ Security and quality] タブが表示されない場合は、 ドロップダウン メニューを選択し、[ Security and quality] をクリックします。
- 左側のサイドバーで、 [Code scanning] をクリックします。
- アラートの名前をクリックします。
- ページ上部の 割り当て先Copilot をクリックします。
アラートを Copilot に一括で割り当てることもできます。
- code scanningアラート バックログまたはセキュリティ キャンペーンから、1 ~ 25 個のアラートを選択し、Copilotに割り当てます。これは、選択したアラートを 1 つのプル要求で解決するために機能します。 「セキュリティ キャンペーンでのアラートの修正」を参照してください。
- アラートの担当者を
copilot-swe-agent[bot]に設定して、REST API を使用します。 「コード スキャン用の REST API エンドポイント」を参照してください。
通常、数分以内 Copilot 、 Copilotによって作成された下書きプル要求が開き、修正の概要と実行された検証手順が示されます。 エージェント セッション ログで詳細を確認し、pull request にコメントを付けて、 Copilotをメンションして、反復処理を依頼します。
Copilot クラウドエージェント は、ベスト エフォートベースで修正プログラムを検証します。 修正プログラムを検証できない場合、またはアラートが誤検知である可能性があると考えられる場合は、pull request でそう言います。
推奨される修正プログラムの生成
リポジトリ Copilot クラウドエージェント 使用できない場合でも、 GitHub Copilotの自動修正機能 を使用して、アラートに対して推奨される 1 ステップの修正プログラムを生成できます。
メモ
GitHub Copilot の使用には、GitHub Copilotの自動修正機能 のサブスクリプションは不要です。 Copilot の自動修正 は、GitHub.com のすべてのパブリック リポジトリだけでなく、GitHub Code Security のライセンスを持つ organization や Enterprise が所有する内部またはプライベート リポジトリでも使用できます。
- GitHub で、リポジトリのメイン ページに移動します。
- リポジトリ名の下にある [ Security and quality ] タブをクリックします。[ Security and quality] タブが表示されない場合は、 ドロップダウン メニューを選択し、[ Security and quality] をクリックします。
- 左側のサイドバーで、 [Code scanning] をクリックします。
- アラートの名前をクリックします。
- 修正をCopilot の自動修正提案できる場合は、ページの上部にある [修正プログラムの生成] をクリックします。
- 修正候補が生成されたら、ページの下部にある [修正プログラムを含む PR を作成] をクリックして修正ピログラムを含むプル リクエストを自動的に生成できます。 既定のブランチから新しいブランチが作成され、生成された 修正プログラムがコミットされ、ドラフトのプル リクエストが作成されます。 その他の修正プログラムと同様に、提供産された修正プログラムはテスト、編集できます。
履歴アラート エンドポイントで Autofix API を使用すると、提案された修正プログラムを生成、取得、コミットすることもできます。
Copilot の自動修正 アラートの code scanning では、あらゆる状況におけるすべてのアラートに対して修正策を生成することはできません。 この機能はベスト エフォート ベースで動作し、常に成功する保証はありません。 自動的に生成されるフィックスの制限については、「提案の制限事項」を参照してください。
アラート 手動で修正する
リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリがプルリクエストに対して実行されるようにスケジュールcode scanningされている場合は、あなたの修正を反映したプルリクエストを提出することをお勧めします。 これにより、変更の code scanning 分析がトリガーされ、修正によって新しい問題が発生しないことをテストできます。 「Pull RequestでCode scanningアラートをトリアージする」を参照してください。
GitHubを離れることなくチームのワークフローで修復作業を追跡するには、アラートを問題にリンクできます。 「コード スキャンアラートをGitHubの問題にリンクする」を参照してください。
自由テキスト検索またはフィルターを使ってアラートの一部を表示し、一致するすべてのアラートをクローズ済みとマークすることができます。
あるブランチでは解決されたアラートが、別のブランチでは解決されていないことがあります。 アラートの概要で "[ブランチ]" フィルターを使用すると、特定のブランチでアラートが修正されているかどうかを確認できます。
![ブランチ オプションが展開されたアラート ビューのスクリーンショット。 [ブランチ] フィルターに濃いオレンジ色の下線が表示されます。](/assets/cb-232036/images/help/repository/code-scanning-branch-filter.png)
既定ではないブランチでフィルター処理したのと同じアラートが、既定のブランチに存在する場合、そのアラートのアラート ページには、その状態が既定ではないブランチでの状態と競合する場合でも、既定のブランチのアラートの状態のみが反映されることに注意してください。 たとえば、アラートの概要の branch-x の [Open](オープン) リストに表示されるアラートは、そのアラートが既定のブランチで既に修正されている場合、アラート ページに "Fixed"(修正済み) の状態で表示される場合があります。 フィルター処理したブランチのアラートの状態は、アラート ページの右側の [Affected branches](影響を受けるブランチ) セクションで確認できます。
メモ
複数の構成を使用して code scanning を実行すると、複数の構成によって同じアラートが生成されることがあります。 すべての構成を定期的に実行する場合を除いて、ある構成では解決されており、別の構成では解決されていないアラートが表示される可能性があります。 これらの古い構成とアラートは、ブランチから削除できます。 ブランチからの古い構成とアラートの削除を参照してください。
アラートを無視する
アラートをクローズする方法は2つあります。 コード中の問題を修正するか、アラートを却下できます。
アラートを無視することは、修正する必要がないと思われるアラートを閉じる方法です。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 アラートは、コード内の code scanning 注釈から、または [ Security and quality ] タブ内の概要リストから無視できます。
アラートを却下すると:
- それはすべてのブランチで却下されます。
- アラートはプロジェクトの現在のアラート数から除外されます。
- アラートはアラートのサマリの"Closed"リストに移動されます。必要な場合は、そこからアラートを再オープンできます。
- アラートを閉じた理由がログに記録されます。
- 必要に応じて、無視した理由をコメントに残し、アラートを無視したコンテキストを記録することもできます。
- 次回 code scanning 実行しても、同じコードでアラートは生成されません。
アラートを無視する:
- GitHub で、リポジトリのメイン ページに移動します。
- リポジトリ名の下にある [ Security and quality ] タブをクリックします。[ Security and quality] タブが表示されない場合は、 ドロップダウン メニューを選択し、[ Security and quality] をクリックします。
- 左側のサイドバーで、 [Code scanning] をクリックします。
- アラートを却下したい場合、そのアラートをまず調べて、却下する正しい理由を選択できるようにすることが重要です。 調べたいアラートをクリックしてください。
- アラートを確認してから Dismiss alert をクリックし、アラートをクローズする理由を選ぶか入力します。
![アラート チェック エラーのスクリーンショット。 [アラートを無視] ボタンが、濃いオレンジ色で強調表示され、[閉じる] ドロップダウンが表示されます。](/assets/cb-126828/images/help/repository/code-scanning-alert-dropdown-reason.png)
dismissed_comment エンドポイントの alerts/{alert_number} に含まれます。 詳しくは、「コード スキャン用の REST API エンドポイント」をご覧ください。
たとえばコードがサポートされていないサニタイズ ライブラリを使っているといった理由で、CodeQL のアラートを擬陽性の結果として却下する場合、CodeQL に貢献して分析を改善することを検討してください。 CodeQL の詳細については、「CodeQL に貢献する」を参照してください。
複数のアラートを一度に却下する
同じ理由で却下したい複数のアラートがプロジェクトにあるなら、アラートのサマリからそれらをまとめて却下できます。 通常は、リストをフィルタしてマッチするアラートをすべて却下することになるでしょう。 たとえば、プロジェクト中で特定の共通脆弱性タイプ (CWE)の脆弱性がタグ付けされた現在のアラートをすべて却下したいことがあるでしょう。
無視されたアラートを再び開く
アラートを無視した後、アラートを修正する必要があることがわかった場合は、アラートを再度開いて、コードで問題を修正できます。 閉じたアラートの一覧を表示し、アラートを検索して表示し、再度開きます。 その後、他のアラートと同じ方法でアラートを修正します。
ブランチから古い構成とアラートを削除する
1 つのリポジトリに複数の code scanning 構成がある場合があります。 実行すると、複数の構成で同じアラートが生成されることがあります。 さらに、構成を異なるスケジュールで実行した場合、頻度の低い構成または古い構成ではアラートの状態が古くなる可能性があります。 複数構成からのアラートの詳細については、「AUTOTITLE」を参照してください。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ Security and quality ] タブをクリックします。[ Security and quality] タブが表示されない場合は、 ドロップダウン メニューを選択し、[ Security and quality] をクリックします。
-
左側のサイドバーで、 [Code scanning] をクリックします。
-
[Code scanning] でcode scanningアラートをクリックします。
-
サイドバーの [影響を受けるブランチ] セクションで、目的のブランチをクリックします。
-
[構成の分析] ダイアログで、選択したブランチでこのアラートを報告した構成の詳細を確認します。 目的のブランチの不要な構成を削除するには、[ ] をクリックします。
誤って構成を削除した場合は、 [キャンセル] をクリックして変更を適用しないようにします。
![[構成の分析] モーダルのスクリーンショット。 [構成の削除] アイコンが濃いオレンジ色で囲まれています。](/assets/cb-44092/images/help/repository/code-scanning-remove-configuration.png)
-
不要な構成を削除し、期待される構成が表示されていることを確認したら、 [変更の保存] をクリックします。
誤って構成を削除した後で変更を保存した場合は、構成をもう一度実行してアラートを更新します。 GitHub Actionsを使用する構成の再実行の詳細については、ワークフローとジョブの再実行 を参照してください。
メモ
- リポジトリの既定のブランチのすべての code scanning 構成を削除した場合、既定のブランチは "影響を受けるブランチ" サイドバーに残りますが、どの構成でも分析されません。
- リポジトリの既定のブランチ以外のブランチのすべての code scanning 構成を削除すると、そのブランチは "影響を受けるブランチ" サイドバーから削除されます。