このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2021-09-23. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

プルリクエストでコードスキャンアラートをトリガーする

プルリクエストで code scanning が問題を特定した場合、強調表示されたコードを確認してアラートを解決できます。

If you have read permission for a repository, you can see annotations on pull requests. With write permission, you can see detailed information and resolve code scanning alerts for that repository.

Code scanningは、GitHub Advanced Securityのライセンスを持っているなら利用できます。

ノート: Code scanningはGitHub Enterprise Server 2.22ではベータです。 Code Scanningの一般に利用なリリースについては、GitHub Enterprise Serverの最新リリースにアップグレードしてください。

プルリクエストの code scanning 結果について

プルリクエストのチェック用に code scanning が設定されているリポジトリでは、code scanningがプルリクエストのコードをチェックします。 デフォルトでは、このチェックはデフォルトブランチを対象とするプルリクエストに限定されていますが、この設定は GitHub Actions またはサードパーティの CI/CD システム内で変更できます。 変更をマージすることで、対象となるブランチに新たな code scanning アラートが発生する場合には、そのアラートはプルリクエストのチェック結果として報告されます。 また、アラートではプルリクエストの [Files changed] タブでアノテーションとしても表示されます。 リポジトリへの書き込み権限がある場合、既存のすべての code scanning アラートを [Security] タブで表示できます。 リポジトリのアラートに関する詳しい情報については、「リポジトリの code scanning アラートを管理する」を参照してください。

code scanning の結果に、重大度が error のものがある場合、そのチェックは失敗し、チェック結果でエラーが報告されます。 code scanning で出たすべての結果の重大度が低い場合、アラートは警告または通知として扱われ、チェックは成功となります。 プルリクエストのターゲットが code scanning を使用する保護されたブランチで、リポジトリの所有者がステータスチェック必須を設定している場合、すべてのエラーアラートを解決するか閉じない限り、そのプルリクエストはマージできません。 詳しい情報については保護されたブランチについてを参照してください。

プルリクエストの失敗した code scanning チェック

プルリクエストのチェックとしての code scanning について

code scanning をプルリクエストのチェックとして設定するためのオプションは多いので、正確なセットアップはそれぞれのリポジトリで異なり、複数のチェックを行う場合もあります。 code scanning の結果を含むチェックは、[Code scanning results] です。

リポジトリが CodeQL分析ワークフロー を使用している場合、CodeQL / Analyze (LANGUAGE) チェックを各言語で実行してから、結果チェックを実行します。 設定に問題がある場合、解析がコンパイルする必要がある言語 (C/C++、C#、Java など) でプルリクエストがビルドを中断している場合、解析は失敗することがあります。 他のプルリクエストと同様、チェック失敗の詳細内容を [Checks] タブで確認できます。 設定およびトラブルシューティングに関する詳しい情報については、「code scanning を設定する」または「CodeQL ワークフローのトラブルシューティング」を参照してください。

プルリクエストのアラートをトリガーする

プルリクエストの [Files changed] タブを見ると、アラートをトリガーしたコードの行にあるアノテーションがあります。

プルリクエストの差分にあるアラートのアノテーション

リポジトリへの書き込み権限がある場合、一部のアノテーションにはアラートの追加的な背景を説明するリンクが含まれています。 上の例では、CodeQL 解析から [user-provided value] をクリックすると、データフローに信頼されていないデータが入っている場所 (ソース) が表示されます。 この場合、[Show paths] をクリックすることで、ソースからデータ (シンク) を使用するコードまでのフルパスを表示することもできます。 これにより、データが信頼されていないかや、ソースとシンクの間のデータサニタイズのステップを解析が認識できなかったかを簡単に確認できます。 CodeQL を使用したデータフローの解析に関する詳しい情報については、「データフロー解析について」を参照してください。

アラートの詳細情報を表示するには、書き込み権限を持つユーザが、アノテーションに表示されている [Show more details] のリンクをクリックします。 これにより、ツールが提供するコンテキストとメタデータのすべてをアラートビューで確認できます。 下の例では、問題の重要度、タイプ、および関連する共通脆弱性タイプ一覧 (CWE) を示すタグが表示されています。 また、どのコミットが問題を引き起したかも表示されています。

アラートの詳細画面において、CodeQL 解析のような一部の code scanning ツールでは、問題の説明や、コードを修正する方法を説明するためる [Show more] リンクも含まれています。

アラートの説明と、詳細情報を表示するリンク

プルリクエストのアラートを解決する

プルリクエストへのプッシュアクセスがあるユーザなら誰でも、プルリクエストで特定された code scanning アラートを解決できます。 プルリクエストに変更をコミットすると、プルリクエストのチェック実行が新しくトリガーされます。 問題を修正すると、アラートは閉じられ、アノテーションは削除されます。

アラートを解決する必要がないと思われる場合には、書き込み権限を持つユーザがアラートを手動で閉じることができます。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。リポジトリに対する書き込み権限がある場合、アノテーションおよびアラートビューで [Close] ボタンが使用できます。

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

問題がまだ解決していませんか?