Skip to main content

Enterprise Server 3.15 は、現在リリース候補として使用できます。

execute query-server2

[プラミング] IDE からのクエリ実行のサポート。

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

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

この記事の内容

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

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

構文

Shell
codeql execute query-server2 [--threads=<num>] <options>...

説明

[プラミング] IDE からのクエリ実行のサポート。

このコマンドは、IDE の QL 言語拡張機能の作成者にのみ関連します。 これは、バックグラウンドで IDE プラグインによって開始され、標準の入力ストリームと出力ストリームで特別なプロトコルを介して通信します。

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

[オプション]

主なオプション

--[no-]tuple-counting

[詳細設定] クエリ エバリュエーター ログの各評価ステップのタプル数を表示します。 --evaluator-log オプションを指定すると、コマンドで生成されるテキストベースのログと構造化された JSON ログの両方にタプル数が含まれます (これは、複雑な QL コードのパフォーマンス最適化に役立ちます)。

--timeout=<seconds>

[詳細設定] クエリ評価のタイムアウトの長さを秒単位で設定します。

タイムアウト機能は、複雑なクエリの評価に "かなり長い時間" がかかるケースを検出することを目的としています。 クエリの評価にかかる合計時間を制限するのは効果的な方法ではありません。 評価は、計算の個別に時間指定された各部分がタイムアウト内に完了する限り続行できます。 現在、これらの個別に時間指定された部分は、最適化されたクエリの "RA レイヤー" ですが、将来変更される可能性があります。

タイムアウトが指定されていない場合、またはタイムアウトに 0 が指定されている場合、タイムアウトは設定されません (デフォルトのタイムアウトが 5 分である codeql test run を除きます)。

-j, --threads=<num>

この数のスレッドをクエリの評価に使用します。

デフォルト値は 1 です。 0 を渡して、コンピューター上のコアごとに 1 つのスレッドを使用したり、N を渡して、N 個のコアを未使用のままにしたりすることができます (ただし、その場合でも、少なくとも 1 つのスレッドが使用されます)。

--[no-]save-cache

[詳細設定] 中間結果をディスク キャッシュに積極的に書き込みます。 これにはより多くの時間がかかり、使用されるディスク領域も (はるかに) 多くなりますが、同様のクエリの後続の実行が高速化される可能性があります。

--[no-]expect-discarded-cache

[詳細設定] クエリの実行後にキャッシュが破棄されるという前提に基づいて、評価する述語とディスク キャッシュに書き込む内容を決定します。

--[no-]keep-full-cache

[詳細設定] 評価が完了した後、ディスク キャッシュをクリーンアップしません。 これにより、後で codeql dataset cleanup または codeql database cleanup を実行する場合に時間を節約できます。

--max-disk-cache=<MB>

中間クエリ結果のディスク キャッシュで使用できる最大容量を設定します。

このサイズが明示的に構成されていない場合、エバリュエーターによって、データセットのサイズとクエリの複雑さに基づき、"妥当な" 量のキャッシュ スペースを使うことが試みられます。 このデフォルトの使用量よりも高い制限を明示的に設定すると、追加のキャッシュが有効になり、後のクエリが高速化されます。

--min-disk-free=<MB>

[詳細設定] ファイル システムの空き領域の目標量を設定します。

--max-disk-cache が指定されていない場合、ファイル システムの空き容量がこの値を下回ると、エバリュエーターによってディスク キャッシュの使用量を抑えることが試みられます。

--min-disk-free-pct=<pct>

[詳細設定] ファイル システムの空き領域の目標割合を設定します。

--max-disk-cache が指定されていない場合、ファイル システムの空き容量がこの割合を下回ると、エバリュエーターはディスク キャッシュの使用量を抑えようとします。

--external=<pred>=<file.csv>

外部述語 <pred> の行を含む CSV ファイル。 複数の --external オプションを指定できます。

--xterm-progress=<mode>

[詳細設定] xterm 制御シーケンスを使用して、QL 評価中に進行状況の追跡を表示するかどうかを制御します。 次のいずれかの値になります。

no: ファンシーな進行状況を表示しません。ダム端末と見なします。

auto (デフォルト値): コマンドが適切なターミナルで実行されているかどうかを自動検出します。__

yes: ターミナルで xterm 制御シーケンスを認識できると見なします。 この機能は依然として、ターミナルの "サイズ" を自動検出できるかどうかに依存しており、-q が指定されている場合も無効になります。__

25x80 (またはこれに類する値): yes と同様。ターミナルのサイズも明示的に指定します。

25x80:/dev/pts/17 (またはこれに類する値): stderr とは "異なる" ターミナルにファンシーな進行状況を表示します。__ 主に内部テストに役立ちます。

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

これは、codeql query compile (q.v.) の同様のオプションのように機能します。

クエリごとに対応する値が指定されるため、--additional-packs または --library-path オプションはありません

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

エバリュエーターに関する構造化ログの出力を制御するためのオプション

--evaluator-log=<file>

[詳細設定] 指定されたファイルにエバリュエーターのパフォーマンスに関する構造化ログを出力します。 このログ ファイルの形式は、予告なく変更される場合がありますが、2 つの改行文字 (デフォルト) または --evaluator-log-minify オプションが渡された場合は 1 つの改行文字で区切られた JSON オブジェクトのストリームになります。 このファイルのより安定した概要を生成するために codeql generate log-summary <file> を使用し、ファイルを直接解析しないようにしてください。 ファイルが既に存在している場合は上書きされます。

--evaluator-log-minify

[詳細設定] --evaluator-log オプションが渡された場合、このオプションも渡されると、生成される JSON ログのサイズは最小限に抑えられますが、人間が判読しにくいものになります。

共通オプション

-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 以降で使用できます。