Kwbuildproject

kwbuildproject コマンドで、統合ビルド解析を実行し、次の段階を実行します。

  • コンパイル
  • 指摘検出
  • リンク
  • レポート生成

kwbuildproject はサーバーパッケージとともにインストールされます。

Notes

  • kwbuildproject はプリコンパイル済みヘッダー情報を自動的に生成し、使用します。
  • kwbuildproject は、プロセスに成功すると終了コード 0 を返します。何か問題があり、テーブルが生成されない場合は、終了コード 1 が返されます。テーブルが生成されても、ビルド時に重大なエラー (インクルードファイルの欠落やコンパイラエラーなど) がある場合には、終了コード 2 が返されます。C# 終了コードの詳細については、以下を参照してください。
  • テーブルディレクトリに加えて、kwbuildproject は解析時に、一時ディレクトリで追加領域を使用します。一時ディレクトリの場所は、システムの環境変数により指定されます。

使用方法

kwbuildproject --tables-directory <dir> 
--url http://<klocwork_server_host>:<klocwork_server_port>/<server_project>
[<other_options>] <build_specification_1> [<build_specification_2>...] 

フィールド

  • <dir> は出力テーブルディレクトリです。--tables-directory オプションは必須です。
  • <klocwork_server_host>:<klocwork_server_port> と<server_project> は、解析を実行するプロジェクトと、プロジェクトが配置されている Klocwork サーバーを識別します。
  • <other_options> は、次の表に示した任意のオプションです。
  • <build_specification_1> は build specification (ビルドスペック) です。このコマンドでは任意数の build specification (ビルドスペック) を指定できます。

次のようにして、kwbuildproject の引数ファイルも指定できます。

kwbuildproject @<arguments_file>

引数ファイルを作成して、コマンドライン引数を指定することができます。各引数は、独立した行に指定する必要があります。(引数ファイルにマルチバイト文字が含まれる場合、ファイルは UTF-8 でエンコードされている必要があります。)

例 1

kwbuildproject --tables-directory C:\Klocwork\My_tables --url http://myserver:8080/myproject C:\Klocwork\kwinject.out

例 2

次のように、'--project' または '--url' オプションに続いて親プロジェクト名と指定されたストリーム名を使用することで、ストリームを指定することもできます。

kwbuildproject C:\Klocwork\kwinject.out -o tables --url http://myserver:8080/myProj/stream1

ただし、ストリーム構成は、ストリームとその 'base' プロジェクトの間で共有されます。このため、解析コマンドで '--url' または '--project' フラグを使用している場合は、ベースプロジェクトを指定してください。

kwbuildproject kwinject.out -o tables --project myProject

オプション

名前 短い名前 説明
--add-compiler-options "<option_1> [<option_2>...]" -a

C/C++ コンパイラに追加オプションを渡します。複数のコンパイラオプションを渡すには、スペースでそれらを区切り、文字列全体を二重引用符で囲みます。許容される値は、kwbuildproject のコンパイラオプションです。

例:

--add-compiler-options "-I C:\Toolbus\lib_includes --print-errors"

指定したいパスにスペースが含まれる場合は、エスケープした二重引用符を組み合わせて使用します。たとえば、次のようになります。

--add-compiler-options "-I \"\"C:\Toolbus\library includes\"\" --print-errors"

エスケープした二重引用符の最後の組の後ろにスペースを一つ追加する必要があります。たとえば、--print-errors オプションの前などです。一貫性を保つため、エスケープした二重引用符の最初のインスタンスの前にスペースを含めるようにします。

--add-linker-options "<option_1> [<option_2>...]" -L 追加のオプションをリンカーに渡します。複数のリンカーオプションを渡すには、スペースでそれらを区切り、文字列全体を二重引用符で囲みます。許容される値は、kwbuildproject のリンカーオプションです。
--buildspec-variable <variable_name>= <variable_value> -V build specification template (ビルドスペックテンプレート) の使用を許可します。このオプションが使用され、build specification template (ビルドスペックテンプレート) (*.tpl) が標準の build specification (ビルドスペック) の代わりに kwbuildproject への入力として指定された場合、kwbuildproject は、build specification template (ビルドスペックテンプレート) で見つかった指定された変数をすべて、指定された変数値に置き換えます。デベロッパーへの build specification template (ビルドスペックテンプレート) の提供を参照してください。
--classic   Klocwork が前世代 (Klocwork 2018 以前) の解析エンジンを使用するように強制します。以前の解析エンジンは、C++11 および C++14 には一部のサポートしか提供していません。 詳細については、C/C++ 解析エンジンモードの指定を参照してください。
--color -c コンソールへ色付きで出力します。
--dist-host <host_name>  

Distributed Analysis Server のホスト名を指定します (デフォルト:localhost)。

分散解析はもはやサポートされていません。

 

--dist-port <int>   Distributed Analysis Server のポート番号を設定します (デフォルト: 3440) です。
分散解析はもはやサポートされていません。
--encoding -C

プロジェクトで使用するソースファイルのエンコードを指定します。ソースファイルにマルチバイト文字 (日本語など) が含まれる場合は、ファイルがバイトオーダーマーク (BOM) 文字で始まらない限り、これを --encoding UTF-8 に設定します。許容される値のリストを検索するには、kwconv--list オプションを使用します。

注記:

  • ソースファイルが BOM 文字で始まる場合は、エンコーディングを指定する必要はありません。BOM 文字は、テキストストリームが既に UTF-8 でエンコードされていること、または変換されていることを示します。
  • エンコードをビルド時のみに設定してプロジェクトレベルでは設定しない場合、マルチバイト文字を含むソースファイルは Klocwork のソースビューアーで正しく表示されません。エンコードを kwbuildproject で設定すると、サーバーが実行していない場合に役に立ちます。サーバーを実行している場合は、source_encoding プロパティを使用して、kwadmin create-project--encoding オプションまたは kwadmin set-project-property により、プロジェクトレベルでソースエンコーディングを設定します。
  • エンコードがビルド時に設定されない場合、プロジェクトレベルで設定されたエンコードが使用されます。
  • エンコードがプロジェクトレベルで設定されないか、または設定されても kwbuildproject の --url オプションでプロジェクトが指定されない場合は、デフォルトのシステムエンコードが使用されます。
  • エンコードがプロジェクトレベルと kwbuildproject の両方で設定される場合は、kwbuildproject オプションが優先されます。
--errors-config <file> -e

チェッカー構成 (.pconf) ファイルを指定して、サーバープロジェクトで指定されたチェッカー設定をオーバーライドします。--lef-config オプションと同じ機能です。

--exclude-issues <file> -x

特定の制約に関する特定の指摘タイプまたはすべての指摘タイプをフィルター処理するための、外部構成ファイル (.sconf) を指定します。フィルター処理するマクロの直接名を指定する必要があります。正規表現を使用してマクロ名を指定することはできません。

例: --exclude-issues "exclude.sconf"

詳細については、指摘の除外を参照してください。

--force -f --tables-directory で指定されたテーブルディレクトリに、前回の解析実行によるデータファイルが含まれている場合でも解析を実行します (同じコードベースのみ)。解析が同じテーブルを使用して異なるコードベースで実行される場合は、解析を実行する前にテーブルを削除します。
--force-32bit   解析エンジンを強制的に 32 ビットにします。2020.3 以前の古いパスチェッカーを使用している場合は、このオプションを使用してチェッカーを機能させる必要があります。
--force-clr   解析エンジンに、管理 C++ コードを含む C++/CLI ソースファイルを強制的に解析させます。このオプションを使用すると、管理 C++ コードの構造に関する解析エラーが発生することに注意してください。
--help   このヘルプを表示します。
--incremental -I

前回の解析の後に変更されたファイル、および変更されたファイルに対する依存関係のあるファイルのみを解析します。完全なプロジェクトの前回の解析が完了していることが前提です。解析実行後に出力テーブルディレクトリを維持する必要があります。

--incremental を使用すると、中断されたビルドを再開することもできることに注意してください。このオプションは、解析の停止以降にソース ファイルが変更された状況を処理します。

--java-kb <ファイル> -K Java knowledge base (ナレッジベース) ファイルを使用します
--jobs-num <int> | auto -j 並列コンパイルと実行する指摘検出プロセスの最大数を指定します。次のいずれかを指定します。
  • 1 ~ 255 の整数
  • 自動モードに設定するには auto。このモードでは、コンパイルジョブの数は使用できるプロセッサーコアの数 + 1 に等しくなります。-j auto が kwbuildproject のデフォルト設定であることに注意してください。
1 台のマシンで並列 C/C++ または Java 解析を実行する場合は、ビルドマシンで使用できるプロセッサーコア数 + 1 にこの値を設定することをお勧めします。たとえば、2 コアマシンなら、この値を 3 に設定します。この数を超えると、パフォーマンスが低下する可能性があります
スワップが起こらないように、十分なメモリがあることを確認してください。必要に応じてジョブ数を減らしてください。
--lef-config   論理エラーファインダー構成を <xml file> で指定します。--errors-config オプションと同じ機能です。
--license-host <host_name> -H

ライセンスサーバーのホストを設定します (デフォルト:localhost)。

--license-port <port_number> -P ライセンスサーバーのポートを設定します (デフォルト: 27000)。--license-host オプションのヒントを参照してください。
--modern  

Klocwork に、最新の C++ コードを解析するための高度な機能を備えた最新の解析エンジンの使用を強制します。このエンジンは、C++17 までの言語仕様を完全にサポートし、C++20 および C++23 を部分的にサポートします。このエンジンにより、発見される新しい欠陥の数が大幅に増加する可能性があります。 詳細については、C/C++ 解析エンジンモードの指定を参照してください。

--no-color   色付きの出力を使用しません。
--no-lef -n Klocwork 指摘検出段階を実行しません
--project -S Klocwork サーバーのプロジェクト名を指定します。このパラメーターを使用して、構成ファイル (pconf、metrics_default.mconf など) をダウンロードするプロジェクトを指定し、その構成ファイルをビルド時に適用できます。
--qac-project   Helix QAC プロジェクトの場所を指定します
--qac-install-dir   Helix QAC インストールディレクトリを指定します
--quiet -q コンソールのメッセージを非表示にします。コマンドライン パースエラーは抑制されません。
--remote   Distributed Analysis Server を介して、リモートでエンジンを実行します。
--replace-path <original_path>=<new_path>   ソースパスの接頭辞を置換します。同じコマンドラインでこのオプションの複数のインスタンスを使用できます。例: --replace-path /usr/include=includeソースファイルへのパスの置換を参照してください。
--short-log  

報告する情報を減らすことにより、ビルドログを最適化し、そのサイズを縮小します。

このオプションの使用は、Klocwork ビルドが安定した後に限定する必要があります。これは、このモードではトラブルシューティングに必要な詳細情報が抑制されるためです。
--strict  

機能安全規格に準拠している場合に使用します。

--strict を指定すると、parse_errors.log ファイルと build_integration.log ファイルに追加の警告情報が出力されます。また、kwbuildproject が 1 つ以上の関数を解析でスキップするときには、function_information.log ファイルに追加情報が出力されます。詳細については C/C++ パス解析エラーを参照してください。コンプライアンスについての詳しい手順は、「Klocwork の機能安全マニュアル」を参照してください。

--tables-directory <dir> -o

プロジェクトのテーブルを格納する場所を指定します。必須オプションです。前回のビルドからのテーブルディレクトリは、次のいずれかを指定しない限り、再利用できません。

  • --force
  • --incremental

このディレクトリの読み取り権限と作成権限を所有している必要があります。

--url http://<klocwork_server_host>:<klocwork_server_port>/<server_project>   プロジェクトの URL。この引数は、プロジェクトと Klocwork サーバーが配置された場所を識別します。Klocwork サーバーのセキュア接続が構成されている場合は、https:// を使用します。このオプションは、特定のプロジェクトによってサーバーに配置されたチェッカー、メトリック、ナレッジベース設定などの構成を同期させます。
--use-fbkb <file> -k C/C++ プロジェクトに、指定された knowledge base (ナレッジベース) ファイルを使用します。コマンドライン 1 行にこのオプションを複数回使用できます。
--use-prev-fbkb <file> -Q

knowledge base (ナレッジベース) の更新時の優先度の低いファイルとして、指定した knowledge base (ナレッジベース) ファイルを使用します。このファイルからのレコードは、これよりも最新の類似レコードが存在しない場合にのみ、新しいファイルに追加されます。ソースコードの前のバージョン用の、自動生成された knowledge base (ナレッジベース) ファイルがある場合はこのオプションを使用します。これにより、指摘検出プロセスが加速されます。しかし、結果が正確とは限りません。

コマンドライン 1 行に、このオプションの複数インスタンスを指定できます。

--verbose -v プログラム実行についての詳細情報を表示します。これは、エラーのトラブルシューティングに役立ちます
--version   バージョン情報を表示します。

C# 解析の終了コード

kwbuildproject コマンドを実行すると、システムは終了コードを生成します。以下のテーブルでは、それぞれの終了コードを発生させる条件を一覧表示します。

条件 終了コード 結果
成功 0 成功。
ライセンスのチェックに失敗 1 ツールの起動に失敗しました。
故障 1 ツールがクラッシュしました。
コマンドライン KAST の失敗 1 KAST パターンのコンパイルに失敗しました。
指摘のダンプに失敗 1 テーブルディレクトリの作成は、完全ではありません。
KB ダンプに失敗 1 テーブルディレクトリの作成は、完全ではありません。
メトリックスのダンプに失敗 1 テーブルディレクトリの作成は、完全ではありません。
RDT のダンプに失敗 1 テーブルディレクトリの作成は、完全ではありません。
DLL のロードに失敗 2 外部参照アセンブリはロードされていませんが、解析は実行可能です (精度の低下)。
構成ファイルなし 2 構成ファイル (デフォルトの構成ファイルまたは変更された構成ファイル .pconf) はロードされていませんが、解析は実行可能です。
KB なし 2 一部の KB ファイルはロードされていませんが、解析は実行可能です (精度の低下)。
パースエラー 0 一部のソースファイルは、パースされていません (精度の低下)。