Kwbazel

kwbazel ビルド統合コマンドを使用すると、Linux ユーザーは Bazel ビルドシステムでビルドされたプロジェクトを分析できます。kwbazel は Bazel ビルドを実行し、トレースおよびビルド仕様ファイル (kwinject.trace および kwinject.out) を生成する実行可能シェルスクリプトです。

前提条件

  • kwbazel を使用するには、Bazel と Klocwork コマンドラインツールをインストールします。

  • bazel build <target> を実行して、Bazel を使用したソースのコンパイルが正常に動作することを確認します。

  • Bazel ワークスペースディレクトリ (ROOT ワークスペースファイルが存在するディレクトリ) から kwbazel を実行します。

制限事項

  • Kwbazel は Linux および Windows オペレーティングシステムとのみ互換性があります。

  • Kwbazel はリモート実行をサポートせず、ローカルビルドのみを容易にします。

  • Kwbazel は、C/C++、Java、C# コードをビルドするためのデフォルトのニーモニックをサポートしています。この他のプログラミング言語はサポートされていません。

  • カスタムニーモニックは、Kwbazel の明示的オプションによってサポートされます。

  • Kwbazel は、Bazel によって呼び出される make や CMake などの他のビルドシステムを監視しません。このようなシナリオでは、ビルド統合に Kwinject の使用を検討してください。

  • Kwbazel は Android Bazel ビルド (Kleaf) では使用できません。Android Bazel ビルドの場合は、代わりに --bazel オプションを指定して kwandroid を使用します。

使用方法

kwbazel --bazel_version <version> --target <bazel_target> --klocwork_path <path_directory> [--arguments <bazel_arguments>] [--lang <language>]
フィールド
  • <version> は、Bazel のバージョンを指定します。文字列 bazel も許可されます
  • <bazel_target> はビルドターゲットを指定します
  • <path_directory> は Klocwork 出力ディレクトリを指定します
  • オプション: <bazel_arguments> はビルドの実行に使用される引数を指定します
  • オプション: <language> は C/C++、C#、Java のビルドを分離する言語オプションを指定します

オプション

名前 (および短い名前) 説明
--bazel_version (-b) <version> Bazel のバージョンを指定します。単一の Bazel バージョンがインストールされている場合は、文字列 bazel を使用します。複数のバージョンがインストールされている場合は、バージョンを指定します。例: --bazel_version bazel-6.4.0

Bazel のバージョンは /usr/bin または /usr/local/bin で確認できます。

--klocwork_path (-o) <path_directory> Klocwork 出力ディレクトリを指定します。kwinject.trace と kwinject.out はこのディレクトリ内に作成されます
--target (-t) <bazel_target>

ビルドターゲットを指定します。例: -t //:hello_bazel

複数のターゲットの場合は、-t "//:hello_bazel hello_klocwork" を実行します

オプションの引数

名前 (および短い名前) 説明
--arguments (-a) <bazel_argument> Bazel 引数を指定します。例: --arguments "--spawn_strategy=linux-sandbox --sandbox_debug"
--custom_mnemonics <string> ユーザーが作成したカスタムニーモニックの使用を指定します。例: --custom_mnemonics mnemonic1 mnemonic2 mnemonic3
--lang (-l) <language> C/C++ (cxx)、C# (csharp)、Java (java) のビルドを分離するための言語オプションを指定します。デフォルトは cxx,csharp,java です

オプションの kwinject 引数

名前 (および短い名前) 説明
--config (-c) <file> <file> からフィルター設定を読み取ります。デフォルトは <Klocwork_install>/config/kwfilter.conf です。kwfilter.conf およびコンパイラ設定ファイルの「プライベート」コピーを使用できるので、元のファイルを変更する必要はありません。
-f <variable_file> 特定のファイルから変数を読み取ります。
--ignore-files (-I)<pattern>[,<pattern>...] 指定されたパターンのいずれかに一致するソースファイルが無視されます。<pattern> には、* と ? のワイルドカードを含めることができます。例: --ignore-files conftest.* は、configure スクリプトによって作成された一時ファイルが無視されるように指定します。
--no-config コンパイラマッピングファイル kwfilter.conf からフィルター設定を読み取らない
--no-resolve シンボリックリンクを解決しません。--no-resolve オプションが指定されている場合は、コンパイラオプションのパスを解決しません。
--prog (-P) <prog>[=<filter>][,<prog>[=<filter>]...]

コンパイラがデフォルトで検索したもの以外を使用する場合に、kwinject がプログラムをインターセプトするために使用するプログラム。

使用する適切なフィルターと共に、インターセプトするプログラムのカンマ区切りリストを指定します。既知のプログラムとそのフィルターのデフォルトのリストがコンパイラマッピングファイル kwfilter.conf から取得されます。このオプションによって定義されたフィルターバインディングは、コンパイラフィルターファイルから読み取られたバインディングに優先します。

--variable (-V) <variable>=<string> 出力ファイルで見つかったすべての <string> を、<variable> の参照と置き換えます。