例: 一時ソースファイルのキャッシュ

Windows DDK (Driver Development Kit) では、指定されたソース コードのコンパイルとリンクにビルドユーティリティを使用することが推奨されています。

https://learn.microsoft.com/en-us/previous-versions//ff556163(v=vs.85)

ビルドユーティリティは、一時ソースファイルを生成し、それらのファイルを特定のプロジェクトのプリコンパイル済みヘッダー (PCH) を作成するために使用します。プリコンパイル済みヘッダーの生成が完了すると、一時ソースファイルは削除されます。

プリコンパイル済みヘッダー test.h を使用してテスト プロジェクトをビルドしている場合とします。ビルドユーティリティによって、pch_hdr.src という名前の一時ソースファイルが作成されます。

-- file: pch_hdr.src
    #include "test.h"

このファイルは、プリコンパイル済みヘッダー test.pch を生成するためのコンパイラへの入力として使用され、生成後に削除されます。

kwinject および kwwrap は、このような種類のコンパイラ呼び出しをインターセプトし、build specification (ビルドスペック) に適切なレコードを書き込みます。問題は、ビルドが完了すると生成された build specification (ビルドスペック) が存在しないソースファイルをリファレンスすることにあります。つまり、build specification (ビルドスペック) の生成を試みる場合、またはビルドを実行するための build specification (ビルドスペック) を直接使用する場合、このようなソースファイルへのアクセスができないため、Klocwork 解析は失敗します。

この問題を解消するために、kwinject にはキャッシュ済みソースの仕組みが用意されています。kwinject の --cache-files <pattern>[,<pattern>...] オプションを使用してください。このオプションを使用すると、指定されたパターンに一致するすべてのソースファイルを元の場所に復元します。例:

kwinject --cache-files "*.src" build -zcg