Helix QAC プロジェクトをインポートし、Klocwork 解析結果にマージする
Klocwork 2021.2 の時点で、ネイティブな Klocwork 解析によって生成された同じテーブルに、QAC 結果をインポートできるため、Validate ポータルでは、同じプロジェクトの Klocwork 欠陥と QAC 診断を参照できます。これを有効にするには、追加のオプション --qac-project
と共に kwbuildproject を使用します。
kwbuildproject <other analysis options> --qac-project <path to your QAC project>
kwqacimport と同様に、kwbuildproject では、ビルドマシンに Helix QAC がインストールされている必要があります。デフォルトでは、PATH でこれらのツールを検索します。これは、オプションのスイッチ --qac-install-dir
を指定して上書きすることができます。
kwbuildproject <other analysis options> --qac-project <path to QAC project> --qac-install-dir <PATH to Heix QAC 21.2 installation>
以下に示すのは、Klocwork と Helix QAC の統合を始めるにあたっての、いくつかの役に立つ例です。これらの例はすべて、Visual Studio 2017 を使用していることに注意してください。
例 1
まずは、Windows で、Klocwork と Helix QAC の両方を使用して zlib プロジェクトの解析を行い、Validate ポータルで、結合した結果を同じプロジェクトにロードしましょう。
- github から 'zlib' プロジェクトをダウンロードします。
- たとえば 'D:\Sources\zlib' などのディレクトリに、ファイルをローカルに抽出します。
- Visual Studio コマンドプロンプトを開き、コマンド
cd D:\Source\zlib
を実行します。 - kwinject を使用して、ネイティブビルドを実行する Klocwork の buildspec を生成します。
kwinject nmake -f win32/Makefile.msc
- Helix QAC GUI を開きます。(たとえば
D:\QAC_Projects\zlib
などで) Helix QAC プロジェクトを作成し、それをソースコードと同期し、プロジェクトを解析します。この例の残りでは、QAC GUI を開く必要がないことに注意してください。 D:\Klocwork_Tables
などの新しいディレクトリを作成します。- 次に、kwbuildproject を使用して、ハイブリッドモードで Klocwork 解析を実行します。
kwbuildproject -o D:\Klocwork_Tables\zlib --qac-project D:\QAC_Projects\zlib D:\Sources\zlib\kwinject.out
このコマンドは Klocwork 解析を実行し、その結果を
D:\Klocwork_Tables\zlib
ディレクトリに保存します。解析中に、Helix QAC の結果がインポートされ、同じテーブルディレクトリにロードされます。 - kwadmin を使用して、Validate ポータルで 'zlib' プロジェクトを作成します。
kwadmin create-project zlib
- 最後に、生成されたテーブルをロードします。
kwadmin load zlib D:\Klocwork_Tables\zlib
例 2
次に、C# 解析に Klocwork を使用し、C コード解析に Helix QAC を使用して、ハイブリッド C/C# プロジェクト 'dotzlib' の解析を行いましょう。この例では、上記の例 1 と同じ 'zlib' プロジェクトを使用します。
- Visual Studio でファイル
D:\Sources\zlib\contrib\dotzlib\DotZLib.sln
を開き、プロンプトに従って、欠落しているプロジェクトパーツを生成します。 - Visual Studio 2017 用の開発者コマンドプロンプトで、次を実行します。
cd D:\Sources\zlib\contrib\dotzlib
- 次に、kwinject を使用して、C# build specification (ビルドスペック) を生成します。
kwinject msbuild /p:UseSharedCompilation=false /p:ProduceReferenceAssembly=false
- kwbuildproject を使用して、ハイブリッドモードで Klocwork 解析を実行します。
kwbuildproject -o D:\Klocwork_Tables\zlibdotnet --qac-project D:\QAC_Projects\zlib D:\Sources\zlib\contrib\dotzlib\kwinject.out
- kwadmin を使用して、Validate ポータルで 'zlibdotnet' プロジェクトを作成します。
kwadmin create-project zlibdotnet
- 最後に、生成されたテーブルをロードします。
kwadmin load zlibdotnet D:\Klocwork_Tables\zlibdotnet
'dotzlib' は小さなプロジェクトであり、Klocwork C# チェッカーは、デフォルト構成で指摘を検出しない場合があります。より多くのチェッカーを有効にし、解析を再実行して、解析結果を拡張できます。
例 3
最後に、Klocwork が生成した指摘情報を使用しながら、Helix QAC 解析を使用し、'zlib' プロジェクトの解析結果を表示してみましょう。
これは例 1 を修正したバージョンです。この例では、Klocwork エンジンを使用して非常に浅い解析のみを実行し、Helix QAC エンジンのみを使用して実際の欠陥を生成します。浅い Klocwork 解析によって生成されたデータにより、Validate ポータルでコードのナビゲートが可能になり、またメトリックと傾向も生成できます。
- 例 1 で生成された build specification (ビルドスペック) を使用して、kwbuildproject を使用し、浅い Klocwork ハイブリッド解析を実行します。
Kwbuildproject --classic --no-lef -o D:\Klocwork_Tables\zlib_shallow --qac-project D:\QAC_Projects\zlib D:\Sources\zlib\kwinject.out
上記のコマンドで、
--classic --no-lef
は、Klocwork 欠陥解析を実行しないようにするためのスイッチの組み合わせであり、コード参照情報とメトリックの生成に旧式エンジンのみを使用するための指示でもあります。 - kwadmin を使用して、Validate ポータルで 'zlib_shallow' プロジェクトを作成します。
kwadmin create-project zlib_shallow
- 最後に、生成されたテーブルをロードします。
kwadmin load zlib_shallow D:\Klocwork_Tables\zlib_shallow