code scanning を構成するためのオプション
code scanning アラートの生成方法、および使用するツールを、リポジトリレベルで決定できます。 GitHub は、CodeQL 解析のために完全に統合されたサポートを提供すると共に、サードパーティーのツールを使用した解析もサポートします。 詳しくは、次の箇条書きと「コード スキャンについて」をご覧ください。
-
CodeQL : 既定の設定 (「リポジトリの code scanning を構成する」を参照) または詳細設定 (「リポジトリの code scanning を構成する」を参照) のどちらかで GitHub Actions を使うか、サードパーティの継続的インテグレーション (CI) システム (「CIシステムでのCodeQL Code scanningについて」を参照) で CodeQL 分析を実行します。
-
サードパーティ: GitHub Actions (「リポジトリの code scanning を構成する」を参照) またはサードパーティのツールを使って、結果を GitHub にアップロードします (「SARIF ファイルを GitHub にアップロードする」を参照)。
複数の構成を使用してコード スキャンを実行する場合、アラートに複数の分析元が含まれることがあります。 アラートに複数の分析元がある場合、各分析元でのアラートの状態を、[アラート] ページに表示することができます。 詳しくは、「Code scanningアラートについて」を参照してください。
code scanning の自動構成
code scanning の既定のセットアップでは、リポジトリに最適な設定で code scanning が自動的に構成されます。 リポジトリは、GitHub Actions を使用し、次の CodeQL 対応言語: JavaScript/TypeScript、Python、Ruby のみが含まれている場合、既定のセットアップの対象となります。 リポジトリに CodeQL でサポートされていない言語 (R など) が含まれている場合は、既定のセットアップを使用できますが、上記の言語以外の CodeQL 対応言語を含める場合は、詳細セットアップを使用する必要があります。 CodeQL の対応言語について詳しくは、「CodeQL によるコード スキャンについて」をご覧ください。
既定のセットアップを有効にすることが、リポジトリの code scanning を構成する最も簡単な方法です。 また、既定のセットアップでは、CodeQL ワークフロー ファイルで必要なメンテナンスは要求されません。 既定のセットアップを有効にする前に、分析する言語、実行するクエリ スイート、新しいスキャンをトリガーするイベントが表示されます。
追加のクエリを実行したり、スキャン スケジュールを変更したり、既定のセットアップで現在サポートされていない言語をスキャンしたりする必要がない場合は、既定のセットアップを試してください。
-
GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下にある [設定] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
-
サイドバーの [セキュリティ] セクションで、 [コード セキュリティと分析] をクリックします。
-
[] セクションで、 [セットアップ] を選択し、 [既定] をクリックします。
-
表示されている CodeQL の既定の構成ウィンドウで、リポジトリの設定を確認し、 [CodeQL を有効にする] をクリックします。
注:
- CodeQL の既定の構成ウィンドウには、分析する言語、実行するクエリ スイート、新しいスキャンをトリガーするイベントなど、既定のセットアップの詳細が表示されます。 実行するクエリ スイート、新しいスキャンをトリガーするイベント、またはその他の code scanning 機能を変更する場合は、詳細セットアップを使用する必要があります。 詳しくは、「リポジトリの code scanning を構成する」を参照してください。
- 詳細セットアップから既定のセットアップに切り替える場合は、既定のセットアップによって既存の構成がオーバーライドされることを通知する警告が表示されます。 CodeQL を有効にしたら、既存のワークフロー ファイルを削除するか無効にしてください。 それ以外の場合、GitHub Actions の時間を使用して、code scanning の結果をアップロードすることなく、ワークフローは引き続き定期的に実行されます。
- 構成後に既定の CodeQL セットアップを表示したい場合は、 を選択し、 [CodeQL 構成の表示] をクリックします。
詳細セットアップの作成
code scanning の詳細セットアップは、code scanning をカスタマイズする必要がある場合に役立ちます。 ワークフロー ファイルを作成および編集することで、実行するクエリの選択、スキャン スケジュールの変更、任意の CodeQL 対応言語のスキャン、マトリックス ビルドの使用などが可能になります。
スターター ワークフローを使用した code scanning の構成
注: Advanced Security のスターター ワークフローは、リポジトリの [アクション] タブの [セキュリティ] カテゴリに統合されています。 この新しい構成は現在ベータ版であり、変更される可能性があります。
GitHub には、code scanning などのセキュリティ機能用のスターター ワークフローが用意されています。 ゼロから始めるのではなく、これらの推奨されるワークフローを使用して、code scanning ワークフローを作成できます。 スターター ワークフローは、code scanning が有効になっている場合にのみ、リポジトリで使用できます。
アクションを使用して code scanning を実行すると、分が使用されます。 詳しくは、「GitHub Actions の課金について」をご覧ください。
- GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下の [Actions] (アクション) をクリックします。
- リポジトリで既に 1 つ以上のワークフローが構成され、実行されている場合は、 [新しいワークフロー] をクリックしてスターター ワークフローを表示します。 現在、リポジトリ用に設定されているワークフローがない場合は、次のステップに進みます。
- [ワークフローの選択] または [GitHub Actions の作業開始] ビューで、[セキュリティ] カテゴリまで下にスクロールして、構成するワークフローの下にある [構成] をクリックします。 構成するセキュリティ ワークフローを見つけるには、 [すべて表示] をクリックすることが必要な場合があります。
- ワークフローの指示に従い、ニーズに合わせてカスタマイズします。 ワークフローに関する一般的なヘルプについては、ワークフロー ページの右側のペインにある [ドキュメント] をクリックします。
詳細については、「スターター ワークフローの使用」および「code scanning のカスタマイズ」を参照してください。
code scanning の手動構成
ワークフロー ファイルを作成して編集することで、code scanning をカスタマイズできます。 詳細セットアップでは、カスタマイズするための基本的なワークフロー ファイルが生成されます。
アクションを使用して code scanning を実行すると、分が使用されます。 詳しくは、「GitHub Actions の課金について」をご覧ください。
注: 書き込みアクセス権を持つすべてのパブリック リポジトリで code scanning を構成できます。
-
GitHub.com で、リポジトリのメイン ページへ移動します。 1. リポジトリ名の下にある [設定] をクリックします。 [セキュリティ] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
-
サイドバーの [セキュリティ] セクションで、 [コード セキュリティと分析] をクリックします。
-
[] セクションまで下にスクロールし、 [セットアップ] を選んでから、 [詳細] をクリックします。
注: 既定のセットアップから詳細 code scanning セットアップに切り替える場合は、[] セクションで を選択し、 [詳細] をクリックします。 表示されるポップアップ ウィンドウで、 [CodeQL を無効にする] をクリックします。
-
code scanning がコードをスキャンする方法をカスタマイズするため、ワークフローを編集します。
通常は、何も変更せずに CodeQL 分析ワークフローをコミットてきます。 ただし、サード パーティのワークフローの多くでは、追加の構成が必要になるので、コミットする前にワークフローのコメントを読んでください。
詳しくは、「code scanning のカスタマイズ」を参照してください。
-
Start commit ドロップダウンを使用し、コミット メッセージを入力します。
-
既定のブランチに直接コミットするか、新しいブランチを作成して pull request を開始するかを選択します。
-
[Commit new file] (新しいファイルをコミットする) または [Propose new file] (新しいファイルを提案する) をクリックします。
推奨される CodeQL 分析ワークフローでは、code scanning は、既定のブランチまたは保護されたブランチに変更をプッシュするたび、あるいは既定のブランチに pull request を生成するたびに、コードを解析するよう構成されています。 その結果として、code scanning が開始されます。
コード スキャンの on:pull_request
と on:push
トリガーは、それぞれ異なる目的に役立ちます。 詳しくは、「code scanning のカスタマイズ」を参照してください。
code scanning の一括構成
スクリプトを使って、code scanning を多くのリポジトリで一括で構成できます。 スクリプトを使用して、GitHub Actions ワークフローを複数のリポジトリに追加する pull request を発生させる場合は、jhutchings1/Create-ActionsPRs
リポジトリで PowerShell を使用する例を、または、PowerShell を持たず代わりに NodeJS を使用したいチームの場合は nickliffen/ghas-enablement
を参照してください。
code scanning からログ出力を表示する
リポジトリで code scanning を構成したら、実行したアクションの出力を見ることができます。
-
リポジトリ名の下の [Actions] (アクション) をクリックします。
code scanning ワークフローを実行するためのエントリを含むリストが表示されます。 エントリのテキストは、コミットメッセージに付けるタイトルです。
-
code scanning ワークフローのエントリをクリックします。
-
左側のジョブ名をクリックします。 たとえば、 [分析 (言語)] です。
-
このワークフローの実行時にアクションから出力されるログを確認します。
-
すべてのジョブが完了すると、確認されたすべての code scanning アラートの詳細を表示できます。 詳しくは、「リポジトリのコード スキャンのアラートを管理する」を参照してください。
注釈: code scanning ワークフローを追加するための pull request をリポジトリに発行すると、その pull request からのアラートは、その pull request がマージされるまで ページに直接表示されません。 アラートが見つかった場合は、pull request がマージされる前に、 ページのバナーにある [NUMBER のアラートを検出] リンクをクリックして表示できます。
Pull Requestのチェックを理解する
プルリクエストで実行するよう設定した各 code scanning ワークフローでは、プルリクエストのチェックセクションに常に最低 2 つのエントリが表示されています。 ワークフローの解析ジョブごとに 1 つのエントリがあり、最後のエントリは解析結果です。
code scanning 解析チェックの名前は、「ツール名 / ジョブ名 (トリガー)」という形式になります。 たとえば、C++ のコードの CodeQL 解析には、「CodeQL / Analyze (cpp) (pull_request)」のエントリがあります。 code scanning 分析エントリで [詳細] をクリックして、ログのデータを表示できます。 これにより、解析ジョブが失敗した場合に問題をデバッグできます。 たとえば、コンパイル型言語の code scanning 解析では、アクションがコードをビルドできなかった場合に解析ジョブが失敗します。
code scanning ジョブが完了すると、 GitHub はプルリクエストにより追加されたアラートがないか確認し、チェックのリストに「 の結果 / ツール名」のエントリを追加します。 code scanning が 1 回でも実行された後は、 [詳細] をクリックして分析結果を表示できます。
次の手順
code scanning を構成し、そのアクションを完了させた後は、次のことができます。
- リポジトリに対して生成された code scanning アラートをすべて表示する。 詳しくは、「リポジトリのコード スキャンのアラートを管理する」を参照してください。
- code scanning の構成後に送信された pull request に対して生成されたアラートを表示する。 詳しくは、「Pull RequestでCode scanningアラートをトリアージする」を参照してください。
- 実行完了の通知を構成する。 詳しくは、「通知を設定する」を参照してください。
- code scanning分析が生成したログを表示する。 詳しくは、「Code scanningログの表示」を参照してください。
- CodeQL code scanning の初期構成で発生した問題を調査する。 詳しくは、「CodeQL の詳細セットアップのトラブルシューティング」を参照してください。
- code scanning がリポジトリ内のコードをスキャンする方法をカスタマイズする。 詳しくは、「code scanning のカスタマイズ」を参照してください。