コードカバレッジ
Note
SOLID-1.2.0 以降、ツールチェーンのバージョンはs002以降で使用できます。
概要
実行時にソースコード中の各ベーシックブロック単位ごとに、実行された回数を記録し、表示します。 時間の情報はありませんが、実行回数の情報が取得できるため、簡易プロファイラとしても使用できます。
使い方
ソリューション構成
コードカバレッジ機能を使用するには、Clangでビルドする必要があります。 あらかじめソリューション構成を変更しておいてください。
コードカバレッジの有効化
プロジェクト単位、またはソースファイル単位で有効化/無効化が可能です。 ここでは、プロジェクトのコードカバレッジを有効化する方法について説明します。
プロジェクトのプロパティを開きます。
2. [構成プロパティ] - [C/C++] - [コードカバレッジ] を選択して、[コードカバレッジの有効化] を はい に設定します。
実行
有効化したプロジェクトと有効化したソースファイルを再ビルドします。
ビルドが成功したら、デバッグを開始してプログラムを実行させ、カバレッジを確認したい時点まで 実行したら「すべて中断」してデバッグを停止してください。
メニューの [デバッグ(D)] - [ウインドウ(W)] - [コードカバレッジ] を選択すると、 コードカバレッジウィンドウが開くので、ウィンドウ左上の解析ボタン を押すと、結果がファイル単位でウィンドウに表示されます。
結果が表示された状態でソースコードの行をダブルクリックすると、ソースコードに行単位で実行回数が 表示されます。時間の情報はありませんが、回数が記録されているため、簡易プロファイラとしても使用できます。
また、「ビュー」を「カバレッジ」から「関数」に切り替えると、関数単位のカバレッジを、カウント数順に 一覧表示できます。
オーバーヘッドについて
コードカバレッジは、コンパイラが自動的に対象のプログラムに対して記録用のコードを埋め込むため、 処理時間、メモリ使用量に対するオーバーヘッドが存在します。 オーバーヘッドは、対象コードの複雑さ(ベーシックブロックの量)に依存します。
メモリ使用量のオーバーヘッド
1つのベーシックブロックに対して、下記のサイズが必要になります。
記録用カウンタ 64bit(8バイト)
記録用実行コード 6~8 step (24 ~ 32バイト)
処理時間のオーバーヘッド
ベーシックブロック実行時に、記録用実行コードの処理時間が追加されます。