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