Skip to main content

ライブラリ パスを解決する

[ディープ プラミング] クエリの QL ライブラリ パスと dbscheme を決定します。

この機能を使用できるユーザーについて

CodeQL は、次の種類のリポジトリで使用できます:

この記事の内容

このコンテンツでは、CodeQL CLI の最新リリースについて説明します。 このリリースについて詳しくは、 https://github.com/github/codeql-cli-binaries/releases をご覧ください。

以前のリリースの、このコマンドで使えるオプションを詳しく確認するには、ターミナルで --help オプションを指定してコマンドを実行してください。

構文

Shell
codeql resolve library-path (--query=<qlfile> | --dir=<dir> | --root-pack=<pkgname>) <options>...

説明

[ディープ プラミング] クエリの QL ライブラリ パスと dbscheme を決定します。

特定のクエリをコンパイルする必要がある QL ライブラリ パスを決定します。 この計算は、クエリのコンパイルが必要になる場合があるいくつかのサブコマンドで暗黙的に行われます。 (a) トラブルシューティングに役立ち、(b) 正確な制御が必要な特別な場合にパスを変更するための開始点を提供するために、別のプラミング コマンドとして公開されています。

QL クエリの言語の自動検出にも依存する可能性があるため、このコマンドを使って、クエリをコンパイルする言語と dbscheme も検出します。

このコマンドは非常に内部的であり、QL 言語のエコシステムが進化するにつれて、その動作や存在が大きな通知なしに変更される可能性があります。

[オプション]

主なオプション

--[no-]find-extractors

[詳細設定] クエリが依存する QL パックの extractor フィールドの概要を出力に含めます。 これは少数のまれな内部ケースにのみ使われ、計算にさらに多くの作業が必要になる場合があるため、既定ではオンになっていません。

--format=<fmt>

出力形式を選びます。 以下を選択できます。

lines "(既定値)": コマンド ライン引数を 1 行ずつ出力します。__

json: すべてのデータを含む JSON オブジェクトを出力します。

path: 計算されたライブラリ パスのみを出力します。

dbscheme: 検出された dbscheme のみを出力します。

cache: 既定のコンパイル キャッシュの場所を出力します。存在しない場合は何も出力しません。

呼び出しコマンドのコマンド ラインからのオプション

--search-path=<dir>[:<dir>...]

QL パックが見つかる可能性があるディレクトリの一覧。 各ディレクトリは、QL パック (またはルートに .codeqlmanifest.json ファイルを含むパックのバンドル)、または 1 つ以上のこのようなディレクトリの直接の親ディレクトリのいずれかです。

パスに複数のディレクトリを含める場合は、それらの順序で、それらの間の優先順位を定義します。解決する必要があるパック名が複数のディレクトリ ツリーで一致する場合は、最初に指定したものが優先されます。

オープンソースの CodeQL リポジトリのチェックアウトでこれを指定すると、そこにある言語の 1 つを照会するときに機能するはずです。

CodeQL リポジトリを、アンパックされた CodeQL ツールチェーンの兄弟としてチェックアウトしている場合、このオプションを指定する必要はありません。このような兄弟ディレクトリは、他の方法では見つからない QL パックについて常に検索されます (このデフォルトが機能しない場合は、ユーザーごとの構成ファイルで --search-path を一度だけ設定することを強くお勧めします)。

(注: Windows では、パスの区切り記号は ; です)。

--additional-packs=<dir>[:<dir>...]

このディレクトリ リストを指定した場合、ディレクトリは、--search-path で指定したものより前に、パックについて検索されます。 これらの間の順序は重要ではありません。このリストの 2 か所でパック名が見つかった場合は、エラーです。

これは、デフォルトのパスにも表示される新しいバージョンのパックを一時的に開発している場合に役立ちます。 一方、構成ファイルでこのオプションをオーバーライドすることは "お勧めしません"。内部アクションによっては、このオプションがオンザフライで追加され、構成済みの値がオーバーライドされます。__

(注: Windows では、パスの区切り記号は ; です)。

--library-path=<dir>[:<dir>...]

[詳細設定] QL ライブラリの生インポート検索パスに追加するオプションのディレクトリ リスト。 これを使う必要があるのは、QL パックとしてパッケージ化されていない QL ライブラリを使用する場合のみです。

(注: Windows では、パスの区切り記号は ; です)。

--dbscheme=<file>

[詳細設定] どの dbscheme クエリに対してコンパイルする必要があるかを明示的に定義します。 これは、自分が何をしているかを確信している呼び出し元のみが指定する必要があります。

--compilation-cache=<dir>

[詳細設定] コンパイル キャッシュとして使用する追加のディレクトリを指定します。

--no-default-compilation-cache

[詳細設定] クエリを含む QL パックや CodeQL ツールチェーン ディレクトリなどの標準の場所でコンパイル キャッシュを使用しません。

CodeQL パッケージ マネージャーを構成するためのオプション

--registries-auth-stdin

<registry_url>=<token> ペアのコンマ区切りのリストを渡して、GitHub Enterprise Server コンテナー レジストリに対して認証を行います。

たとえば、https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 を渡して、 2 つの GitHub Enterprise Server インスタンスに対して認証を行うことができます。

これを使って、CODEQL_REGISTRIES_AUTH および GITHUB_TOKEN 環境変数をオーバーライドします。 github.com コンテナー レジストリに対する認証のみが必要な場合は、代わりに、より単純な --github-auth-stdin オプションを使って認証できます。

--github-auth-stdin

標準入力を介して github.com GitHub Apps トークンまたは個人用アクセス トークンを渡して、github.com コンテナー レジストリに対して認証を行います。

GitHub Enterprise Server コンテナー レジストリに対して認証を行うには、--registries-auth-stdin を渡すか、CODEQL_REGISTRIES_AUTH 環境変数を使います。

これは、GITHUB_TOKEN 環境変数をオーバーライドします。

コンパイルする内容を指定するためのオプション

これらのオプションの 1 つだけを指定する必要があります。

--query=<qlfile>

コンパイルする QL ファイルへのパス。

そのディレクトリと親ディレクトリは、必要なパックを決定するために qlpack.yml またはレガシの queries.xml ファイルについて検索されます。

--dir=<dir>

コンパイルするクエリを含むパックのルート ディレクトリ。

--root-pack=<pkgname>

[詳細設定] 依存関係解決のルートとして使うパックの宣言名。

これは、検索パス内のどこかでパックの名前を見つけることができる場合に使います。 目的のルート パッケージの "ディスクの場所" がわかっている場合は、そこに .ql ファイルが含まれていることにして、代わりに --query を使います。__

共通オプション

-h, --help

このヘルプ テキストを表示します。

-J=<opt>

[詳細設定] コマンドを実行している JVM にオプションを指定します

(スペースを含むオプションは正しく処理されないことに注意してください)。

-v, --verbose

出力される進行状況メッセージの数を段階的に増やします。

-q, --quiet

出力される進行状況メッセージの数を段階的に減らします。

--verbosity=<level>

[詳細設定] 詳細レベルを、errors、warnings、progress、progress+、progress++、progress+++ のいずれかに明示的に設定します。 -v-q がオーバーライドされます。

--logdir=<dir>

[詳細設定] タイムスタンプと実行中のサブコマンドの名前を含む生成された名前を使用して、指定されたディレクトリ内の 1 つまたは複数のファイルに詳細なログを書き込みます

(完全に制御できる名前でログ ファイルを書き込むには、代わりに --log-to-stderr を指定し、必要に応じて stderr をリダイレクトします)。

--common-caches=<dir>

[[詳細設定] ダウンロードした QL パックやコンパイル済みクエリ プランなど、CLI の複数の実行間に保持される、ディスク上でキャッシュされたデータの場所を制御します。 明示的に設定されない場合、デフォルトではユーザーのホーム ディレクトリに名前が付けられた .codeql ディレクトリになります。まだ存在しない場合は作成されます。

v2.15.2 以降で使用できます。