ノート: Code scanningはGitHub Enterprise Server 2.22ではベータです。 Code Scanningの一般に利用なリリースについては、GitHub Enterprise Serverの最新リリースにアップグレードしてください。
ノート: この機能を使用するには、サイト管理者がGitHub Enterprise Serverのインスタンスのcode scanningを有効にする必要があります。 コードをスキャンするためにGitHub Actionsを使いなら、サイト管理者はGitHub Actionsの有効化と、必要なインフラストラクチャのセットアップもしなければなりません。 詳しい情報については「アプライアンスのためのcode scanningの設定」を参照してください。
code scanning のセットアップ用オプション
code scanning アラートの生成方法、および使用するツールを、リポジトリレベルで決定できます。 GitHub Enterprise Server は、CodeQL 解析のために完全に統合されたサポートを提供すると共に、サードパーティーのツールを使用した解析もサポートします。 詳しい情報については、「CodeQL について」を参照してください。
|
アラート生成のオプション |
---|---|
アクションを使用して code scanning をセットアップする
-
GitHub Enterprise Serverで、リポジトリのメインページにアクセスしてください。
-
リポジトリ名の下で Security(セキュリティ)をクリックしてください。
-
”Code scanning alerts"の右で、Set up code scanningをクリックしてください。
-
[Get started with code scanning] で、CodeQL分析ワークフロー またはサードパーティーのワークフローの [Set up this workflow] をクリックします。
-
code scanning がコードをスキャンする方法をカスタマイズするため、ワークフローを編集します。
通常は、何も変更せずに CodeQL分析ワークフロー をコミットできます。 ただし、サードパーティのワークフローは、その多くで追加設定が必要なため、コミットする前にワークフローのコメントをお読みください。
詳しい情報については、「code scanning を設定する」を参照してください。
-
[Start commit] ドロップダウンを使用して、コミットメッセージを入力します。
-
デフォルトブランチに直接コミットするか、新しいブランチを作成してプルリクエストを開始するかを選択します。
-
[Commit new file] または [Propose new file] をクリックします。
デフォルトの CodeQL分析ワークフロー では、code scanning は、デフォルトブランチまたは保護されたブランチに変更をプッシュするたび、あるいはデフォルトブランチにプルリクエストを生成するたびに、コードを解析するよう設定されています。 その結果として、code scanning が開始されます。
code scanning の一括セットアップ
スクリプトを使用して、code scanning を多くのリポジトリで一括でセットアップできます。 For an example of a script that raises pull requests to add a GitHub Actions workflow to multiple repositories, see the jhutchings1/Create-ActionsPRs
repository for an example using Powershell, or nickliffen/ghas-enablement
for teams who do not have Powershell and instead would like to use NodeJS.
code scanning からログ出力を表示する
リポジトリでcode scanningをセットアップしたら、アクションが実行されるとその出力を見ることができます。
-
リポジトリ名の下でActions(アクション)をクリックしてください。
code scanning ワークフローを実行するためのエントリを含むリストが表示されます。 エントリのテキストは、コミットメッセージに付けるタイトルです。
-
code scanning ワークフローのエントリをクリックします。
-
左側のジョブ名をクリックします。 ここでは例として、[Analyze (言語)] をクリックします。
-
このワークフローの実行時にアクションから出力されるログを確認します。
-
すべてのジョブが完了すると、確認されたすべての code scanning アラートの詳細を表示できます。 詳しい情報については、「リポジトリの code scanning アラートを管理する」を参照してください。
注釈: code scanning ワークフローを追加するためのプルリクエストをリポジトリに発行すると、そのプルリクエストからのアラートは、そのプルリクエストがマージされるまで Code scanning ページに直接表示されません。 アラートが見つかった場合は、プルリクエストがマージされる前に、Code scanning ページのバナーにある [(数字) alerts found] をクリックしてそのアラートを表示できます。
プルリクエストのチェックを理解する
Pull Requestで実行するよう設定した各 code scanning ワークフローでは、Pull Requestのチェックセクションに常に最低 2 つのエントリが表示されています。 ワークフローの解析ジョブごとに 1 つのエントリがあり、最後のエントリは解析結果です。
code scanning 解析チェックの名前は、「ツール名 / ジョブ名 (トリガー)」という形式になります。 たとえば、C++ のコードの CodeQL 解析には、「CodeQL / Analyze (cpp) (pull_request)」のエントリがあります。 code scanning 解析エントリで [Details] をクリックして、ログのデータを表示できます。 これにより、解析ジョブが失敗した場合に問題をデバッグできます。 たとえば、コンパイル型言語の code scanning 解析では、アクションがコードをビルドできなかった場合に解析ジョブが失敗します。
code scanning ジョブが完了すると、 GitHub はプルリクエストにより追加されたアラートがないか確認し、チェックのリストに「Code scanning の結果 / ツール名」のエントリを追加します。 code scanning が 1 回でも実行された後は、[Details] をクリックして解析結果を表示できます。 プルリクエストを使用してリポジトリに code scanning を追加した場合、「Code scanning 結果 / ツール名」チェックの [Details] をクリックすると最初は「Missing analysis」のメッセージが表示されます。
「missing analysis」のメッセージが出る理由
プルリクエストのコードを解析した後、code scanning はトピックブランチ (プルリクエストを作成するために使用したブランチ) の解析と、ベースブランチ (プルリクエストをマージするブランチ) の解析を比較する必要があります。 これにより、code scanning はプルリクエストにより新しく発生したアラートはどれか、ベースブランチに既に存在していたアラートはどれか、また既存のアラートがプルリクエストの変更により修正されたかを測定できます。 始めにプルリクエストを使用してリポジトリに code scanning を追加した段階では、ベースブランチはまだ解析されていないので、こうした情報を測定できません。 この場合、プルリクエストの結果チェックをくりっくすると、「Missing analysis for base commit SHA-HASH (ベースコミット SHA-HASH の解析がありません)」というメッセージが表示されます。
この他にも、プルリクエストのベースブランチに対する直近のコミットで解析結果がないことがあります。 たとえば、次のような場合です。
-
プルリクエストがデフォルトブランチ以外のブランチに発行され、このブランチが解析されていない。
ブランチがスキャン済みかを確認するには、Code scanning ページに移動し、[Branch] ドロップダウンをクリックして該当するブランチを選択します。
この状況における解決策は、そのブランチの code scanning ワークフローにある
on:push
とon:pull_request
にベースブランチの名前を追加してから、スキャンするオープンなプルリクエストを更新するよう変更することです。 -
プルリクエストのベースブランチへの直近のコミットが現在解析中で、解析がまだ利用できない。
数分待ってからプルリクエストに変更をプッシュして、code scanning を再トリガーします。
-
ベースブランチの直近のコミットを解析中にエラーが発生し、そのコミットの解析ができない。
ちょっとした変更をベースブランチにマージして、この最新のコミットで code scanning をトリガーしてから、プルリクエストに変更をプッシュして code scanning を再トリガーします。
次のステップ
code scanning をセットアップし、そのアクションを完了できるようにした後は、次のことができます。
- リポジトリに対して生成された code scanning アラートをすべて表示する。 詳しい情報については、「リポジトリの code scanning アラートを管理する」を参照してください。
- code scanning をセットアップ後にサブミットしたプルリクエストに対して生成されたアラートを表示する。 詳しい情報については、「プルリクエストで code scanning アラートをトリガーする」を参照してください。
- 実行完了の通知を設定する。 詳しい情報については、「通知を設定する」を参照してください。
- CodeQL code scanning の初期セットアップで発生した問題を調査する。 詳しい情報については、「CodeQL ワークフローのトラブルシューティング」を参照してください。
- code scanning がリポジトリ内のコードをスキャンする方法をカスタマイズする。 詳しい情報については、「code scanning を設定する」を参照してください。