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

リポジトリに対するコードスキャンをセットアップする

リポジトリにワークフローを追加することにより、code scanning をセットアップできます。

If you have write permissions to a repository, you can set up or configure code scanning for that repository.

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

ノート: 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 について」を参照してください。

分析の種類 アラート生成のオプション
| CodeQL | GitHub Actionsの利用(「[アクションを使うcode scanningのセットアップ](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)」参照)あるいはサードパーティの継続的インテグレーション(CI)システム中でのCodeQLランナーの利用(「[CIシステム中でのCodeQLコードスキャンの実行](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)」参照)。 | サードパーティ | GitHub Actionsの利用(「[アクションを使うcode scanningのセットアップ](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)」)あるいは外部で生成してGitHub Enterprise Serverへアップロード(「[GitHubへのSARIFファイルのアップロード](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)」)。

アクションを使用して code scanning をセットアップする

  1. GitHub Enterprise Serverで、リポジトリのメインページにアクセスしてください。

  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ

  3. ”Code scanning alerts"の右で、Set up code scanningをクリックしてください。 セキュリティの概要にある、[Code scanning] の右側の [code scanning] ボタン

  4. [Get started with code scanning] で、CodeQL分析ワークフロー またはサードパーティーのワークフローの [Set up this workflow] をクリックします。 [Get started with code scanning] のヘッディングの下にある [Set up this workflow] ボタン

  5. code scanning がコードをスキャンする方法をカスタマイズするため、ワークフローを編集します。

    通常は、何も変更せずに CodeQL分析ワークフロー をコミットできます。 ただし、サードパーティのワークフローは、その多くで追加設定が必要なため、コミットする前にワークフローのコメントをお読みください。

    詳しい情報については、「code scanning を設定する」を参照してください。

  6. [Start commit] ドロップダウンを使用して、コミットメッセージを入力します。 コミットを開始する

  7. デフォルトブランチに直接コミットするか、新しいブランチを作成してプルリクエストを開始するかを選択します。 コミット先を選択する

  8. [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をセットアップしたら、アクションが実行されるとその出力を見ることができます。

  1. リポジトリ名の下でActions(アクション)をクリックしてください。 メインのリポジトリナビゲーション内のアクションタブ

    code scanning ワークフローを実行するためのエントリを含むリストが表示されます。 エントリのテキストは、コミットメッセージに付けるタイトルです。

    code scanning ワークフローを表示しているアクションのリスト

  2. code scanning ワークフローのエントリをクリックします。

  3. 左側のジョブ名をクリックします。 ここでは例として、[Analyze (言語)] をクリックします。

    code scanning ワークフローからのログ出力

  4. このワークフローの実行時にアクションから出力されるログを確認します。

  5. すべてのジョブが完了すると、確認されたすべての code scanning アラートの詳細を表示できます。 詳しい情報については、「リポジトリの code scanning アラートを管理する」を参照してください。

注釈: code scanning ワークフローを追加するためのプルリクエストをリポジトリに発行すると、そのプルリクエストからのアラートは、そのプルリクエストがマージされるまで Code scanning ページに直接表示されません。 アラートが見つかった場合は、プルリクエストがマージされる前に、Code scanning ページのバナーにある [(数字) alerts found] をクリックしてそのアラートを表示できます。

[n 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 プルリクエストのチェック

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] ドロップダウンをクリックして該当するブランチを選択します。

    [Branch] ドロップダウンメニューからブランチを選択

    この状況における解決策は、そのブランチの code scanning ワークフローにある on:pushon:pull_request にベースブランチの名前を追加してから、スキャンするオープンなプルリクエストを更新するよう変更することです。

  • プルリクエストのベースブランチへの直近のコミットが現在解析中で、解析がまだ利用できない。

    数分待ってからプルリクエストに変更をプッシュして、code scanning を再トリガーします。

  • ベースブランチの直近のコミットを解析中にエラーが発生し、そのコミットの解析ができない。

    ちょっとした変更をベースブランチにマージして、この最新のコミットで code scanning をトリガーしてから、プルリクエストに変更をプッシュして code scanning を再トリガーします。

次のステップ

code scanning をセットアップし、そのアクションを完了できるようにした後は、次のことができます。

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