Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。
現在、GitHub AE は限定的リリースです。

CodeQL CLI の使用を開始する

CodeQL CLI の使用を開始するには、データベースの作成と分析に必要なツールとライブラリにアクセスできるように CLI を設定する必要があります。

GitHub CodeQL は、インストール時にユーザーごとにライセンスされます。 CodeQL は、ライセンスの制限の下で特定のタスクでのみ使用できます。 詳しくは、「CodeQL CLI について」を参照してください。

GitHub Advanced Security ライセンスがある場合は、CodeQL を使用して、自動分析、継続的インテグレーション、継続的デリバリーを行うことができます。 詳しくは、「GitHub Advanced Security について」を参照してください。

注: この記事は、2023 年 1 月に CodeQL ドキュメント Web サイトから移行されました。

CodeQL CLI の使用を開始する

CodeQL コマンドを実行するには、データベースの作成と分析に必要なツール、クエリ、ライブラリにアクセスできるように CLI を設定する必要があります。

CodeQL CLI を設定する

CodeQL CLI は、さまざまなユース ケースとディレクトリ構造をサポートするように設定できます。 すぐに使い始めるには、次の手順で説明するように、比較的簡単なセットアップを採用することをお勧めします。

Linux、Windows、または macOS バージョン 10.14 ("Mojave") 以前を使用している場合は、次の手順に従ってください。 macOS バージョン 10.15 ("Catalina") 以降の場合は、いくつかの手順に関する追加の注意事項があります。 Apple シリコン (例: Apple M1) の macOS を使用している場合は、Xcode コマンド ライン開発者ツールRosetta 2 がインストールされていることを確実にします。

注: 現在、CodeQL CLI は glibc 以外の Linux ディストリビューション (muslc ベースの Alpine Linux など) と互換性がありません。

コード スキャン アラートとして GitHub に表示する結果を作成するために CI システムに CodeQL CLI をインストールする方法については、「CI システムへの CodeQL CLI のインストール」を参照してください。

1. CodeQL CLI の zip パッケージをダウンロードする

CodeQL CLI ダウンロード パッケージは、ツールおよびスクリプトと、さまざまな CodeQL 固有のファイルを含む zip アーカイブです。 GitHub Enterprise ライセンスをお持ちでない場合は、このアーカイブをダウンロードすることで、GitHub CodeQL の使用条件に同意したことになります。

重要: ダウンロードできる CLI には、ユース ケースに応じていくつかのバージョンがあります。

  • 最新の CodeQL ツールと機能を使用する場合は、latest というタグが付いたバージョンをダウンロードします。
  • GitHub Enterprise サーバーにアップロードするコード スキャン データを生成する場合は、CI システムで使用している CodeQL CLI と互換性のあるバージョンをダウンロードします。 詳細については、「CI システムでの CodeQL CLI のインストール」を参照してください。

Linux、Windows、または macOS バージョン 10.14 ("Mojave") 以前を使用している場合は、必要なバージョンの zip アーカイブをダウンロードするだけです。

特定のプラットフォーム用の CLI が必要な場合は、適切な codeql-PLATFORM.zip ファイルをダウンロードします。 または、サポートされているすべてのプラットフォーム用の CLI を含む codeql.zip をダウンロードすることもできます。

macOS "Catalina" (またはそれ以降) のユーザー向けのダウンロード情報

macOS バージョン 10.15 ("Catalina")、バージョン 11 ("Big Sur")、または今後のバージョン 12 ("Monterey") を使用する場合は、Web ブラウザーで zip ファイルが自動的に抽出されないようにする必要があります。 Safari を使用している場合は、CodeQL CLI の zip アーカイブをダウンロードする前に、次の手順を実行します。

  1. Safari を開きます。
  2. [Safari] メニューの [環境設定...] を選びます。
  3. [一般] タブをクリックします。
  4. [ダウンロード後、"安全な" ファイルを開く] というラベルの付いたチェック ボックスがオフになっていることを確認します。

2. zip アーカイブを抽出する

Linux、Windows、macOS ユーザー (バージョン 10.14 "Mojave" 以前) の場合は、単純に zip アーカイブを抽出します。

macOS "Catalina" (またはそれ以降) のユーザー向けの抽出情報

"Catalina"、"Big Sur"、または "Monterey" の macOS ユーザーは、ターミナルで次のコマンドを実行する必要があります。ここで、${extraction-root} は CodeQL CLI の zip アーカイブの抽出先となるディレクトリのパスです。

  1. mv ~/Downloads/codeql\*.zip ${extraction-root}
  2. cd ${extraction-root}
  3. /usr/bin/xattr -c codeql\*.zip
  4. unzip codeql\*.zip

3. codeql を起動する

抽出後、codeql の実行可能ファイルを実行することで、CodeQL プロセスを実行できます。方法は 2 通りあります。

  • <extraction-root>/codeql/codeql を実行します。ここで、<extraction-root> は CodeQL CLI パッケージを抽出したフォルダーです。
  • <extraction-root>/codeqlPATH に追加すると、実行可能ファイルを codeql として実行することができます。

この時点で、CodeQL のコマンドを実行できます。 CodeQL CLI コマンドの完全な一覧については、「CodeQL CLI コマンドのマニュアル」を参照してください。

注: codeqlPATH に追加すると、CodeQL からアクセス可能になり、Visual Studio Code でクエリをコンパイルして実行できるようになります。 CodeQL CLI にアクセスするように VS Code を構成する方法について詳しくは、「Visual Studio Code で CodeQL を設定する」を参照してください。

4. CodeQL CLI のセットアップを確認する

CodeQL CLI には、データベースの作成と分析ができるように正しく設定されたことを確認するために実行できるサブコマンドがあります。

  • codeql resolve languages を実行すると、データベースの作成に使用できる言語が表示されます。 これにより、CodeQL CLI パッケージで既定でサポートされている言語が一覧表示されます。

または、codeql database analyze コマンドの --download フラグを使用して、分析中にクエリ パックをダウンロードすることもできます。

CodeQL ソース コード ディレクトリをチェックアウトする

オープンソースの共有クエリについて取り組んだり貢献したりするために、CodeQL のクエリ ソースを直接操作することを希望するユーザーもいます。 これを行うには、次の手順をお勧めします。 次の手順は、上で説明した CodeQL パッケージの操作に代わる、やや複雑な方法であることに注意してください。

1. CodeQL CLI の zip をダウンロードする

前のセクションの手順 1 に従います。

2. 新しい CodeQL ディレクトリを作成する

CLI と、使用するクエリとライブラリを配置できる新しいディレクトリを作成します。 たとえば、$HOME/codeql-home のようにします。

CLI の組み込み検索操作を行うと、データベースの作成と分析で使用されるファイルのすべての兄弟ディレクトリが自動的に検索されます。 これらのコンポーネントをそれぞれ独自のディレクトリに保持すると、関連のない兄弟ディレクトリは CLI で検索されず、コマンド ラインで追加のオプションを指定せずにすべてのファイルを使用できます。

3. CodeQL クエリのローカル コピーを取得する

CodeQL リポジトリには、サポートされているすべての言語の CodeQL 分析に必要なクエリとライブラリが含まれています。 このリポジトリのコピーを codeql-home にクローンします。

既定では、クローンされたリポジトリのルートは codeql と呼ばれます。 手順 4 で抽出する CodeQL CLI と競合しないように、このフォルダー codeql-repo の名前を変更します。 コマンド ラインで git を使用する場合は、codeql-home フォルダーで git clone git@github.com:github/codeql.git codeql-repo を実行することで、1 つの手順でリポジトリのクローンと名前変更を行うことができます。

重要: CodeQL クエリには、ユーザーごとに異なるバージョンがあります。 ユース ケースに合った正しいバージョンをチェックアウトしてください。

  • 最新の CodeQL CLI リリースで使用することを目的としたクエリについては、codeql-cli/latest というタグが付いたブランチをチェックアウトします。 CodeQL CLI を使用してビルドしたか、GitHub のコード スキャンからフェッチしたか、または GitHub.com から最近ダウンロードしたデータベースには、このブランチを使用する必要があります。
  • 最新の CodeQL クエリについては、main ブランチをチェックアウトします。 このブランチは、CodeQL の分析の最新バージョンを表します。

4. ZIP アーカイブを抽出する

Linux、Windows、macOS ユーザー (バージョン 10.14 "Mojave" 以前) の場合は単に、手順 2 で作成したディレクトリに zip アーカイブを抽出します。

たとえば、CodeQL リポジトリのコピーへのパスが $HOME/codeql-home/codeql-repo の場合は、CLI を $HOME/codeql-home/ に抽出します。

5. codeql を起動する

前のセクションの手順 3 を参照してください。

6. CodeQL CLI のセットアップを確認する

CodeQL CLI には、データベースの作成と分析ができるように正しく設定されたことを確認するために実行できるサブコマンドがあります。

  • codeql resolve languages を実行すると、データベースの作成に使用できる言語が表示されます。 これを使用すると、CodeQL CLI パッケージで既定でサポートされている言語が一覧表示されます。
  • codeql resolve qlpacks を実行して、CLI で検索できる CodeQL パックを表示します。 これにより、CodeQL CLI で直接使用可能なすべての CodeQL パックの名前が表示されます。 これには、次のものが含まれます。
  • サポートされている各言語のクエリ パック (例: codeql/{language}-queries)。 これらのパックには、それぞれの分析で実行される標準クエリが含まれています。
  • サポートされている各言語のライブラリ パック (例: codeql/{language}-all)。 これらのパックには、クエリの作成に役立つ制御フローやデータ フロー ライブラリなどのクエリ ライブラリが含まれています。
  • サポートされている各言語のサンプル パック (例: codeql/{language}-examples)。 これらのパックには、クエリの作成に役立つ CodeQL の便利なスニペットが含まれています。
  • レガシ パックを使用すると、以前の製品を使用して作成されたカスタム クエリとライブラリが、お使いのバージョンの CodeQL に対応できるようになります。

CodeQL CLI の 2 つのバージョンを使用する

最新の CodeQL 機能を使用してクエリまたは CodeQL テストを実行するだけでなく、GitHub Enterprise Server で特定のバージョンの CodeQL コード スキャンと互換性のあるデータベースを準備しようとしている場合は、2 つのバージョンの CLI をインストールすることが必要になる場合があります。 推奨されるディレクトリのセットアップは、インストールするバージョンによって異なります。

  • 両方のバージョンが 2.0.2 (またはそれ以降) の場合は、両方の CLI アーカイブを同じ親ディレクトリに展開できます。
  • 少なくとも 1 つのバージョンが 2.0.1 (またはそれ以前) の場合、展開された CLI アーカイブを同じ親ディレクトリに置くことはできませんが、同じ祖父母ディレクトリを共有できます。 たとえば、バージョン 2.0.2 を $HOME/codeql-home/codeql-cli に展開するのなら、古い方のバージョンを $HOME/codeql-older-version/old-codeql-cli に展開する必要があります。 ここで、一般的な祖父母は $HOME ディレクトリです。