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

クエリを解決する

[ディープ プラミング] クエリ ディレクトリとスイートの仕様を拡張します。

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

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

This content describes the most recent release of the CodeQL CLI. For more information about this release, see https://github.com/github/codeql-cli-binaries/releases.

To see details of the options available for this command in an earlier release, run the command with the --help option in your terminal.

構文

Shell
codeql resolve queries <options>... -- <query|dir|suite|pack>...

説明

[ディープ プラミング] クエリ ディレクトリとスイートの仕様を拡張します。

このプラミング コマンドは、複数のクエリを実行できるサブコマンドのコマンドライン パラメーターを、実行する個々の.ql ファイルの実際のリストに拡張する役割を果たします。

引数を指定せずに実行すると、使用可能な QL パックにある "よく知られている" クエリ スイート定義のリストを含むヘルプ メッセージが標準エラー ストリームに表示され、空のクエリのリストが正常に返されます。

主なオプション

<querysuite|pack>...

[必須] 実行するクエリ。 各引数は、scope/name@range:path の形式になります。ここで、

  • scope/name は、CodeQL パックの修飾名です。
  • range は、semver の範囲です。
  • path は、ファイル システムのパスです。

scope/name を指定する場合、rangepath は省略可能です。 range がない場合は、指定したパックの最新バージョンを意味します。 path がない場合は、指定したパックの既定のクエリ スイートを意味します。

path は、*.ql クエリ ファイル、1 つまたは複数のクエリを含むディレクトリ、または .qls クエリ スイート ファイルのいずれかにすることができます。 パック名を指定しない場合は、path を指定する必要があり、現在のプロセスの現在の作業ディレクトリからの相対パスとして解釈されます。

リテラル @ または : を含む path を指定するには、引数のプレフィックスとして path: を使います (例: path:directory/with:and@/chars)。

scope/namepath を指定する場合、path を絶対パスにすることはできません。 CodeQL パックのルートからの相対パスと見なされます。

--format=<fmt>

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

text "(既定値)": パス名の行指向リスト。**

json: 文字列としてのパス名のプレーンなリスト。

bylanguage: よりリッチな JSON 表現。ライブラリの依存関係から推測され、どのエクストラクターで動作するかによってクエリをグループ化します。これは、計算に若干コストがかかります。

installedpacks: [ディープ プラミング] 直接またはクエリ スイート内で参照され、ローカルでは使用できない CodeQL クエリ パックをリスト表記する JSON 表現。

QL パックを検索するためのオプション (クエリ スイートを解釈するために必要な場合がある)

--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 では、パスの区切り記号は ; です)。

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

--registries-auth-stdin

\<registry_url>=\ ペアのコンマ区切りのリストを渡して、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 環境変数をオーバーライドします。

共通オプション

-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 をリダイレクトします)。