CI/CD パイプライン差分解析と Klocwork 解析

ビルド解析では、一般に夜間統合ビルドが実行されます。Klocwork では、定期的な統合解析と併せて CI/CD パイプライン差分解析を実行することもできます。Klocwork ツールは DevOps に対応するように設計されているため、継続的デリバリパイプラインの一部として静的コード解析を簡単に含めることができます。

Klocwork の CI/CD パイプライン差分解析により、組織は夜間ビルドを待たずに、より素早くエラーを特定し、通知することができます。指摘をより素早く特定し、通知することにより、デベロッパーは指摘のあるコードを早い段階で修正することができます。

Klocwork サーバーからのシステムコンテキストデータ (インテグレーション解析で生成されたもの) を使用すると、変更されたファイルのみを解析し、システム全体が解析されたかのように差分解析結果も提供できます。この結果、解析時間が最短になります。

デベロッパーがコードを更新してコミットすると、CI ビルドシステムは変更を検出し、1 日を通して多くの小さな増分ビルドを行います。Klocwork CI は夜間ビルドを待たずに新しいコードを解析し、デベロッパーに問題を即時に伝えます。プロセスの概要は以下のとおりです。

  1. デベロッパーがコードを変更し、コミットします。
  2. CI ビルドシステムが変更を検出し、ソフトウェアを構築します。
  3. Klocwork CI が変更を解析し、指定した形式で新しい指摘のリストを生成します。

サポートされている環境

Klocwork CI は次をサポートしています。

  • C/C++、C#、Java
  • Windows および Linux エージェント

実装ステップ

  • 指摘が報告されるタイミングと場所を決定する
  • 指摘のトリアージ方法を決定する
  • Klocwork コマンド (kwciagent など) をジョブに統合する
  • レポートスクリプトをジョブに統合する
  • テストを実施し、すべてが想定どおりに機能していることを確認する

kwciagent の出力例

kwciagent list   --issue NPD.FUNC.MUST -F detailed
---------------------------------------------------------------------------
704 (Local) C:\Klocwork\demo\source\cvs1.12.11\cvs\src\client.c:2944                    
            NPD.FUNC.MUST (1:Critical) Analyze
Pointer 'date' returned from call to function 'format_date_alloc' at line 2943 may be NULL and will be dereferenced at line 2944.
  * client.c:2943: 'date' is assigned the return value from function                              
                   'format_date_alloc'.
  * client.c:2944: 'date' is dereferenced by formatted printing                               
                    function 'printf'.
Current status 'Analyze'

Summary: 1 Local
1 Total Issue(s)

Perforce はここでも役に立ちます。Klocwork との CI 統合で支援が必要な場合は、静的コード解析プロフェッショナルサービスに問い合わせて、サービス契約による支援について相談してください。