Skip to main content

Enterprise Server 3.21 は、現在リリース候補として使用できます。

Pull RequestでCode scanningアラートをトリアージする

          code scanningが pull request の問題を特定したら、強調表示されたコードを確認してアラートを解決できます。

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

読み取り アクセスできるユーザー

構成によっては、 code scanning 結果がプル要求のチェック結果と注釈として表示される場合があります。 詳しくは、「Code scanningアラートについて」をご覧ください。

code scanning チェックの結果の表示

          code scanningのすべての構成について、code scanningの結果を含むチェックは次のとおりです:**Code scanning結果**。 使用される分析ツールの結果はそれぞれ個別に表示されます。 pull request で変更されたコード行に関する新しいアラートは、注釈として表示されます。

分析されたブランチのアラートの完全なセットを表示するには、 [すべてのブランチ アラートを表示する] をクリックします。 これにより、ブランチのすべてのアラートを種類、重大度、タグなどでフィルタリングできる完全なアラート ビューが開きます。詳細については、「リポジトリのコード スキャンのアラートの評価」を参照してください。

pull request 上の Code scanning の結果チェックのスクリーンショット。 [すべてのブランチ アラートを表示する] リンクが濃いオレンジ色の枠線で囲まれています。

チェックエラーの重大度レベルの管理

          code scanning結果のチェックで重大度が`error`、`critical`、または`high`の問題が検出された場合、チェックは失敗し、チェック結果にエラーが報告されます。 
          code scanningによって検出されたすべての結果の重大度が低い場合、アラートは警告またはメモとして扱われ、チェックは成功します。

pull request のマージ ボックスのスクリーンショット。 [コード スキャン結果 / CodeQL] チェックには [新しいアラートが 1 件、その中で重大度が高のセキュリティ...] があります。

リポジトリ設定で既定の動作をオーバーライドできます。そのためには、重大度のレベルと、pull request のチェック エラーが発生するセキュリティ重大度を指定します。 詳しくは、「コード スキャンのワークフロー構成オプション」をご覧ください。

code scanning構成に関する問題の診断

構成によっては、 code scanning が構成された pull request で実行されている追加のチェックが表示される場合があります。 これらは通常、コードを分析したり、結果 code scanning アップロードしたりするワークフローです。 これらのチェックは、分析に問題がある場合のトラブルシューティングに役立ちます。

たとえば、リポジトリが CodeQL 分析ワークフロー を使用している場合、結果チェックが実行される前に、言語ごとに CodeQL /分析 (LANGUAGE) チェックが実行されます。 構成に問題がある場合や、プル要求によって分析がコンパイルされる言語 (たとえば、 C/C++、C#、Go、Java、Kotlin、Rust、and Swift) のビルドが中断された場合、分析チェックが失敗する可能性があります。

その他の pull request のチェックと同様に、[チェック] タブでチェック エラーの完全な詳細情報を確認できます。構成とトラブルシューティングの詳細については、「コード スキャンのワークフロー構成オプション」または「コード スキャン分析エラーのトラブルシューティング」を参照してください。

pull request でのアラートの表示

プル要求で導入された変更の差分内にある code scanning アラートは、[ 会話 ] タブを表示することで確認できます。 Code scanning は、アラートをトリガーしたコード行に注釈として各アラートを表示するプル要求レビューを投稿します。 注釈から直接、アラートにコメントを付け、アラートを無視し、アラートのパスを表示できます。 アラートの詳細を表示するには、[詳細の表示] リンクをクリックします。すると、アラートの詳細ページに移動します。

pull request の [会話] タブのアラート注釈のスクリーンショット。 [詳細の表示] リンクが濃いオレンジ色の枠線で囲まれています。

プル要求で導入された変更の差分内にあるすべての code scanning アラートを [ ファイルの変更 ] タブで表示することもできます。

pull request に新しいコード スキャン構成を追加すると、pull request に関するコメントが表示され、リポジトリの [ Security ] タブに移動して、pull request ブランチのすべてのアラートを表示できます。 リポジトリのアラートの表示について詳しくは、「リポジトリのコード スキャンのアラートの評価」を参照してください。

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

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

[アラート] ページのステータスと詳細は、他のブランチにアラートが存在する場合であっても、リポジトリの既定のブランチに対するアラートのステータスを反映するのみです。 既定以外のブランチのアラートの状態は、[アラート] ページの右側にある [影響を受けるブランチ] セクションで確認できます。 既定のブランチにアラートが存在しない場合、アラートの状態は、[in pull request] または [in branch] として、グレー表示されます。 [Development] セクションには、アラートを修正するリンク ブランチと pull request が表示されます。

アラートの詳細ビューには、code scanning分析などの一部のCodeQL ツールに、問題の説明と、コードの修正方法に関するガイダンスの詳細リンクも含まれています。

code scanning アラートの説明を示すスクリーンショット。 [詳細を表示] というラベルが付いたリンクが濃いオレンジ色の枠線で囲まれています。

pull request のアラートに対するコメント

プル要求に表示されるすべての code scanning アラートにコメントできます。 アラートは、pull request レビューの一部として pull request の [会話] タブに注釈として表示され、[変更されたファイル] タブにも表示されます。

プル要求をマージする前に、プル要求内のすべての会話 ( code scanning アラートの会話を含む) を解決するように要求することができます。 詳しくは、「保護されたブランチについて」をご覧ください。

Pull Requestのアラートの修正

プル要求へのプッシュ アクセス権を持つすべてのユーザーは、そのプル要求で識別された code scanning アラートを修正できます。 プルリクエストに変更をコミットすると、プルリクエストのチェック実行が新しくトリガーされます。 問題を修正すると、アラートは閉じられ、アノテーションは削除されます。

Pull Requestのアラートの却下

アラートを閉じる別の方法として、却下する方法があります。 修正する必要がないと考えられる場合は、アラートを却下できます。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 リポジトリに対する書き込みアクセス許可がある場合は、コード注釈とアラートの概要で [無視 ] アラート ボタンを使用できます。 [アラートの却下] をクリックすると、アラートをクローズする理由の選択が求められます。

コード スキャンのチェック エラーのスクリーンショット。 [アラートを無視] ボタンが濃いオレンジ色で囲まれています。 [アラートを無視] ドロップダウンが表示されます。

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

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

アラート無視の詳細については、「コード スキャン アラートを解決する」を参照してください。