注: この記事は、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 アーカイブをダウンロードする前に、次の手順を実行します。
- Safari を開きます。
- [Safari] メニューの [環境設定...] を選びます。
- [一般] タブをクリックします。
- [ダウンロード後、"安全な" ファイルを開く] というラベルの付いたチェック ボックスがオフになっていることを確認します。
2. zip アーカイブを抽出する
Linux、Windows、macOS ユーザー (バージョン 10.14 "Mojave" 以前) の場合は、単純に zip アーカイブを抽出します。
macOS "Catalina" (またはそれ以降) のユーザー向けの抽出情報
"Catalina"、"Big Sur"、または "Monterey" の macOS ユーザーは、ターミナルで次のコマンドを実行する必要があります。ここで、${extraction-root}
は CodeQL CLI の zip アーカイブの抽出先となるディレクトリのパスです。
mv ~/Downloads/codeql\*.zip ${extraction-root}
cd ${extraction-root}
/usr/bin/xattr -c codeql\*.zip
unzip codeql\*.zip
3. codeql
を起動する
抽出後、codeql
の実行可能ファイルを実行することで、CodeQL プロセスを実行できます。方法は 2 通りあります。
<extraction-root>/codeql/codeql
を実行します。ここで、<extraction-root>
は CodeQL CLI パッケージを抽出したフォルダーです。<extraction-root>/codeql
をPATH
に追加すると、実行可能ファイルをcodeql
として実行することができます。
この時点で、CodeQL のコマンドを実行できます。 CodeQL CLI コマンドの完全な一覧については、「CodeQL CLI コマンドのマニュアル」を参照してください。
注: codeql
を PATH
に追加すると、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
ディレクトリです。