一部のユーザーは CodeQL クエリ ソースを直接操作して、オープン ソースの共有クエリに取り組んだり、投稿したりすることを好みます。
1. CodeQL CLI tar アーカイブをダウンロードする
CodeQL CLI ダウンロード パッケージは、ツールおよびスクリプトと、さまざまな CodeQL 固有のファイルを含む tar アーカイブです。 GitHub Enterprise ライセンスをお持ちでない場合は、このアーカイブをダウンロードすることで、GitHub CodeQL の使用条件に同意したことになります。
CodeQL バンドルを https://github.com/github/codeql-action/releases からダウンロードする必要があります。 このバンドルには次のものが含まれています。
- CodeQL CLI製品
- https://github.com/github/codeql からのクエリとライブラリの互換性のあるバージョン
- バンドルに含まれるすべてのクエリのプリコンパイル済みバージョン
メモ
GitHub Enterprise Server 3.16は、CodeQL CLI バージョン 2.20.3 をお勧めします。
常に CodeQL バンドルを使用する必要があります。 これにより互換性が保証され、CodeQL CLI のダウンロードと CodeQL クエリのチェックアウトを別に行うよりもはるかに良いパフォーマンスが得られます。 1 つの特定のプラットフォームでのみ CLI を実行する場合は、適切な codeql-bundle-PLATFORM.tar.zst ファイルをダウンロードします。 または、サポートされているすべてのプラットフォーム用の CLI を含む codeql-bundle.tar.zst をダウンロードすることもできます。
バンドルには tar.gz バリアントもありますが、これは効率の低い gzip アルゴリズムを使用して圧縮する以外は tar.zst バリアントと同じです。 tar.gz バリアントをダウンロードする唯一の理由は、Zstandard 圧縮アルゴリズムをサポートしていない古い展開ツールを使用している場合です。
2. 新しい CodeQL ディレクトリを作成する
CLI と、使用するクエリとライブラリを配置できる新しいディレクトリを作成します。 たとえば、「 $HOME/codeql-home 」のように入力します。
CLI の組み込み検索操作を行うと、データベースの作成と分析で使用されるファイルのすべての兄弟ディレクトリが自動的に検索されます。 これらのコンポーネントをそれぞれ独自のディレクトリに保持すると、関連のない兄弟ディレクトリは CLI で検索されず、コマンド ラインで追加のオプションを指定せずにすべてのファイルを使用できます。
3. CodeQL クエリのローカル コピーを取得する
[
CodeQL リポジトリ](https://github.com/github/codeql?ref_product=code-scanning&ref_type=engagement&ref_style=text)には、サポートされているすべての言語のCodeQL分析に必要なクエリとライブラリが含まれています。
このリポジトリのコピーを codeql-home にクローンします。
既定では、クローンされたリポジトリのルートは codeql と呼ばれます。
手順 1 で抽出するcodeql-repoと競合しないように、このフォルダーCodeQL CLIの名前を変更します。 コマンド ラインで git を使用する場合は、git clone git@github.com:github/codeql.git codeql-repo フォルダーで codeql-home を実行することで、1 つの手順でリポジトリのクローンと名前変更を行うことができます。
このリポジトリ内では、クエリとライブラリが整理されています CodeQL パック。 クエリ自体と共に、 CodeQL パックには、クエリ ファイルの処理方法を CodeQL CLI に指示する重要なメタデータが含まれています。 詳細については、「CodeQL パックの作成と操作」を参照してください。
メモ
CodeQLクエリには、ユーザーごとに異なるバージョンがあります。 ユース ケースに合った正しいバージョンをチェックアウトしてください。
- 最新の CodeQL CLI リリースで使用することを目的としたクエリについては、
codeql-cli/latestタグ付けされたブランチを確認してください。 このブランチは、 CodeQL CLI を使用して構築したデータベース、または最近 GitHubからダウンロードしたデータベースに使用する必要があります。- 最新の CodeQL クエリについては、
mainブランチを確認してください。 このブランチは、 CodeQLの分析の最新バージョンを表します。
4. CodeQL CLI tar アーカイブを抽出する
手順 2 で作成したディレクトリに tar アーカイブを抽出します。
たとえば、 CodeQL リポジトリのコピーへのパスが $HOME/codeql-home/codeql-repo場合は、CLI を $HOME/codeql-home/に抽出します。
5. codeql を起動する
抽出後、codeql の実行可能ファイルを実行することで、CodeQL プロセスを実行できます。方法は 2 通りあります。
<extraction-root>/codeql/codeqlを実行します。ここで、<extraction-root>は CodeQL CLI パッケージを抽出したフォルダーです。<extraction-root>/codeqlをPATHに追加すると、実行可能ファイルをcodeqlとして実行することができます。
この時点で、CodeQL のコマンドを実行できます。 CodeQL CLI コマンドの完全な一覧については、「CodeQL CLI コマンドのマニュアル」を参照してください。
6. CodeQL CLI セットアップを確認する
CodeQL CLI には、データベースを作成して分析するように正しく設定されていることを確認するために実行できるサブコマンドがあります。
*
codeql resolve languages を実行すると、データベースの作成に使用できる言語が表示されます。 これにより、 CodeQL CLI パッケージで既定でサポートされている言語が一覧表示されます。
*
codeql resolve qlpacksを実行して、CLI で検索できるCodeQL パックを表示します。 これにより、CodeQLで直接使用できるすべてのCodeQL CLI パックの名前が表示されます。 これには、次のものが含まれます。
- サポートされている各言語のクエリ パック (例:
codeql/{language}-queries)。 これらのパックには、それぞれの分析で実行される標準クエリが含まれています。 - サポートされている各言語のライブラリ パック (例:
codeql/{language}-all)。 これらのパックには、クエリの作成に役立つ制御フローやデータ フロー ライブラリなどのクエリ ライブラリが含まれています。 - サポートされている各言語のサンプル パック (例:
codeql/{language}-examples)。 これらのパックには、クエリ ライターが役立つ可能性がある CodeQL の便利なスニペットが含まれています。 - 古い製品を使用して作成されたカスタム クエリとライブラリが、お使いのバージョンの CodeQLと互換性があることを保証するレガシ パック。