EN JP CN

kwinject 対応ビルドでのローカルビルドプロセスの失敗

kwinject 対応ビルドでのローカルビルドプロセスの失敗

場合によっては、kwinject のプロセスのインターセプト/モニター機能がプロセス自体に干渉することがあります。Windows では、ビルドのモニター中に kwinject がインターセプトしないコマンドのリストを指定できます。kwinject は、開始直後に指定されたプロセスからデタッチします。

kwinject がデタッチする一連のコマンドを定義するには、コンパイラのマッピングファイルを編集します。このコンパイラマッピングファイルは、<klocwork_install>/config/kwfilter.conf にあります。

デタッチするコマンドのリストが短い場合、detach 行を 1 行 kwfilter.conf に追加します。

コマンドのリストが長くなる場合、detach キーワードを使用してパターンを指定します ("このディレクトリ内のすべてのプログラムからデタッチする" または "特定の接頭辞が付いたすべてのプログラムからデタッチする" など)。attach キーワードを使用すると、デタッチ規則の例外を追加できます ("コンパイラとリンカー以外のすべてのプログラムからデタッチする" など)。

attach 行とdetach 行は、適用されるコンパイラのフィルターバインディング行より下に追加され、次の構文を使用している必要があります。

detach <prog_name>[, <prog_name> ...]
フィールド<prog_name> には、kwinject がインターセプトしない 1 つまたは複数の実行ファイル名が入ります。
attach <prog_name>[, <prog_name> ...]
フィールド<prog_name> には、detach キーワードを使用して指定した規則の 1 つまたは複数の例外が入ります。

<prog_name> には、次の形式のいずれかを使用してください。

  • コマンドの短い名前 (cl.exe など)
  • コマンドへの絶対パス
  • 部分パス (sdk\bin\cl.exe など)

<prog_name> は、glob に類似したパターンを使用するため、以下を含むことができます。

  • * ワイルドカード (あらゆる並び順の文字) - 例: sdk\bin\*.exe
  • ?ワイルドカード (任意の文字)

例 1:デタッチキーワードの使用

filter mscompile cl
...
detach bad1.exe, bad2.exe

例 2:アタッチキーワードとデタッチキーワードの両方の使用

filter mscompile cl
...
attach build.exe, nmake.exe
detach public\common\bin\*.exe, sdk\bin\*.exe
detach msbuild.exe