コード計測 for VC
はじめに
「コード計測 for VC」は、VisualStudioのC/C++で作成したプログラムのコードカバレッジを計測するためのツールです。
指定したコマンドを実行し、実行中に処理されたコードと全ステップ数を計測することができます。
「コード計測 for VC」には、以下のような特徴があります。
- コードカバレッジを計測できます。(あたりまえ...。でも機能ってこれだけなので...。)
- 実際に実行ファイルに埋め込まれているステップ数を取得可能。
- VisualStudioのC/C++で作成したプログラムのみサポート
※動作確認は、Windows 2000/XP/Vista/7、VisualStudio 2005/2008で行っていますが、VisualStudio 2003/2010でも動作すると思います。
※計測できるコードカバレッジはC0カバレッジになります。C1やC2を計測することはできません。
インストール
インストールは不要です。解凍したフォルダにある「vccovui.exe」を起動してください。「vccovcmd.exe」はコマンドライン版です。
アンインストールはフォルダごと削除してください。レジストリなどは使用していません。
使い方
準備するもの
コードカバレッジを計測するためには、以下の2つを準備する必要があります。
- 測定するプログラム
測定するプログラムはデバッグビルド(最適化オフでのビルド)にすることをおすすめします。最適化が行われたものを測定しても意味ないです。
測定するプログラムのソースファイルは必ず以下のことを守ってください。(デスクトップなどにソースファイルをおいている場合は、一度「C:\temp」などにコピーしてビルドしなおしてください)
- フォルダ名、ファイル名に2バイトコードを含まないでください。
- フォルダ名、ファイル名を合わせた長さは260バイト以下にしてください。
- ビルド時に生成された.pdbファイル
.pdbファイルとはデバッグ情報が埋め込まれたファイルです。VisualStudioでビルドするとプログラムと同じフォルダに勝手に作成されると思います。作成されないときは、VisualStudioで以下の設定を確認してください。
- VisualStudioのプロジェクトのプロパティ画面→リンカ→デバッグ→デバッグ情報の生成:「はい」に設定
- VisualStudioのプロジェクトのプロパティ画面→リンカ→デバッグ→プログラムデータベースファイルの生成:.pdbファイルはこのファイル名で作成されます
※.pdbファイルは必ず測定するプログラムをビルドしたときに作成されたものを使用してください。測定するプログラムより古い.pdb(あるいは新しい.pdb)は使用できません。
※DLLも測定する場合は、測定するDLLの.pdbファイルも必要です。
※.pdbファイルの場所について
ビルドした環境で測定する場合、.pdbファイルは作成された場所から移動しないかプログラムと同じフォルダにおきます。詳しくは「FAQ」を参照してください。
測定手順
- 「コード計測 for VC」を起動すると以下のような画面が表示されます。
を選択すると、以下のような画面が表示されます。
- コマンドに測定するプログラムのコマンドを入力して「実行」を選択します。
時間がかかります。気長に待ちましょう。
- 出力ウィンドウに「カバレッジ情報を保存しました」と表示されると、測定完了です。
- 集計結果一覧ウィンドウに項目が追加されるので、選択してください。
- 集計結果ウィンドウに測定結果が表示されます。
を選択すると集計方法を変更できます。(
は測定時にオプションを有効にしないと選択できません)
か
を選択し、集計結果ウィンドウで項目を選択するとソースファイルが表示されます。
灰色の文字は実行ステップじゃない行、赤色背景は実行されなかった行、緑色背景は実行された行を表します。
※ソースファイルがビルド時のパスにない場合は、ソースファイルは表示されず各行の状態のみ表示されます。
各機能の説明
集計結果一覧ウィンドウ
- 集計結果の表示
項目を選択すると集計結果ウィンドウに集計結果が表示されます。測定が失敗した項目を選択した場合、集計結果には何も表示されません。その場合は「FAQ」を参照してください。
複数選択すると、集計結果には選択した結果をマージして表示されます。ただし、実行するプログラムが異なっていたり、ソースを修正していたりするものをマージしても表示される結果は正しくないものになります。
「コード計測 for VC」にはマージする集計結果の正当性チェックは行いませんので、利用者が判断してください。また、マージした場合関数で集計を行うことはできません。
- 削除
項目を選択して
を選択すると項目を削除できます。
- 更新
を選択すると最新の状態に更新します。通常は選択する必要はありませんが、集計結果を直接編集した場合などに使用してください。
集計結果ウィンドウ
を選択すると集計方法を変更することができます。
か
が選択されている状態で、項目をダブルクリックするとソースファイルを表示することができます。
か
が選択されている状態で、項目を右クリックして「HTMLに保存」を選択するとソースファイルをHTML形式で保存することができます。
はコマンドの実行時にコマンドの実行ダイアログで「関数名も集計」をチェックしたときのみ利用可能です。
を選択すると現在表示中の内容をCSV形式で保存します。
出力ウィンドウ
出力ウィンドウに表示されるおもなメッセージとその意味は以下のとおりです。
- カバレッジ情報の保存に失敗しました
集計結果をファイルに保存することができませんでした。設定ダイアログの設定を確認してください。
- カバレッジ情報を保存しました
集計が正常に終了したときに表示されます。
- コマンドが開始できませんでした
コマンドが開始できませんでした。コマンドの実行ダイアログの設定を確認してください。
- シンボルのロード中
集計のための情報を読み込めました。このメッセージが表示されないときは、「FAQ」を参照して設定を確認してください。
- コマンドの実行中に例外が発生しました
コマンドで例外が発生しています。カバレッジの測定は可能ですが、デバッグしましょう。
ソース表示ダイアログ
- 各行の色の意味は以下の通りです。
- 灰色の行:実行ステップ以外
- 赤色背景の行:実行されなかった行
- 緑色背景の行:実行された行
※ソースファイルがビルド時のパスにない場合は、ソースファイルを選択するダイアログボックスが表示されます。キャンセルを選択すると、ソースファイルは表示されず各行の状態のみ表示されます。
※カバレッジの測定後ソースファイルを修正した場合、各行の色が正しく表示されません。最新のソースファイルに対し、測定時の行数で色を付けているためです。
コマンドの実行ダイアログ
- コマンド
実行するコマンドを指定します。
- ソースフォルダ
指定すると指定したフォルダ以下のもののみ集計を行います。通常は空欄でかまいませんが、集計に時間がかかるときに指定してください。
- 存在するファイルのみ集計
実行するPCにソースファイルが存在するもののみ集計を行います。ビルド時のパスにソースファイルがないときや、ビルド時と異なるPCで実行しているときはチェックを外してください。
- 関数名も集計
関数名ごとのカバレッジも集計します。集計に時間がかかるため、必要なときのみ使用してください。
設定ダイアログ
- 集計結果の保存先フォルダ
集計結果を保存するフォルダを指定してください。ここにある.logという拡張子のファイルが集計結果一覧ウィンドウに表示されます。.logファイルは手動でコピー、削除しても問題ありません。
- 集計に含めないフォルダ
集計対象となるフォルダはコマンドの実行ダイアログで設定しますが、ここでは集計結果を集計結果ウィンドウに表示するときに除外するフォルダを指定します。通常ですと、C標準関数のソースコード、MFCのソースコードなども集計されてしまいますので、ここでそれらのフォルダを指定して集計しないようにしてください。
※集計結果を他のPCで参照するには、「集計結果の保存先フォルダ」にある.logファイルをコピーしてください。
コマンドライン版
コマンドライン版を使用して、集計をすることも可能です。コマンドプロンプトから解凍したフォルダにある「vccovcmd.exe」を起動してください。
コマンドライン版のオプションは、起動すると表示される説明を参照してください。集計後、「vccovcmd.exe」があるフォルダに.logファイルが生成されますので、「集計結果の保存先フォルダ」に移動して「vccovui.exe」を使って結果を表示してください。
FAQ
集計結果ウィンドウに何も表示されない
以下を確認してください。
- ビルド方法
- 測定するプログラムのソースファイルのフォルダ名、ファイル名に2バイトコードを含まないでください。
- 測定するプログラムのソースファイルのフォルダ名、ファイル名を合わせた長さは260バイト以下にしてください。
- .pdbファイル
測定するプログラムの.pdbファイルを正しい場所においてください。
ビルドした環境で測定する場合、.pdbファイルは作成された場所かプログラムと同じフォルダにおきます。たとえばtest.exe、sub.dllというプログラムをビルドして以下のようにファイルができた場合
- C:\test\debug\test.exe
- C:\test\debug\test.pdb
- C:\sub\debug\sub.dll
- C:\sub\debug\sub.pdb
→ test.exe、sub.dllはどこにおいてもかまいません。
→ test.pdbはtest.exeと同じフォルダかC:\test\debug\に、
→ sub.pdbはtest.exeと同じフォルダかC:\sub\debug\においてください。
よくわからない場合は、VisualStudioでデバッグビルドを行い、ビルドを行ったPCで測定してください。
- 実行時のログ
実行したときに、「シンボルのロード中」という行が表示されることを確認してください。表示されない場合は、上記の「.pdbファイル」を確認してください。
- 実行時の設定
以下の設定を確認してください。とりあえず空欄あるいはチェックを外した状態にして試してください。
- コマンドの実行ダイアログ→ソースフォルダ
- コマンドの実行ダイアログ→存在するファイルのみ集計
- 表示設定
以下の設定を確認してください。とりあえず空欄にして試してください。
上記を確認しても解決しない場合は「連絡先」まで連絡ください。
集計結果一覧ウィンドウに何も表示されない
以下の設定を確認して、存在するフォルダになっていることを確認してください。
集計結果を見比べられない
2つ以上の集計結果を見比べたい場合は、「コード計測 for VC」を複数起動してください。
2つ以上の集計結果をまとめて集計したい場合は、集計結果一覧ウィンドウでCtrlキーを押しながら複数の項目を選択してください。
集計結果に不要なものが表示される
初期設定では、MFCなどVisualStudio、Windows SDKが提供するソースファイルが表示されます。以下の設定を行って集計対象から外してください。
※たとえば、以下の2行を記述するといいです。
C:\Program Files\Microsoft SDKs
C:\Program Files\Microsoft Visual Studio
集計結果に一部の結果が表示されない
現在のバージョンでは、以下の集計は行えません。
- 他のプロセスのカバレッジ
CreateProcess()、ShellExecute()などで起動したプロセスによって実行された部分はカバレッジ集計対象外になります。
- どこからも参照されないソースファイル
スタティックライブラリをリンクしてプログラムを作成している場合で、スタティックライブラリ中のソースファイルがどこからも参照されない関数のみで構成されている場合、そのソースファイルはカバレッジの集計対象にならないようです。今のところ対応策が見つかっていませんので、集計結果に表示されないソースファイルは 0% として処理をしてください。
ソース表示の色付けがおかしい
カバレッジの測定後ソースファイルを修正した場合、各行の色が正しく表示されません。最新のソースファイルに対し、測定時の行数で色を付けているためです。
ソースファイルを修正してからもソース表示の色付けを確認したい場合は、「集計結果ウィンドウ」を参照してHTMLに保存してください。
ソースファイルを修正していないのに各行の色が正しく表示されない場合は、「連絡先」まで連絡ください。
ライセンス、免責
- 「コード計測 for VC」はシェアウェアです。ライセンスについてはlicense.txtを参照してください。
- 「コード計測 for VC」のライセンスは、ソフトウェアを使用するためのものであり、ソフトウェアの改良、サポートを保証するものではありません。
- 「コード計測 for VC」の著作権は、作者(haniwa3)にあります。
- 「コード計測 for VC」により生じた被害については、作者は一切責任を負いません。
連絡先
不具合、要望などはお気軽に連絡ください。
haniwa33@yahoo.co.jp