Skip to main content

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

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

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

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

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)