Skip to main content

データベースのファイナライズ

[プラミング] データベース作成の最後の手順。

Who can use this feature?

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

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

この記事の内容

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

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

構文

Shell
codeql database finalize [--dbscheme=<file>] [--threads=<num>] [--ram=<MB>] [--mode=<mode>] <options>... -- <database>

説明

[プラミング] データベース作成の最後の手順。

codeql database init を使って作成され、その後 codeql database trace-command を使って分析データをシード処理したデータベースをファイナライズします。 これは、新しいデータベースに対してクエリを実行する前に行う必要があります。

[オプション]

主なオプション

<database>

[必須] 構築中の CodeQL データベースへのパス。 これは、codeql database init を使って抽出するために準備されている必要があります。

--db-cluster オプションを指定した場合、これはデータベース自体ではなく、データベースを "含む" ディレクトリであり、これらのデータベースはすべてまとめて処理されます。__

--[no-]db-cluster

コマンド ラインで指定されたディレクトリがデータベース自体ではなく、構築中の 1 つ以上のデータベースを "含む" ディレクトリであることを示します。__ これらのデータベースはまとめて処理されます。

--additional-dbs=<database>[:<database>...]

[詳細設定] 構築中の追加の CodeQL データベースへのパス。 これらは、それ自体はファイナライズされませんが、それらのデータは、作成される最終化されたデータベースに含まれます。 これは高度なオプションであり、すべてのケースで望ましい効果が得られるとは限りません。 詳しくは、codeql database import に関するドキュメントを参照してください。

--db-cluster オプションが指定されている場合、これらは個々の CodeQL データベースではなくデータベース クラスターであることが期待されます。

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

--no-cleanup

[詳細設定] ファイナライズ後にすべてのデータベース クリーンアップを抑制します。 デバッグが目的の場合に役立ちます。

--no-pre-finalize

[詳細設定] アクティブな CodeQL エクストラクターによって指定された事前ファイナライズ スクリプトをスキップします。

--[no-]skip-empty

[詳細設定] ビルド中にソース コードが表示されず、データベースが空の場合は、失敗するのではなく警告が出力されます。 空のデータベースは、ファイナライズされないままになります。

TRAP インポート操作を制御するオプション

-S, --dbscheme=<file>

[詳細設定] TRAP ファイルが準拠していると見なされる自動検出された dbscheme 定義をオーバーライドします。 通常、これはデータベースの抽出元から取得されます。

-j, --threads=<num>

インポート操作には、この多くのスレッドを使ってください。

既定値は 1 です。 0 を渡して、マシン上のコアごとに 1 つのスレッドを使ったり、N を渡して、N 個のコアを未使用のままにしたりすることができます (ただし、その場合でも、少なくとも 1 つのスレッドが使われます)。

-M, --ram=<MB>

インポート操作には、この量のメモリを使ってください。

低レベルのデータセット クリーンアップ オプション

--max-disk-cache=<MB>

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

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

--min-disk-free=<MB>

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

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

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

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

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

-m, --mode=<mode>

キャッシュをどの程度積極的にトリミングするかを選びます。 以下を選択できます。

clear: キャッシュ全体を削除し、新しく抽出されたデータセットの状態にトリミングします

trim (既定値): 明示的に "キャッシュされた" 述語を除くすべてをトリミングします。__

fit: ディスク キャッシュに対して定義されたサイズ制限を確認し、必要な数の中間ファイルを削除します。

--cleanup-upgrade-backups

データベースのアップグレードに起因するすべてのバックアップ ディレクトリを削除します。

インポートされた TRAP をチェックするためのオプション

--[no-]check-undefined-labels

[詳細設定] 未定義のラベルのエラーを報告します。

--[no-]check-unused-labels

[詳細設定] 未使用のラベルのエラーを報告します。

--[no-]check-repeated-labels

[詳細設定] 繰り返しラベルのエラーを報告します。

--[no-]check-redefined-labels

[詳細設定] 再定義されたラベルのエラーを報告します。

--[no-]check-use-before-definition

[詳細設定] 定義される前に使われたラベルのエラーを報告します。

--[no-]fail-on-trap-errors

[詳細設定] トラップのインポート中にエラーが発生した場合、0 以外で終了します。

--[no-]include-location-in-star

[詳細設定] 元の TRAP ファイル内の場所をエンコードするエンティティ ID を構築します。 TRAP ジェネレーターのデバッグに役立つ場合がありますが、データセット内で多くの領域を占有します。

--[no-]linkage-aware-import

[詳細設定] codeql データセットのインポートがリンケージ対応 (既定) かどうかを制御します。 データベース作成のこの部分で消費されるメモリが多すぎるプロジェクトでは、このオプションを無効にすると、データベースの完全性が犠牲になりますが、進行しやすくなる場合があります。

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

共通オプション

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