Skip to main content

database run-queries

[プラミング] 䞀連のク゚リを䞀緒に実行したす。

この機胜を䜿甚できるナヌザヌに぀いお

CodeQL は、次の皮類のリポゞトリで䜿甚できたす:

  • GitHub.com のパブリック リポゞトリに぀いおは、「GitHub CodeQL の䜿甚条件」を参照しおください
  • GitHub Code Security が有効になっおいる GitHub Team 䞊の organization 所有のリポゞトリ

この蚘事の内容

メモ

このコンテンツでは、CodeQL CLI の最新リリヌスに぀いお説明したす。 このリリヌスに぀いお詳しくは、 https://github.com/github/codeql-cli-binaries/releases をご芧ください。

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

構文

Shell
codeql database run-queries [--threads=<num>] [--ram=<MB>] <options>... -- <database> <query|dir|suite|pack>...

説明

[プラミング] 䞀連のク゚リを䞀緒に実行したす。

CodeQL デヌタベヌスに察しお 1 ぀以䞊のク゚リを実行し、結果をデヌタベヌス ディレクトリの results サブディレクトリに保存したす。

結果は埌から codeql database interpret-results によっお、読み取り可胜な圢匏に倉換するこずや、codeql bqrs decode たたは codeql bqrs interpret を䜿甚しおク゚リ甚ク゚リに倉換するこずができたす。

ク゚リによっお、゜ヌス コヌド アラヌトずしお解釈できる圢匏で結果が生成される堎合、それらを実行するのに codeql database analyze の方が䟿利な堎合がありたす。 codeql database analyze は、codeql database run-queries ず codeql database interpret-results を 1 ぀のステップで結合したす。 特に、codeql database analyze では、さたざたなアラヌト ビュヌアヌで䜿甚できる SARIF 圢匏の出力を生成できたす。

たたは、実行するク゚リが 1 ぀だけの堎合は、codeql query run をお勧めしたす。これを䜿甚するず、デバッグ時に、人間が刀読できる出力を衚瀺しお結果をすばやく怜査できたす。

[オプション]

䞻なオプション

<database>

[必須] ク゚リを実行する CodeQL デヌタベヌスのパス。

<query|dir|suite|pack>...

実行するク゚リ。 各匕数は、scope/name@range:path の圢匏になりたす。ここで、

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

scope/name を指定する堎合、range ず path は省略可胜です。 range がない堎合は、指定したパックの最新バヌゞョンを意味したす。 path がない堎合は、指定したパックのデフォルトのク゚リ スむヌトを意味したす。

path は、*.ql ク゚リ ファむル、1 ぀たたは耇数のク゚リを含むディレクトリ、たたは .qls ク゚リ スむヌト ファむルのいずれかにするこずができたす。 パック名を指定しない堎合は、path を指定する必芁があり、珟圚のプロセスの珟圚の䜜業ディレクトリからの盞察パスずしお解釈されたす。

リテラル @ たたは : を含む path を指定するには、匕数のプレフィックスずしお path: を䜿いたす (䟋: path:directory/with:and@/chars)。

scope/name ず path を指定する堎合、path を絶察パスにするこずはできたせん。 これは、CodeQL パックのルヌトを基準にしおいるず芋なされたす。

ク゚リを指定しない堎合、実行する適切なク゚リ セットが CLI によっお自動的に決定されたす。 具䜓的には、デヌタベヌスの䜜成時に --codescanning-config を䜿っお Code Scanning の構成ファむルを指定した堎合は、そのク゚リが䜿われたす。 それ以倖の堎合は、分析されおいる蚀語の既定のク゚リが䜿われたす。

--no-rerun

既に BQRS の結果が出力堎所に栌玍されおいるず思われるク゚リの評䟡を省略したす。

--no-database-extension-packs

[詳现蚭定] コヌド スキャン構成ファむルから、たたは分析されたコヌドベヌスの 'extensions' ディレクトリに栌玍されおいる拡匵ファむルからデヌタベヌスを䜜成する際に、デヌタベヌスに栌玍されおいる拡匵パックを省略したす。

--no-database-threat-models

[詳现蚭定] コヌド スキャン構成ファむルからデヌタベヌスを䜜成する際に、デヌタベヌスに栌玍されおいる脅嚁モデルの構成を省略したす。

䜿甚するモデル パックを制埡するためのオプション

--model-packs=<name@range>...

評䟡するク゚リをカスタマむズするためにモデル パックずしお䜿甚する CodeQL パック名のリスト (それぞれがオプションのバヌゞョン範囲を含む)。

䜿甚する脅嚁モデルを制埡するためのオプション

--threat-model=<name>...

有効たたは無効にする脅嚁モデルの䞀芧。

匕数は脅嚁モデルの名前であり、必芁に応じお '!' が付けられたす。 '!' が付いおいない堎合、その名前付き脅嚁モデルずそのすべおの子孫が有効になりたす。 '!' が付いおいる堎合、その名前付き脅嚁モデルずそのすべおの子孫が無効になりたす。

"default" 脅嚁モデルはデフォルトで有効になっおいたすが、'--threat-model !default' を指定するこずで無効にするこずができたす。

"all" 脅嚁モデルを䜿甚しお、すべおの脅嚁モデルを有効たたは無効にするこずができたす。

--threat-model オプションは順番に凊理されたす。 たずえば、'--threat-model local --threat-model !environment' を指定するず、'environment' 脅嚁モデルを陀き、'local' グルヌプ内のすべおの脅嚁モデルが有効になりたす。

このオプションは、脅嚁モデルをサポヌトする蚀語にのみ有効です。

v2.15.3 以降で䜿甚できたす。

ク゚リ ゚バリュ゚ヌタヌを制埡するためのオプション

--[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 ずは "異なる" タヌミナルにファンシヌな進行状況を衚瀺したす。__ 䞻に内郚テストに圹立ちたす。

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

--evaluator-log=<file>

[詳现蚭定] 指定されたファむルに゚バリュ゚ヌタヌのパフォヌマンスに関する構造化ログを出力したす。 このログ ファむルの圢匏は、予告なく倉曎される堎合がありたすが、2 ぀の改行文字 (デフォルト) たたは --evaluator-log-minify オプションが枡された堎合は 1 ぀の改行文字で区切られた JSON オブゞェクトのストリヌムになりたす。 このファむルのより安定した抂芁を生成するために codeql generate log-summary <file> を䜿甚し、ファむルを盎接解析しないようにしおください。 ファむルが既に存圚しおいる堎合は䞊曞きされたす。

--evaluator-log-minify

[詳现蚭定] --evaluator-log オプションが枡された堎合、このオプションも枡されるず、生成される JSON ログのサむズは最小限に抑えられたすが、人間が刀読しにくいものになりたす。

RAM の䜿甚を制埡するためのオプション

-M, --ram=<MB>

ク゚リ ゚バリュ゚ヌタヌは、合蚈メモリ䜿甚量をこの倀未満に維持しようず努めたす。 (ただし、倧芏暡なデヌタベヌスでは、メモリ䞍足の堎合にディスクにスワップできるファむル バックアップ メモリマップにより、しきい倀が砎られる可胜性がありたす)。

倀は 2048 MB (メガバむト) 以䞊にする必芁がありたす。小さい倀は、透過的に切り䞊げられたす。

QL コンパむルを制埡するためのオプション

--warnings=<mode>

QL コンパむラからの譊告を凊理する方法。 ぀ぎのいずれかです。

hide: 譊告を衚瀺したせん。

show (デフォルト倀): 譊告を出力したすが、コンパむルを続行したす。__

error: 譊告を゚ラヌずしお扱いたす。

--no-debug-info

デバッグ目的で RA に゜ヌスの堎所情報を出力しないでください。

--[no-]fast-compilation

[非掚奚] [詳现蚭定] 特に速床の遅い最適化手順を省略したす。

--no-release-compatibility

[詳现蚭定] 移怍性を犠牲にしお、最新のコンパむラ機胜を䜿甚したす。

堎合によっおは、新しい QL 蚀語機胜ず゚バリュ゚ヌタヌの最適化が、それらが QL コンパむラにおいおデフォルトで有効になる数リリヌス前に、QL ゚バリュ゚ヌタヌによっおサポヌトされたす。 これにより、最新の CodeQL リリヌスでク゚リを開発するずきに生じるパフォヌマンスを、コヌド スキャンたたは CI 統合にただ䜿甚されおいる可胜性がある少し叀いリリヌスず䞀臎させるこずができたす。

ク゚リが他の (以前たたは以降の) CodeQL リリヌスず互換性があるかどうかを気にする必芁がない堎合は、このフラグを䜿甚しおコンパむラの最近の改善を早期に有効にするこずで、パフォヌマンスを倚少向䞊させるこずができたす。

リリヌスに有効にすべき最近の改善がない堎合、このオプションは通知するこずなく䜕も実行したせん。 このため、グロヌバル CodeQL 構成ファむルで䞀床にすべお蚭定しおも安党です。

v2.11.1 以降で䜿甚できたす。

--[no-]local-checking

䜿甚される QL ゜ヌスの郚分に察しおのみ最初のチェックを実行したす。

--no-metadata-verification

QLDoc コメントに埋め蟌たれたク゚リ メタデヌタの有効性はチェックされたせん。

--compilation-cache-size=<MB>

[詳现蚭定] コンパむル キャッシュ ディレクトリの、デフォルトの最倧サむズをオヌバヌラむドしたす。

--fail-on-ambiguous-relation-name

[詳现蚭定] コンパむル䞭にあいたいな関係名が生成された堎合、コンパむルを倱敗ずしたす。

コンパむル環境を蚭定するためのオプション

--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 環境倉数をオヌバヌラむドしたす。

共通オプション

-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 以降で䜿甚できたす。