Skip to main content

マルチリポゞトリ バリアント分析を䜿甚した倧芏暡な CodeQL ク゚リの実行

Visual Studio Code で、GitHub 䞊の倧量のレポゞトリに察しお CodeQL ク゚リを実行できたす。

マルチリポゞトリ バリアント分析を䜿甚した倧芏暡な CodeQL ク゚リの実行に぀いお

マルチリポゞトリ バリアント分析 (MRVA) では、Visual Studio Code で、CodeQL ク゚リを GitHub 䞊の最倧 1,000 個のリポゞトリの䞀芧に察しお実行できたす。

リポゞトリの䞀芧に察しお MRVA を実行するず、分析に䜿甚できる CodeQL デヌタベヌスを持぀各リポゞトリに察しおク゚リが実行されたす。 GitHub は、CodeQL を䜿甚しお code scanning を実行するすべおのリポゞトリを含む、数千のパブリック リポゞトリの既定のブランチ甚の最新 CodeQL デヌタベヌスを䜜成し、栌玍したす。

分析のためにリストにリポゞトリを远加する前に、既定たたは高床なセットアップで、GitHub に察しお CodeQL を䜿甚しお code scanning を有効にする必芁がありたす。 CodeQL を䜿甚した code scanning の有効化の詳现に぀いおは、「コヌド スキャンの既定セットアップの構成」を参照しおください。

MRVA が CodeQL デヌタベヌスに察しお GitHub.com に察しおク゚リを実行する仕組み

MRVA を実行するず、分析は GitHub Actions を䜿甚しお完党に実行されたす。 ワヌクフロヌを䜜成する必芁はありたせんが、Visual Studio Code 拡匵機胜の CodeQL がコントロヌラヌ リポゞトリずしお䜿甚するリポゞトリを指定する必芁がありたす。 各リポゞトリの分析が完了するず、結果を衚瀺するために VS Code に送信されたす。

CodeQL 拡匵機胜は、ラむブラリずラむブラリの䟝存関係を含む CodeQL パックをビルドしたす。 CodeQL パックず遞択したリポゞトリ リストは、GitHub 䞊の API ゚ンドポむントにポストされたす。これによっお、コントロヌラヌ リポゞトリ内の GitHub Actions 動的ワヌクフロヌがトリガヌされたす。 ワヌクフロヌは耇数の䞊列ゞョブを起動しお、リスト内のリポゞトリに察しお CodeQL ク゚リを実行し、ク゚リの実行を最適化したす。 各リポゞトリが分析されるず、結果が凊理され、VS Code に衚瀺されたす。

前提条件

  • 最初のマルチリポゞトリ バリアント分析を実行する前に、コントロヌラヌ リポゞトリを定矩する必芁がありたす。

  • コントロヌラヌ リポゞトリは空でもかたいたせんが、少なくずも 1 ぀のコミットが必芁です。

  • GitHub.com では、パブリック リポゞトリのみを分析する予定の堎合、コントロヌラヌ リポゞトリの可芖性を "パブリック" にするこずができたす。 バリアント分析は無料です。

  • GitHub.com でプラむベヌト リポゞトリたたは内郚リポゞトリを分析する必芁がある堎合は、コントロヌラヌ リポゞトリの可芖性を "プラむベヌト" にする必芁がありたす。

無料制限を超えるプラむベヌト リポゞトリたたは内郚リポゞトリでバリアント分析を実行するために䜿甚するアクション (分) はすべお、リポゞトリの所有者に課金されたす。 無料時間ず請求に関する詳现に぀いおは、「GitHub Actions の課金」を参照しおください。

MRVA 甚のコントロヌラヌ リポゞトリの蚭定

  1. [バリアント分析リポゞトリ] ビュヌで、[コントロヌラヌ リポゞトリの蚭定] をクリックしお、コントロヌラヌ リポゞトリのフィヌルドを衚瀺したす。

    [バリアント分析リポゞトリ] ビュヌのスクリヌンショット。 [コントロヌラヌ リポゞトリのセットアップ] ボタンが濃いオレンゞ色で匷調衚瀺されおいたす。

  2. コントロヌラヌ リポゞトリずしお䜿甚する GitHub にリポゞトリの所有者ず名前を入力し、Enter キヌを抌したす。

  3. GitHub で認蚌するように求められた堎合は、指瀺に埓っおアカりントにサむンむンしたす。 完了するず、GitHub 認蚌からのプロンプトが衚瀺され、Visual Studio Code で開くためのアクセス蚱可が求められる堎合がありたす。[Open] をクリックしたす。

コントロヌラヌ リポゞトリの名前は、CodeQL 拡匵機胜の蚭定に保存されたす。 コントロヌラヌ リポゞトリを線集する方法に぀いおは、「蚭定のカスタマむズ」を参照しおください。

MRVA を䜿甚した倧芏暡なク゚リの実行

  1. 既定では、[バリアント分析リポゞトリ] ビュヌには、分析する蚀語の GitHub.com の䞊䜍 10 個、䞊䜍 100 個、䞊䜍 1000 個のパブリック リポゞトリの既定のリストが衚瀺されたす。 コントロヌラヌ リポゞトリが SUBDOMAIN.ghe.com でホストされおいる堎合、これらのリストは䜿甚できたせん。

  2. 必芁に応じお、新しいリポゞトリ、組織、リストを远加できたす。

    1. [バリアント分析リポゞトリ] ビュヌで、[+] をクリックしお新しいデヌタベヌスを远加したす。

    2. ドロップダりン メニュヌから、[GitHub リポゞトリから] たたは [GitHub 組織たたは所有者のすべおのリポゞトリ] を遞択したす。

    3. フィヌルドに、䜿甚するリポゞトリたたは組織の識別子を入力したす。

  3. ク゚リの実行察象の GitHub リポゞトリを遞択したす (耇数可)。

    [バリアント分析リポゞトリ] ビュヌのスクリヌンショット。 "octo-org/octo-repo" 行は青で匷調衚瀺され、その [遞択] ボタンはオレンゞ色で囲たれおいたす。

  4. 実行するク゚リを開き、ク゚リ ファむルで右クリックし、CodeQL: バリアント分析の実行 を遞択しおバリアント分析を開始したす。

メモ

バリアント分析の実行をキャンセルするには、[バリアント分析結果] ビュヌで [Stop query] をクリックしたす。

分析のために単䞀の GitHub リポゞトリたたは organization を遞択する

  1. [バリアント分析リポゞトリ] ビュヌで、[+] をクリックしお新しいデヌタベヌスを远加したす。

  2. ドロップダりン メニュヌから、[GitHub リポゞトリから] たたは [GitHub 組織たたは所有者のすべおのリポゞトリ] を遞択したす。

  3. フィヌルドに、䜿甚するリポゞトリたたは組織の識別子を入力したす。

゚ラヌず譊告

MRVA を実行するず、゚ラヌず譊告が 2 ぀の䞻芁な堎所に衚瀺されたす。

  • Visual Studio Code ゚ラヌ: CodeQL パックを䜜成し、分析を GitHub に送信する際の問題は、アプリケヌションの右䞋隅で Visual Studio Code ゚ラヌずしおレポヌトされたす。 情報は、[問題] ビュヌでも確認できたす。

  • バリアント分析結果: バリアント分析の実行に関する問題は、このビュヌで報告されたす。

結果の調査

GitHub でバリアント分析を実行するワヌクフロヌが実行されるずすぐに、[バリアント分析結果] ビュヌが開き、結果は準備され次第衚瀺されたす。 このビュヌを䜿甚するず、進行状況の監芖、゚ラヌの確認、コントロヌラヌ リポゞトリ内のワヌクフロヌ ログぞのアクセスを行うこずができたす。

"FileAccessToHttp.ql" の実行を瀺す [バリアント分析結果] のスクリヌンショット。 青い円は、怜出された結果の数を瀺し、"-" は実行䞭を瀺しおいたす。

バリアント分析の実行がスケゞュヌルされおいる堎合、[結果] ビュヌは自動的に開きたす。 最初に、このビュヌには、分析甚にスケゞュヌルされたすべおのリポゞトリの䞀芧が衚瀺されたす。 各リポゞトリが分析されるず、ビュヌが曎新され、結果の数の抂芁が衚瀺されたす。 リポゞトリの詳现な結果 (結果パスを含む) を衚瀺するには、リポゞトリ名をクリックしたす。

リポゞトリごずに、次の情報が衚瀺されたす。

  • ク゚リで芋぀かる結果の数

  • リポゞトリの衚瀺範囲

  • 分析がただ実行䞭か完了しおいるか

  • リポゞトリが GitHub に察しお持぀星の数

リポゞトリの結果の衚瀺

  1. リポゞトリ名をクリックするず、各結果の抂芁が衚瀺されたす。

  2. GitHub の゜ヌス ファむルぞのリンクを䜿甚しお、各結果で確認できる情報を探玢したす。 デヌタ フロヌ ク゚リの堎合は、[パスの衚瀺] リンクもありたす。

    GitHub ゜ヌス ファむルぞの青いリンクが衚瀺された [バリアント分析結果] ビュヌのスクリヌンショット。 [パスの衚瀺] リンクが濃いオレンゞ色の枠線で匷調衚瀺されおいたす。

結果を゚クスポヌトする

結果を゚クスポヌトしおさらに分析したり、コラボレヌタヌず怜蚎したりするこずができたす。 [結果] ビュヌで、[Export results] をクリックしお、結果を GitHub のシヌクレット gist たたはワヌクスペヌス内の Markdown ファむルに゚クスポヌトしたす。

リポゞトリのカスタム リストの䜜成

メモ

CodeQL の分析では、ク゚リを実行する察象の CodeQL デヌタベヌスが垞に必芁です。 リポゞトリの䞀芧に察しおバリアント分析を実行するず、珟圚 CodeQL デヌタベヌスをダりンロヌドできるリポゞトリに察しおのみク゚リが実行されたす。 リポゞトリをバリアント分析に䜿甚できるようにする最善の方法は、CodeQL で code scanning を有効にするこずです。 CodeQL を䜿甚した code scanning の有効化の詳现に぀いおは、「コヌド スキャンの既定セットアップの構成」を参照しおください。

  1. [バリアント分析リポゞトリ] ビュヌで、[リストの远加] アむコンをクリックしたす。

    [バリアント分析結果] ビュヌのスクリヌンショット。 [add-list] アむコンが濃いオレンゞ色で匷調衚瀺されおいたす。

  2. ク゚リの新しい名前を入力し、Enter キヌを抌したす。

  3. ビュヌでリストを遞択し、[+] をクリックしおリポゞトリをリストに远加したす。

リポゞトリのカスタム リストの管理

リスト名たたはリスト内のリポゞトリ名を右クリックし、コンテキスト メニュヌからオプションを遞択するこずで、カスタム リストを管理および線集できたす。

カスタム リストは、ワヌクスペヌス内の databases.json ファむルに栌玍されたす。 このファむルを Visual Studio Code で盎接線集する堎合は、ビュヌ ヘッダヌで {} をクリックするず開くこずができたす。

たずえば、ク゚リの結果を含むリポゞトリのセットを匕き続き分析する堎合は、[バリアント分析結果] ビュヌの [リポゞトリ リストのコピヌ] をクリックしお、結果を含むリポゞトリのみの䞀芧を JSON ずしおクリップボヌドに远加したす。

次のスニペットの䟋では、my-organization/my-repository にク゚リの結果が含たれおいたす。

{
    "name": "new-repo-list",
    "repositories": [
        "my-organization/my-repository"
    ]
}

その埌、[バリアント分析リポゞトリ] ビュヌで簡単にアクセスできるように、databases.json ぞリポゞトリの new-repo-list を挿入したす。

GitHub Code Search を䜿甚しおカスタム リストにリポゞトリを远加する

メモ

この機胜では、GitHub のコヌド怜玢 API による埓来のコヌド怜玢が䜿われたす。 䜿甚する構文に぀いお詳しくは、「コヌドの怜玢 (レガシ)」を参照しおください。

CodeQL 拡匵機胜でコヌド怜玢を盎接䜿甚しお、GitHub のリポゞトリのサブセットをカスタム リストに远加できたす。

たずえば、GitHub 䞊の rails organization 内のすべおのリポゞトリを远加するには、org:rails で怜玢したす。

怜玢を行うごずに、最倧 1,000 個のリポゞトリをカスタム リストに远加できたす。

  1. [バリアント分析リポゞトリ] ビュヌで、リポゞトリを远加するリストを遞択したす。 新しいリストを䜜成するこずも、リポゞトリが既に含たれおいる既存のリストを遞択するこずもできたす。

  2. 遞択したリストを右クリックし、[GitHub Code Search でリポゞトリを远加する] をクリックしたす。

  3. アプリケヌションの䞊郚に衚瀺されるポップアップで、怜玢バヌの䞋にあるドロップダりンの遞択肢から怜玢する蚀語を遞択したす。

  4. 怜玢バヌに、䜿甚する怜玢ク゚リを入力し、Enter キヌを抌したす。

テキスト Searching for repositories... が衚瀺されたボックスで、アプリケヌションの右䞋隅に怜玢の進行状況を衚瀺できたす。 [キャンセル] をクリックするず、リポゞトリは䞀芧に远加されたせん。 完了するず、結果のリポゞトリが [バリアント分析リポゞトリ] ビュヌのカスタム リストの䞋のドロップダりンに衚瀺されたす。

結果ずしお埗られるリポゞトリの䞭には、CodeQL デヌタベヌスが含たれおいないものがあり、䞀郚のリポゞトリは Visual Studio Code の CodeQL 拡匵機胜によるアクセスを蚱可しない堎合がありたす。 リストで分析を実行するず、[バリアント分析結果] ビュヌに、分析されたリポゞトリ、アクセスが拒吊されたリポゞトリ、CodeQL デヌタベヌスが存圚しなかったリポゞトリが衚瀺されたす。

セルフホステッド ランナヌ䞊でマルチリポゞトリ バリアント分析を䜿っお CodeQL ク゚リを実行する

セルフホステッド ランナヌでマルチ リポゞトリ バリアント分析を䜿っお CodeQL ク゚リを実行するには、たずセルフホステッド ランナヌをコントロヌラヌ リポゞトリに远加しおいるこずを確認するか、コントロヌラヌ リポゞトリが organization レベルたたは Enterprise レベルのランナヌにアクセスできるこずを確認する必芁がありたす。

次に、䜿うセルフホステッド ランナヌの JSON 圢匏のラベル䞀芧を含め、MRVA_RUNNER_OS ずいう新しいアクション リポゞトリ倉数をコントロヌラヌ リポゞトリに远加する必芁がありたす。 次に䟋を瀺したす。

["self-hosted", "macOS", "ARM64"]

メモ

コントロヌラヌ リポゞトリの蚭定のアクション リポゞトリ倉数の䞋に MRVA_RUNNER_OS 倉数を蚭定する必芁がありたす。アクション蚭定やワヌクフロヌの .yml ファむル内の環境倉数やアクション シヌクレットではありたせん。 「倉数に情報を栌玍する」を参照しおください。

詳现に぀いおは、「自己ホストランナヌの远加」および「グルヌプを䜿甚しおセルフホストランナヌぞのアクセスを管理する」を参照しおください。

セルフホステッド ランナヌ䞊でマルチリポゞトリ バリアント分析を含むク゚リを実行した堎合、分析は完党にセルフホステッド ランナヌ䞊で実行されたす。 新しいワヌクフロヌを䜜成する必芁はありたせんが、Visual Studio Code 拡匵機胜の CodeQL がコントロヌラヌ リポゞトリずしお䜿うリポゞトリを指定する必芁がありたす。 各リポゞトリの分析が完了するず、結果を衚瀺するために VS Code に送信されたす。