*

Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(1)

公開日: : C++, C言語, Windows, 開発

どもです。
ここ最近、Windows上で開発を行っています。
その際に、当然単体テストを行うのですが、その「結果」すなわち「カバレッジの測定」を求められる場合があります。
というか、ほとんどの案件で求められます。
しかし、この「カバレッジ」を測定する方法はプラットフォームによって様々です。
特にWindows環境では、有用なツールは殆ど有償かつ高価であり、現場への導入は中々できません。
そのため、Windows環境でカバレッジを測定する方法は、多くの現場で課題になっています。

この課題を解決するよい方法はないかと色々調べていたら、「OpenCppCoverage」というツールが見つかりました。
今回は、このツールの導入から使い方について書きます。

1.ツールの入手

OpenCppCoverageのWindows用インストーラは、GitHubで公開されています。
現状(2019年11月23日時点)では、Ver.0.9.8.0が最新バージョンです。
32ビットと64ビット版がありますので、各自の環境に合致するものをダウンロードしてください。
OpenCppCoverage_001_download

2.インストール

ダウンロードしたインストーラをダブルクリックすると、インストールが実行されます。

まず、インストール先を設定します。
(特に指定がないのであれば、デフォルト値のままでよいです。)
インストール先を指定したら、「Next」をクリックします。
OpenCppCoverage_002_install_001
次に、OpenCppCoverageにパスを通すか(インストール先を環境変数に追加するか)否かを設定します。
個人的には、パスを通した方が便利なので、チェックボックスをチェックしておいて、パスを追加するように設定します。
パスを通す/通さないのチェックを設定したら、「Next」をクリックします。
OpenCppCoverage_003_install_002
最後に、インストール設定の確認画面が表示されます。
インストール先と、環境変数にパスを追加するか否かの設定が示されています。
設定内容に問題がなければ、そのまま「Install」をクリックします。
OpenCppCoverage_004_install_003

3.実行

インストールが完了したら、次は実行です。
OpenCppCoverageは、下記のコマンドで実行します。

上記コマンドを実行すると、コマンドを実行した場所にカバレッジの測定結果をまとめたファイル(を格納したフォルダ)が生成されます。

なお、上記コマンドの引数の詳細、およびその他の引数については、OpenCppCoverageを参照してください。

4.結果

実行結果は、下のように表示されます。
OpenCppCoverage_005_result_001
各ファイルのパスをクリックすると、カバレッジの詳細が表示されます。
OpenCppCoverage_006_result_002
こんな感じで、テストできているコードとできていないコードが分かるようになります。

5.惜しいところ

このツールの惜しいところです。

  1. 日本語が文字化けする
  2. 測定できるカバレッジは、C0のみ。
    (C1、MC/DCのカバレッジが測定できない?)
  3. たまに通っているのに「通っていない」、と判定される場合がある。

6.まとめ

今回は、OpenCppCoverageという、カバレッジを自動で測定、結果を出力してくれるツールについて紹介しました。
カバレッジを測定、結果を出力するという意味では、機能は十分かと思います。
しかし、かゆいところに手が届いていない印象を受けるのもまた事実…。

現状のバージョンが「0.9.8.0」となっていることから、今後の機能追加に期待したいです。
C1とかMC/DCに対応してくれたら、ものすごくうれしいなぁ。

ではっ!

関連記事

no image

C言語でEV3開発(17)-コマンドによるTOPPERS/HRP2 EV3RT アプリケーションの制御(コントロール)

どもです。 今回は、TOPPERS/HRP2 EV3RT で作成したアプリをPC上から操作するため

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(1)-ファイルへの出力

どもです。 最近、VisualStudio/C#でよく開発しています。 その際に、当然ですが

記事を読む

no image

C言語でEV3開発(15)-TOPPERS/HRP2 EV3 で PID制御

どもです。 今回のエントリーは、コレまでのエントリーから内容を変えて、モーターの動作の制御をします

記事を読む

toppers

C言語でEV3開発(27)-EV3にヒステリシス処理を実装してみた

どもです。 今回は、モーターから読み出した値に対するヒステリシス・フィルター処理です。 0.

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(1)-C#のユーザーコントロール開発

どもです。 突然ですが、今回はC#に関するエントリになります。 具体的には、C#/WPFで、独自

記事を読む

sensor_graph_visualization_002_eye_catch

センサーの値を見える化する(2)-温湿度センサ:DHT11の値の見える化

どもです。 前回に引き続き、今回もセンサ値の見える化です。 前回のエントリの最後に、「見

記事を読む

Arduino_Logo

ホールセンサーの種類と使い方(割込み編)

どもです。 前回に引き続き、今回もホールセンサーについてです。 1.前回からの違い 前回の

記事を読む

Arduino_Logo

1台のarduinno nanoで割込みとSPIの同時使用

どもです。 先日手に入れたArduino nano(中華)で遊んでいます。 今回、この1台のAr

記事を読む

MY_MFC_LOGO

MFCプログラミング(1):CFileまたはCStdioFileクラスを使用してファイル出力

どもです。 突然ですが、仕事でMFCを使用することになりました。 MFCはこれまで触ったことがな

記事を読む

think_about_utest

単体テストの効率化を考える(6)-スタブの自動生成ツール

どもです。 「単体テストの効率化について考える」の6回目です。 1回目から5回目まではコチラ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

c_sharp_eye_catch
セルに「取り消し線」が設定されているかを判定してみた

どもです。 前回、前々回と、エクセルのセル内の文字列から、「取り

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」の削除を簡単にしてみた

どもです。 前回、C#/OpenXmlを用いて、エクセルのセル内

c_sharp_eye_catch
セル内の「取り消し線で消された文字列」を削除してみた

どもです。 今回は、C#/OpenXmlの組み合わせで、エクセル

c_sharp_eye_catch
C#でバッファの内容を表示する処理を実装してみた-
データ型に従って動的に書式を設定する

どもです。 最近、C#でバッファ/配列の値をコンソールに表示した

arduino_relay_switch_003_self_preservation_circuit_eye_catch
Arduinoでリレースイッチ(3)-自己保存回路

どもです。 前回の記事で、リレースイッチ「AE-G5V-DRV」

→もっと見る

PAGE TOP ↑