Skip to main content

コード スキャン アラートの解決

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

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

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

アラート

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

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

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

[ブランチ] ドロップダウン メニューが展開されたアラート ビューのスクリーンショット。 "ブランチ" ボタンが濃いオレンジ色で囲まれています。

既定ではないブランチでフィルター処理したのと同じアラートが、既定のブランチに存在する場合、そのアラートのアラート ページには、その状態が既定ではないブランチでの状態と競合する場合でも、既定のブランチのアラートの状態のみが反映されることに注意してください。 たとえば、アラートの概要の branch-x の [Open](オープン) リストに表示されるアラートは、そのアラートが既定のブランチで既に修正されている場合、アラート ページに "Fixed"(修正済み) の状態で表示される場合があります。 フィルター処理したブランチのアラートの状態は、アラート ページの右側の [Affected branches](影響を受けるブランチ) セクションで確認できます。

Note

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

アラートを無視する

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

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

アラートを却下すると:

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

アラートを無視するには:

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、[ Code scanning をクリックします。

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

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

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

    たとえばコードがサポートされていないサニタイズ ライブラリを使っているといった理由で、CodeQL のアラートを擬陽性の結果として却下する場合、CodeQL に貢献して分析を改善することを検討してください。 CodeQL の詳細については、「CodeQL に貢献する」を参照してください。

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

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

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

アラートを解除した後、アラートを修正する必要があることがわかった場合は、アラートを再度オンにしてコードで問題を修正します。 アラームがオフになったリストを表示し、アラームを検索し、アラームを表示し、再びアラームをオンにします。 その後、他のアラートと同じ方法でアラートを修正できます。

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

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

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [セキュリティ] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、[ Code scanning をクリックします。

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

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

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

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

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

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

    誤って構成を削除した後で変更を保存した場合は、構成をもう一度実行してアラートを更新します。 GitHub Actions を使う構成の再実行の詳細については、「ワークフローとジョブの再実行」を参照してください。

Note

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

参考資料