code scanning アラートの修正候補の生成
GitHub Copilot Autofix では、code scanning 分析で特定したアラートに対する修正プログラムを生成できます。 ほとんどの CodeQL アラートの種類がサポートされており、第三者製ツールからのアラートもあります。 詳しくは、「コード スキャンに対する Copilot Autofix の責任ある使用」を参照してください。
Note
GitHub Copilot Autofix の使用には、GitHub Copilot のサブスクリプションは不要です。 Copilot Autofix は、GitHub.com のすべてのパブリック リポジトリと、GitHub Advanced Security のライセンスを持つ GitHub Enterprise Cloud Enterprise のプライベート リポジトリで使用できます。
- GitHub で、リポジトリのメイン ページに移動します。
- リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。
- 左側のサイドバーで、[ Code scanning をクリックします。
- アラートの名前をクリックします。
- Copilot Autofix が修正を提案できる場合は、ページの上部にある [ Generate fix] をクリックします。
- 修正候補が生成されたら、ページの下部にある [修正プログラムを含む PR の作成] をクリックして修正候補を含む pull request を自動的に生成できます。 既定のブランチから新しいブランチが作成され、生成されたフィックスがコミットされ、ドラフト pull request が作成されます。 他のフィックスと同様に、提案されたフィックスをテストして編集できます。
自動的に生成されるフィックスの制限については、「提案の制限事項」を参照してください。
アラート の手動によるで修正
リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリで 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が実行されたとき、同じコードはアラートを生成しません。
アラートを無視するには:
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。
-
左側のサイドバーで、[ Code scanning をクリックします。
-
アラートを却下したい場合、そのアラートをまず調べて、却下する正しい理由を選択できるようにすることが重要です。 調べたいアラートをクリックしてください。
-
アラートを確認してから Dismiss alert(アラートの却下) をクリックし、アラートをクローズする理由を選ぶか入力します。
クエリが将来の分析に含まれ続けるかに影響することがあるので、ドロップダウンメニューから適切な理由を選択することは重要です。 必要に応じて、却下についてコメントを残し、アラートを却下したコンテキストを記録することもできます。 無視のコメントはアラート タイムラインに追加され、監査と報告の間に正当な理由として使用できます。 コード スキャン REST API を使用して、コメントを取得または設定できます。 コメントは、alerts/{alert_number}
エンドポイントのdismissed_comment
に含まれます。 詳しくは、「コード スキャン用の REST API エンドポイント」を参照してください。たとえばコードがサポートされていないサニタイズ ライブラリを使っているといった理由で、CodeQL のアラートを擬陽性の結果として却下する場合、CodeQL に貢献して分析を改善することを検討してください。 CodeQL の詳細については、「CodeQL に貢献する」を参照してください。
複数のアラートを一度に却下する
同じ理由で却下したい複数のアラートがプロジェクトにあるなら、アラートのサマリからそれらをまとめて却下できます。 通常は、リストをフィルタしてマッチするアラートをすべて却下することになるでしょう。 たとえば、プロジェクト中で特定の共通脆弱性タイプ (CWE)の脆弱性がタグ付けされた現在のアラートをすべて却下したいことがあるでしょう。
無視されたアラートを再び開く
アラートを解除した後、アラートを修正する必要があることがわかった場合は、アラートを再度オンにしてコードで問題を修正します。 アラームがオフになったリストを表示し、アラームを検索し、アラームを表示し、再びアラームをオンにします。 その後、他のアラートと同じ方法でアラートを修正できます。
ブランチから古い構成とアラートを削除する
1 つのリポジトリに複数のコード スキャン構成が含まれる場合があります。 実行すると、複数の構成で同じアラートが生成されることがあります。 さらに、構成を異なるスケジュールで実行した場合、頻度の低い構成または古い構成ではアラートの状態が古くなる可能性があります。 複数の構成からのアラートについて詳しくは、「Code scanningアラートについて」をご覧ください。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [ セキュリティ] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [セキュリティ] をクリックします。
-
左側のサイドバーで、[ Code scanning をクリックします。
-
[Code scanning] で、code scanning アラートをクリックします。
-
サイドバーの [影響を受けるブランチ] セクションで、目的のブランチをクリックします。
-
[構成の分析] ダイアログで、選択したブランチでこのアラートを報告した構成の詳細を確認します。 目的のブランチの不要な構成を削除するには、 をクリックします。
誤って構成を削除した場合は、 [キャンセル] をクリックして変更を適用しないようにします。
-
不要な構成を削除し、期待される構成が表示されていることを確認したら、 [変更の保存] をクリックします。
誤って構成を削除した後で変更を保存した場合は、構成をもう一度実行してアラートを更新します。 GitHub Actions を使う構成の再実行について詳しくは、「ワークフローとジョブの再実行」をご覧ください。
Note
- リポジトリのデフォルトのブランチのすべての code scanning 構成を削除した場合、デフォルトのブランチは [影響を受けるブランチ] サイドバーに残っていますが、どの構成でも分析されません。
- リポジトリのデフォルトのブランチ以外のブランチのすべての code scanning 構成を削除した場合は、[影響を受けるブランチ] サイドバーからそのブランチが削除されます。