Skip to main content

コード スキャン アラートを解決する

セキュリティ ビューでは、プロジェクトのコード内の潜在的な脆弱性やエラーに関するアラートを表示、修正、または無視できます。

この機能を使用できるユーザーについて

書き込み アクセスを持つユーザー

code scanning アラートについて、GitHub Copilot チャット に質問する

GitHub Copilot Enterprise ライセンスを使用すると、Copilot チャット に質問して、組織内のリポジトリにある code scanning アラートを含むセキュリティ アラートについて理解を深めることができます。 詳しくは、「GitHubでGitHub Copilotに関する質問をする」をご覧ください。

code scanning アラートの修正候補を生成する

GitHub Copilotの自動修正 は、code scanning 分析で検出したアラートに対する修正を生成できます。 ほとんどの CodeQL アラート タイプがサポートされています。 「コードスキャンのCopilotオートフィックスについて」を参照してください。

メモ

GitHub Copilotの自動修正 の使用には、GitHub Copilot のサブスクリプションは不要です。 Copilotの自動修正 は、GitHub.com のすべてのパブリック リポジトリだけでなく、GitHub Code Security のライセンスを持つ organization や Enterprise が所有する内部またはプライベート リポジトリでも使用できます。

  1. GitHub で、リポジトリのメイン ページに移動します。1. リポジトリ名の下にある [Security] をクリックします。 [Security] タブが表示されない場合は、 ドロップダウン メニューを選んでから、[Security] をクリックします。
    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
    1. 左側のサイドバーで、 [Code scanning] をクリックします。
  2. アラートの名前をクリックします。
  3. Copilotの自動修正 が修正を提案できる場合は、ページの上部にある [修正プログラムを生成] をクリックします。
  4. 修正候補が生成されたら、ページの下部にある [修正プログラムを含む PR を作成] をクリックして修正ピログラムを含むプル リクエストを自動的に生成できます。 既定のブランチから新しいブランチが作成され、生成された 修正プログラムがコミットされ、ドラフトのプル リクエストが作成されます。 その他の修正プログラムと同様に、提供産された修正プログラムはテスト、編集できます。

履歴アラート エンドポイントで Autofix API を使用すると、提案された修正プログラムを生成、取得、コミットすることもできます。

  •         [コード スキャン アラートの自動修正を作成する](/rest/code-scanning/code-scanning#create-an-autofix-for-a-code-scanning-alert)
    
  •         [コード スキャン アラートの自動修正の状態を取得する](/rest/code-scanning/code-scanning#get-the-status-of-an-autofix-for-a-code-scanning-alert)
    
  •         [コード スキャン アラートの自動修正をコミットする](/rest/code-scanning/code-scanning#commit-an-autofix-for-a-code-scanning-alert)
    

code scanningのアラートに対する Copilotの自動修正 は、あらゆる状況のすべてのアラートに対して修正を生成できるわけではありません。 この機能はベスト エフォート ベースで動作し、常に成功する保証はありません。 自動的に生成されるフィックスの制限については、「提案の制限事項」を参照してください。

Copilotコーディングエージェント にアラートを割り当てる

メモ

このオプションは現在パブリック プレビュー段階であり、変更される可能性があります。 Copilotコーディングエージェント はリポジトリーに存在している必要があります。

Copilot を割り当てて、自動修正機能を適用できます。 Copilot は、コードスキャンアラートを分析し、修復計画を作成し、必要なコード変更をプルリクエストに実装します。

  1. GitHub で、リポジトリのメイン ページに移動します。1. リポジトリ名の下にある [Security] をクリックします。 [Security] タブが表示されない場合は、 ドロップダウン メニューを選んでから、[Security] をクリックします。
    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
    1. 左側のサイドバーで、 [Code scanning] をクリックします。
  2. アラートの名前をクリックします。
  3. 自動修正が生成されておらず、Copilotの自動修正 が修正を提案できる場合は、ページの上部にある をクリックして修正を生成します。
  4. 右側のメニューで、[ 担当者] をクリックします。
  5. [Copilot] を選択します。

Copilot は、30秒以内にアラートに対処するためのプルリクエストを開き、修正の概要と加えられた変更の詳細を含みます。 作成されると、pull request が [開発] セクションに表示されます。

アラートと手動で修正する

リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリでプルリクエストに対して code scanning が実行されるよう予定されている場合は、修正してプルリクエストを発行するようお勧めします。 これにより、変更の code scanning 解析がトリガーされ、修正で新しい問題が入り込まないようテストされます。 詳しくは、「Pull RequestでCode scanningアラートをトリアージする」をご覧ください。

自由テキスト検索またはフィルターを使ってアラートの一部を表示し、一致するすべてのアラートをクローズ済みとマークすることができます。

あるブランチでは解決されたアラートが、別のブランチでは解決されていないことがあります。 アラートの概要で "[ブランチ]" フィルターを使用すると、特定のブランチでアラートが修正されているかどうかを確認できます。

ブランチ オプションが展開されたアラート ビューのスクリーンショット。 [ブランチ] フィルターに濃いオレンジ色の下線が表示されます。

メモ

複数の構成を使用して code scanning を実行する場合、複数の構成によって同じアラートが生成されることがあります。 すべての構成を定期的に実行する場合を除いて、ある構成では解決されており、別の構成では解決されていないアラートが表示される可能性があります。 これらの古い構成とアラートは、ブランチから削除できます。 詳細については、「ブランチから以前の構成とアラートを削除する」を参照してください。

アラートを無視する

アラートをクローズする方法は2つあります。 コード中の問題を修正するか、アラートを却下できます。

アラートを無視することは、修正する必要がないと思われるアラートを閉じる方法です。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 アラートは、コード内の code scanning 注釈、または [セキュリティ] タブの概要リストから削除できます。

アラートを却下すると:

  • それはすべてのブランチで却下されます。
  • アラートはプロジェクトの現在のアラート数から除外されます。
  • アラートはアラートのサマリの"Closed"リストに移動されます。必要な場合は、そこからアラートを再オープンできます。
  • アラートを閉じた理由がログに記録されます。
  • 必要に応じて、無視した理由をコメントに残し、アラートを無視したコンテキストを記録することもできます。
  • 次にcode scanningが実行されたとき、同じコードはアラートを生成しません。

アラートを無視する:

  1. GitHub で、リポジトリのメイン ページに移動します。1. リポジトリ名の下にある [Security] をクリックします。 [Security] タブが表示されない場合は、 ドロップダウン メニューを選んでから、[Security] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
    1. 左側のサイドバーで、 [Code scanning] をクリックします。

  2. アラートを却下したい場合、そのアラートをまず調べて、却下する正しい理由を選択できるようにすることが重要です。 調べたいアラートをクリックしてください。

  3. アラートを確認してから Dismiss alert をクリックし、アラートをクローズする理由を選ぶか入力します。

              ![アラート チェック エラーのスクリーンショット。 [アラートを無視] ボタンが、濃いオレンジ色で強調表示され、[閉じる] ドロップダウンが表示されます。 
           ](/assets/images/help/repository/code-scanning-alert-dropdown-reason.png) クエリが将来の分析に含まれ続けるかに影響することがあるので、ドロップダウンメニューから適切な理由を選択することは重要です。 必要に応じて、却下についてコメントを残し、アラートを却下したコンテキストを記録することもできます。 無視のコメントはアラート タイムラインに追加され、監査と報告の間に正当な理由として使用できます。 コード スキャン REST API を使用して、コメントを取得または設定できます。 コメントは、`dismissed_comment` エンドポイントの `alerts/{alert_number}` に含まれます。 詳しくは、「[AUTOTITLE](/rest/code-scanning/code-scanning#update-a-code-scanning-alert)」をご覧ください。
    

    コードスキャンの偽陽性を修正するためのCodeQL

複数のアラートを一度に却下する

同じ理由で却下したい複数のアラートがプロジェクトにあるなら、アラートのサマリからそれらをまとめて却下できます。 通常は、リストをフィルタしてマッチするアラートをすべて却下することになるでしょう。 たとえば、プロジェクト中で特定の共通脆弱性タイプ (CWE)の脆弱性がタグ付けされた現在のアラートをすべて却下したいことがあるでしょう。

無視されたアラートを再び開く

アラートを無視した後、アラートを修正する必要があることがわかった場合は、アラートを再度開いて、コードで問題を修正できます。 閉じたアラートの一覧を表示し、アラートを検索して表示し、再度開きます。 その後、他のアラートと同じ方法でアラートを修正します。

ブランチから古い構成とアラートを削除する

1 つのリポジトリに複数のコード スキャン構成が含まれる場合があります。 実行すると、複数の構成で同じアラートが生成されることがあります。 さらに、構成を異なるスケジュールで実行した場合、頻度の低い構成または古い構成ではアラートの状態が古くなる可能性があります。 複数構成からのアラートの詳細については、「AUTOTITLE」を参照してください。

  1. GitHub で、リポジトリのメイン ページに移動します。1. リポジトリ名の下にある [Security] をクリックします。 [Security] タブが表示されない場合は、 ドロップダウン メニューを選んでから、[Security] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。
    1. 左側のサイドバーで、 [Code scanning] をクリックします。

  2. [Code scanning] で、code scanning アラートをクリックします。

  3. サイドバーの [影響を受けるブランチ] セクションで、目的のブランチをクリックします。

  4. [構成の分析] ダイアログで、選択したブランチでこのアラートを報告した構成の詳細を確認します。 目的のブランチの不要な構成を削除するには、 をクリックします。

    誤って構成を削除した場合は、 [キャンセル] をクリックして変更を適用しないようにします。

    [構成の分析] モーダルのスクリーンショット。 [構成の削除] アイコンが濃いオレンジ色で囲まれています。

  5. 不要な構成を削除し、期待される構成が表示されていることを確認したら、 [変更の保存] をクリックします。

    誤って構成を削除した後で変更を保存した場合は、構成をもう一度実行してアラートを更新します。 GitHub Actions を使用する構成を再実行するには、「AUTOTITLE」を参照してください。

メモ

  • リポジトリの既定のブランチのすべての code scanning 構成を削除した場合、既定のブランチは [影響を受けるブランチ] サイドバーに残っていますが、どの構成でも分析されません。
  • リポジトリの既定のブランチ以外のブランチのすべての code scanning 構成を削除した場合は、[影響を受けるブランチ] サイドバーからそのブランチが削除されます。

詳細については、次を参照してください。

  •         [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests)
    
  •         [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning)
    
  •         [AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/about-integration-with-code-scanning)