ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
GitHub AEは、現在限定リリース中です。詳細については営業チームにお問い合わせください。

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

リポジトリにワークフローを追加することにより、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の一部として利用できます。 詳しい情報については、「GitHub Advanced Security について」を参照してください。

ノート: Code scanningは現在ベータで、変更されることがあります。

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

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

分析の種類 アラート生成のオプション
| 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 AEへアップロード(「[GitHubへのSARIFファイルのアップロード](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)」)。

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

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

  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] をクリックします。 "Set up this workflow" button under "Get started with code scanning" heading

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

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

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

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

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

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

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

The on:pull_request and on:push triggers for code scanning are each useful for different purposes. For more information, see "Scanning pull requests" and "Scanning on push."

code scanning の一括セットアップ

スクリプトを使用して、code scanning を多くのリポジトリで一括でセットアップできます。 If you'd like to use a script to raise pull requests that 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] をクリックして解析結果を表示できます。 If you used a pull request to add code scanning to the repository, you will initially see a "Missing analysis" message when you click Details on the "Code scanning results / TOOL NAME" check.

コミットメッセージの解析がありません

Reasons for the "Missing analysis" message

プルリクエストのコードを解析した後、code scanning はトピックブランチ (プルリクエストを作成するために使用したブランチ) の解析と、ベースブランチ (プルリクエストをマージするブランチ) の解析を比較する必要があります。 これにより、code scanning はプルリクエストにより新しく発生したアラートはどれか、ベースブランチに既に存在していたアラートはどれか、また既存のアラートがプルリクエストの変更により修正されたかを測定できます。 始めにプルリクエストを使用してリポジトリに code scanning を追加した段階では、ベースブランチはまだ解析されていないので、こうした情報を測定できません。 In this case, when you click through from the results check on the pull request you will see the "Missing analysis for base commit SHA-HASH" message.

この他にも、プルリクエストのベースブランチに対する直近のコミットで解析結果がないことがあります。 たとえば、次のような場合です。

  • プルリクエストがデフォルトブランチ以外のブランチに発行され、このブランチが解析されていない。

    ブランチがスキャン済みかを確認するには、Code scanning ページに移動し、[Branch] ドロップダウンをクリックして該当するブランチを選択します。

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

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

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

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

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

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

次のステップ

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

このドキュメントは役立ちましたか?

プライバシーポリシー

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

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

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

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

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