ファイルのオーバーライド

__KLOCWORK__ マクロは標準プリプロセッサメカニズムを使用した汎用コード置換をサポートしており、非常に強力である一方で、やはり Klocwork に合わせてソースコードを変更する必要があります。コードに必要な変更がいくつかのマクロ定義に限定されている場合は、オーバーライドファイルを使用してソースの変更を回避できます。

オーバーライドファイルは、Klocwork プロジェクトにインポートするヘッダーファイルです。Klocwork コンパイラは、プロジェクトにビルドされたすべてのソースモジュールに自動的にオーバーライドファイルを含めて処理します。このファイルには、ソースのマクロ定義を変更するための Klocwork 専用のプリプロセッサディレクティブ、#kw_override が使用されています。

#kw_override ディレクティブは、運用中のソースに定義されたマクロのみに影響します。

たとえば、運用中のソースに次のマクロ定義が含まれるとします。

# define MY_ASSERT(x) (void) ((x) __handle_failed_assert(#x, __FILE__, __LINE__, __FUNCTION__))

コンパイラによりシンプルで直接的なアサートを使用するには、次の定義を含むオーバーライドファイルを作成できます。

# kw_override MY_ASSERT(x) do { if( !(x) ) abort(); } while(0) 

オーバーライドファイルを統合ビルド解析に適用するには、プロジェクトまたは projects_root ディレクトリにインポートします。オーバーライドファイルをスタンドアロンデスクトップに適用するには、kwcheck import を使用します。