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

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

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

Code scanningは、Organizationが所有するリポジトリでGitHub Advanced Securityが有効化されていれば利用できます。 詳しい情報については、「GitHub Advanced Security について」を参照してください。

ノート: この機能を使用するには、サイト管理者がGitHub Enterprise Serverのインスタンスのcode scanningを有効にする必要があります。 コードをスキャンするためにGitHub Actionsを使いなら、サイト管理者はGitHub Actionsの有効化と、必要なインフラストラクチャのセットアップもしなければなりません。 詳しい情報については「アプライアンスのためのcode scanningの設定」を参照してください。

code scanning のセットアップ用オプション

code scanning アラートの生成方法、および使用するツールを、リポジトリレベルで決定できます。 GitHub Enterprise Server は、CodeQL 解析のために完全に統合されたサポートを提供すると共に、サードパーティーのツールを使用した解析もサポートします。 詳しい情報については「CodeQLについて」を参照してください。

分析の種類 アラート生成のオプション
| CodeQL | GitHub Actionsの利用(「[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 code scanning)](/code-security/secure-coding/about-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. To the right of "Code scanning alerts", click Set up code scanning. If code scanning is missing, you need to ask an organization owner or repository administrator to enable GitHub Advanced Security. 詳しい情報については、「Organization のセキュリティおよび分析設定を管理する」または「リポジトリのセキュリティと分析設定を管理する」を参照してください。 セキュリティの概要にある、[Code scanning] の右側の [code scanning] ボタン

  4. [Get started with code scanning] で、CodeQL分析ワークフロー またはサードパーティーのワークフローの [Set up this workflow] をクリックします。 "Set up this workflow" button under "Get started with code scanning" headingWorkflows are only displayed if they are relevant for the programming languages detected in the repository. The CodeQL分析ワークフロー is always displayed, but the "Set up this workflow" button is only enabled if CodeQL analysis supports the languages present in the repository.

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

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

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

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

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

  8. [Commit new file] または [Propose new file] をクリックします。

デフォルトの CodeQL分析ワークフロー では、code scanning は、デフォルトブランチまたは保護されたブランチに変更をプッシュするたび、あるいはデフォルトブランチにプルリクエストを生成するたびに、コードを解析するよう設定されています。 その結果として、code scanning が開始されます。

code scanning の一括セットアップ

You can set up code scanning in many repositories at once using a script. 複数のリポジトリに GitHub Actions ワークフローを追加するためのプルリクエストを発行するスクリプトの例が、jhutchings1/Create-ActionsPRs リポジトリにあります。

code scanning からログ出力を表示する

After setting up code scanning for your repository, you can watch the output of the actions as they run.

  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] のリンクをクリック

プルリクエストのチェックを理解する

Each code scanning workflow you set to run on pull requests always has at least two entries listed in the checks section of a pull request. ワークフローの解析ジョブごとに 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 を再トリガーします。

次のステップ

After setting up code scanning, and allowing its actions to complete, you can:

このドキュメントは役立ちましたか?プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

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

GitHubコミュニティで質問するサポートへの連絡