メモ
この機能を使用するには、サイト管理者が code scanning を有効にする必要があります。 詳しくは、「アプライアンス用コードスキャンの構成」をご覧ください。
Enterprise の所有者が Enterprise レベルで GitHub Advanced Security ポリシーを設定している場合、code scanning を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」をご覧ください。
GitHub Actions を使用して GitHub 内で code scanning を実行する代わりに、外部の継続的インテグレーションまたは継続的デリバリー/デプロイ (CI/CD) システムでコードを分析し、結果を GitHub にアップロードできます。
メモ
GitHub で code scanning の結果として表示する SARIF データのアップロードは、GitHub Advanced Security が有効になっている organization 所有のリポジトリでサポートされます。 詳しくは、「リポジトリのセキュリティと分析設定を管理する」をご覧ください。
分析ツールの設定
まず、選択した分析ツールをダウンロードし、CI システムで設定する必要があります。
CodeQL CLI を使用している場合は、CodeQL code scanning 分析を実行するすべての CI サーバーで、CodeQL CLI バンドルの完全なコンテンツを利用できるようにする必要があります。 詳しくは、「CodeQL CLI を設定する」をご覧ください。
分析ツールを CI システム内のサーバーで使用できるようにすると、データを生成する準備が整います。
コードの分析
CodeQL CLI または別の分析ツールを使用してコードを分析するには、コードベース環境を分析して設定するコードをチェックし、依存関係が使用可能であることを確認します。 コードベースのビルド コマンドを見つけることもできます。通常は CI システムの構成ファイルで使用できます。
その後、コードベースを分析して結果を生成する手順を完了できます。これは、使用している静的分析ツールによって異なります。
CodeQL CLI を使用している場合は、まずコードから CodeQL データベースを作成し、次にデータベースを分析して SARIF 結果を生成する必要があります。 詳細については、「CodeQL 分析用コードを準備する」および「CodeQL クエリによるコード分析」を参照してください。
GitHub での認証のためのトークンの生成
各 CI サーバーには、CodeQL CLI、REST API、または別のメソッドを使用しているかどうかに関係なく、結果を GitHub にアップロードするために使用する GitHub App または personal access token が必要です。 アクセス トークン、またはsecurity_events 書き込みアクセス許可がある GitHub App を使用する必要があります。 CI サーバーが既にこのスコープのトークンを使用して GitHub からリポジトリをチェックアウトしている場合、同じトークンを使用できる場合があります。 それ以外の場合は、security_events 書き込みアクセス許可を持つ新しいトークンを作成し、これを CI システムのシークレット ストアに追加します。 詳細については、「GitHub App の作成について」と「個人用アクセス トークンを管理する」を参照してください。
結果を GitHub にアップロードするさまざまな方法の詳細については、「SARIF ファイルを GitHub にアップロードする」を参照してください。
結果を GitHub にアップロードする
コードを分析し、SARIF 結果を生成し、GitHub で認証できることを確認したら、結果を GitHub にアップロードできます。 結果のアップロードに使用できるさまざまな方法の詳細については、「SARIF ファイルを GitHub にアップロードする」を参照してください。
CodeQL CLI を使って結果を GitHub にアップロードする方法の詳細については、「CodeQL 分析結果を GitHub にアップロードする」を参照してください。
デフォルトでは、code scanningはリポジトリの分析ごとに1つのSARIF結果ファイルを期待します。 したがって、コミットから2つめのSARIF結果ファイルをアップロードすると、それはデータのオリジナルのセットの置き換えとして扱われます。 たとえば、分析ツールが分析する言語ごと、または使用するルールのセットごとに異なる SARIF ファイルを生成する場合、1 つの分析に対して 2 つの異なる SARIF ファイルをアップロードすることができます。 リポジトリ内のコミットに対して複数の結果セットをアップロードする場合は、各結果セットを一意のセットとして識別する必要があります。 SARIF アップロードのカテゴリの指定方法は、分析方法によって異なります。