コードカバレッジ

Note

SOLID-1.2.0 以降、ツールチェーンのバージョンはs002以降で使用できます。

概要

実行時にソースコード中の各ベーシックブロック単位ごとに、実行された回数を記録し、表示します。 時間の情報はありませんが、実行回数の情報が取得できるため、簡易プロファイラとしても使用できます。

使い方

ソリューション構成

コードカバレッジ機能を使用するには、Clangでビルドする必要があります。 あらかじめソリューション構成を変更しておいてください。

../_images/coverage-prepare-build.png

コードカバレッジの有効化

プロジェクト単位、またはソースファイル単位で有効化/無効化が可能です。 ここでは、プロジェクトのコードカバレッジを有効化する方法について説明します。

  1. プロジェクトのプロパティを開きます。

../_images/coverage-project.png

2. [構成プロパティ] - [C/C++] - [コードカバレッジ] を選択して、[コードカバレッジの有効化] を はい に設定します。

../_images/coverage-property.png

実行

  1. 有効化したプロジェクトと有効化したソースファイルを再ビルドします。

  2. ビルドが成功したら、デバッグを開始してプログラムを実行させ、カバレッジを確認したい時点まで 実行したら「すべて中断」してデバッグを停止してください。

  3. メニューの [デバッグ(D)] - [ウインドウ(W)] - [コードカバレッジ] を選択すると、 コードカバレッジウィンドウが開くので、ウィンドウ左上の解析ボタン analyze_button を押すと、結果がファイル単位でウィンドウに表示されます。

../_images/coverage-analyze.png

結果が表示された状態でソースコードの行をダブルクリックすると、ソースコードに行単位で実行回数が 表示されます。時間の情報はありませんが、回数が記録されているため、簡易プロファイラとしても使用できます。

../_images/coverage-source-count.png

また、「ビュー」を「カバレッジ」から「関数」に切り替えると、関数単位のカバレッジを、カウント数順に 一覧表示できます。

../_images/coverage-count-summary.png

オーバーヘッドについて

コードカバレッジは、コンパイラが自動的に対象のプログラムに対して記録用のコードを埋め込むため、 処理時間、メモリ使用量に対するオーバーヘッドが存在します。 オーバーヘッドは、対象コードの複雑さ(ベーシックブロックの量)に依存します。

  • メモリ使用量のオーバーヘッド

    1つのベーシックブロックに対して、下記のサイズが必要になります。

    • 記録用カウンタ 64bit(8バイト)

    • 記録用実行コード 6~8 step (24 ~ 32バイト)

  • 処理時間のオーバーヘッド

    ベーシックブロック実行時に、記録用実行コードの処理時間が追加されます。