C/C++ build specification (ビルドスペック) の作成

Klocwork はビルドと統合し、コードストリーム全体の一元表示に必要なすべての情報をキャプチャします。Klocwork はこの情報を構造化されたビルドログである build specification (ビルドスペック)というテキストファイルに保存します。build specification (ビルドスペック) は Klocwork 解析の基盤です。

build specification (ビルドスペック) は統合ビルドとローカルビルドの両方のレベルで必要です。

  • 統合ビルドの場合、build specification (ビルドスペック) の作成はインストール後に必要な最初のタスクです。
  • 一部のデスクトップ環境ではビルド統合は自動的に発生しますが、その他の環境では build specification (ビルドスペック) を手動で作成する必要があります。build specification (ビルドスペック) を手動で作成する必要があるかどうかが不明な場合は、Klocwork Desktop Analysis を使用したチェックイン前の指摘の修正でコーディング環境を選択してください。

build specification (ビルドスペック) はビルドの正確かつ最新の情報を表していることが重要です。build specification (ビルドスペック) が不正確な場合、Klocwork 解析も不正確になります。

kwinject コマンドを使用して、あらゆる C/C++ プロジェクト向けのビルド設定をキャプチャします (以下に示すような一部の状況下を除く)。

前提条件

  • サーバーパッケージをインストールします。Klocwork のインストール を参照してください。
  • プロジェクトのクリーンビルドを実行します。プロジェクトにビルドエラーがあると、手抜かりのない正確な build specification (ビルドスペック) を作成する Klocwork の能力が妨げられる可能性があります。

ビルド設定をキャプチャする

プロジェクトで初めて kwinject コマンドを実行するときは、そのプロジェクトのクリーンビルドがあることを確認します。これを行うには、たとえば make clean などの clean コマンドを実行できます。

クイックリファレンスとして、当社のチートシート C/C++ 統合ビルド解析 - チートシートをチェックすることもできます。

トラブルシューティング: 使用しているコンパイラがそのまま使用できるかどうか不明な場合は、kwinject が使用するコンパイラを認識することを確認するへ移動します。

使用しているビルド環境で、通常のビルドコマンドを発行しますが、次の例のようにそのコマンドの前に kwinject コマンドと必要となるあらゆる kwinject オプションを追加します。kwinject オプションの完全リストについては、kwinject を参照してください。

kwinject [kwinject_options] <build_command> [args]

たとえば、使用しているビルドコマンドが "make" の場合、以下を実行します。

kwinject make

ビルドが完了すると、build specification (ビルドスペック)(デフォルトでは kwinject.out と呼ばれる) が作成されます。

この例では zlib を使用します。zlib 固有の情報を自分の情報に置き換えて使用してください。

  1. たとえば、次のように、作業ディレクトリを make の情報がある最上位ソースディレクトリに変更します。
     cd /usr/local/zlib-1.2.3/ 
    
    一般的なオープンソースプロジェクトでは、初期設定が必要な場合もあります。通常の場合、この設定には make clean および configure と呼ばれるスクリプトを使用します。
  2. ここでは、--output オプションを使用して、出力テキストファイルの名前と場所を指定します。この例では、次のようになります。
     kwinject --output /home/klocwork/zlib.out make 
    

    この例では、出力ファイルの名前が zlib.out となるように指定されています。--output オプションを使用しない場合、kwinject では、build specification (ビルドスペック) ファイルに kwinject.out という名前が自動的に付けられ、現在の作業ディレクトリに保存されます。

    ビルドが完了すると、build specification (ビルドスペック) が指定された場所に保存されます。

トラブルシューティング: "コンパイラを構成できません" というエラーメッセージが表示される場合は、kwinject エラー - コンパイラを構成できませんを参照してください。

Visual Studio プロジェクト

kwinject を使用すると、Visual Studio プロジェクトを (devenv、msdev、vcbuild、または msbuild を使用して) コマンドラインからビルドする場合に build specification (ビルドスペック) を作成できます。

Visual Studio コマンドプロンプトから kwinject を実行することをお勧めします。 Visual Studio ビルド環境設定をより正確にキャプチャするためです。

例:

kwinject --output test.out devenv mysolution.sln /Rebuild
kwinject --output test2.out msbuild mysolution.sln /t:Rebuild /p:Configuration=Debug

devenv はデフォルト構成を使用するため、構成を指定する必要はありません。

VS2012 を使用している場合:

適切な build specification (ビルドスペック) を作成するには、次に従う必要があります。

  • 孤立した MSBuild.exe プロセスを終了してから devenv を実行する
  • MSBUILDDISABLENODEREUSE 環境変数を 1 に設定する
  • MSbuild を使用してビルドする場合は、/nodereuse:false オプションを使用する

kwinject が使用するコンパイラを認識することを確認する

kwinject が使用するコンパイラ名を認識するには、そのコンパイラに関連付けられているコンパイラタイプを特定する必要がある場合があります (たとえば、gcc は GNU の一種であるなど)。

ビルド統合でサポートされる C/C++ コンパイラに移動して、使用するコンパイラタイプがサポートされているかどうかを確認してください。

特定のコンパイラに対する注意事項

カスタムバインディングをビルドマシンおよびデベロッパーデスクトップに自動的に展開するには、次のようにカスタム kwfilter.conf ファイルを展開する必要があります。
  1. <install>/config ディレクトリの外側に空の kwfilter.conf を作成し、必要なコンパイラを追加します。たとえば、下のサンプルからの行を追加するか、デフォルトの <install>/config/kwfilter.conf ファイルのコメント行をコピーして新しいファイル内に配置し、コメントタグを削除します。
  2. 新しいファイルを <projects_root>/compiler_config ディレクトリにコピーします。このフォルダがまだ存在しない場合は、作成します。
  3. 変更を同期するには、ビルドマシンで kwdeploy sync を実行します。接続されたデベロッパーデスクトップは、次回のローカル解析後に更新されます。
この手順の詳細については、kwfilter.conf の展開 を参照してください。

いくつかのサンプルコンパイラを示します:

Green Hills GHS: 次の行を追加します:

filter     ghs     gcc, gcx, ccarm, cxarm, ccmips, cxmips
#filter ghscom  ecomarm

また、GNU 行も追加する必要があります。

#filter    gnu     gcc, g++, cc, c++

Intel XL C/C++: 次の行を追加します:

filter     xlc     cc

また、GNU 行も追加する必要があります。

#filter    gnu     gcc, g++, cc, c++

GNU: ld が直接呼び出される場合 (gcc によって呼び出されるのではない場合) は、次の行を追加します。

filter     gnu_ld  ld

Metaware High C/C++: ldarc が直接呼び出される場合 (hcarc によって呼び出されるのではない場合) は、次の行を追加します。

filter     ldarc   ldarc, ldac

CodeWarrior Freescale S12: CodeWarrior S12 linker および libmaker を使用する場合は、次の行を追加します。

filter link_hc12 linker
filter lib_hc12 libmaker

Wind River Diab: "カバレッジ" ツールを使用する場合は、次の行を追加します。

filter coverage coverage

VSI-Cafe: VSI-Cafe の場合は、次の行を追加します。

filter cafe_compile cl
filter cafe_link link

正確性を確認するための build specification (ビルドスペック) のレビュー

build specification(ビルドスペック)が作成されたら、compilelinkconfig 行があることを確認します。

the build specification (ビルドスペック) を注意深くレビューして、コンパイラオプションが適切に処理されたことを確認します。kwinject が正確にビルド設定をキャプチャしたかどうかを確認するための詳細については、以下を参照してください。

作成された build specification (ビルドスペック) に version 行のみしか含まれていない場合、または config 行がない場合は、不完全な kwinject build specification (ビルドスペック) のトラブルシューティングを参照してください。

build specification (ビルドスペック) の再作成時期

build specification (ビルドスペック) ファイルがすでに存在していると、デフォルトでは Klocwork はファイルを上書きする代わりに更新します。

特定の状況では、(--overwrite オプションを使用して) build specification (ビルドスペック) を新規作成することを Klocwork は強く推奨します。

  • Klocwork の新しいバージョンにアップグレードする場合
  • ビルド設定を変更する場合
  • クリーンビルドを実行する場合 (ソースファイルの完全再ビルド)

以上の状況で既存の build specification (ビルドスペック) を再利用したり、手動で変更したりすると、解析結果が不正確になります。