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 ポータルで、結合した結果を同じプロジェクトにロードしましょう。

  1. github から 'zlib' プロジェクトをダウンロードします。
  2. たとえば 'D:\Sources\zlib' などのディレクトリに、ファイルをローカルに抽出します。
  3. Visual Studio コマンドプロンプトを開き、コマンド cd D:\Source\zlib を実行します。
  4. kwinject を使用して、ネイティブビルドを実行する Klocwork の buildspec を生成します。
    kwinject nmake -f win32/Makefile.msc
  5. Helix QAC GUI を開きます。(たとえば D:\QAC_Projects\zlib などで) Helix QAC プロジェクトを作成し、それをソースコードと同期し、プロジェクトを解析します。この例の残りでは、QAC GUI を開く必要がないことに注意してください。
  6. D:\Klocwork_Tables などの新しいディレクトリを作成します。
  7. 次に、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 の結果がインポートされ、同じテーブルディレクトリにロードされます。

  8. kwadmin を使用して、Validate ポータルで 'zlib' プロジェクトを作成します。
    kwadmin create-project zlib
  9. 最後に、生成されたテーブルをロードします。
    kwadmin load zlib D:\Klocwork_Tables\zlib
これで、ロードしたプロジェクトは Validate ポータルで参照できるようになります。

例 2

次に、C# 解析に Klocwork を使用し、C コード解析に Helix QAC を使用して、ハイブリッド C/C# プロジェクト 'dotzlib' の解析を行いましょう。この例では、上記の例 1 と同じ 'zlib' プロジェクトを使用します。

  1. Visual Studio でファイル D:\Sources\zlib\contrib\dotzlib\DotZLib.sln を開き、プロンプトに従って、欠落しているプロジェクトパーツを生成します。
  2. Visual Studio 2017 用の開発者コマンドプロンプトで、次を実行します。
    cd D:\Sources\zlib\contrib\dotzlib
  3. 次に、kwinject を使用して、C# build specification (ビルドスペック) を生成します。
    kwinject msbuild /p:UseSharedCompilation=false /p:ProduceReferenceAssembly=false
  4. kwbuildproject を使用して、ハイブリッドモードで Klocwork 解析を実行します。
    kwbuildproject -o D:\Klocwork_Tables\zlibdotnet --qac-project D:\QAC_Projects\zlib D:\Sources\zlib\contrib\dotzlib\kwinject.out
  5. kwadmin を使用して、Validate ポータルで 'zlibdotnet' プロジェクトを作成します。
    kwadmin create-project zlibdotnet
  6. 最後に、生成されたテーブルをロードします。
    kwadmin load zlibdotnet D:\Klocwork_Tables\zlibdotnet
これで、Klocwork エンジンによって検出された C# の指摘、および QAC エンジンによって検出された C の指摘と共に、Validate ポータルでロードしたプロジェクトを参照できます。

'dotzlib' は小さなプロジェクトであり、Klocwork C# チェッカーは、デフォルト構成で指摘を検出しない場合があります。より多くのチェッカーを有効にし、解析を再実行して、解析結果を拡張できます。

例 3

最後に、Klocwork が生成した指摘情報を使用しながら、Helix QAC 解析を使用し、'zlib' プロジェクトの解析結果を表示してみましょう。

これは例 1 を修正したバージョンです。この例では、Klocwork エンジンを使用して非常に浅い解析のみを実行し、Helix QAC エンジンのみを使用して実際の欠陥を生成します。浅い Klocwork 解析によって生成されたデータにより、Validate ポータルでコードのナビゲートが可能になり、またメトリックと傾向も生成できます。

  1. 例 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 欠陥解析を実行しないようにするためのスイッチの組み合わせであり、コード参照情報とメトリックの生成に旧式エンジンのみを使用するための指示でもあります。

  2. kwadmin を使用して、Validate ポータルで 'zlib_shallow' プロジェクトを作成します。
    kwadmin create-project zlib_shallow
  3. 最後に、生成されたテーブルをロードします。
    kwadmin load zlib_shallow D:\Klocwork_Tables\zlib_shallow
これで、Klocwork エンジンによって生成されたコードナビゲーションを使用して、Validate ポータルにロードされた Helix QAC 指摘を参照できるようになります。