LoginSignup
2
4

More than 3 years have passed since last update.

Visual Studioの外部ツール機能でOpenCoverを呼び出す方法(カバレッジ測定、.exe編)

Last updated at Posted at 2021-06-27

オープンソースのカバレッジ測定ツール(.NET)の簡単な使い方と、外部ツールに登録して利用する方法を解説します。

VisualStudioはEnterprise版であればカバレッジを測定できますが、料金が高く個人で利用できる値段ではありません。
代替策として、オープンソースで利用できるOpenCoverと、レポート変換ツールReportGeneratorを利用し外部ツールから呼び出せるように設定します。

※下記の方法はexe形式のみを対象としています。Webアプリ(asp.net)を計測するにはIISExpressを使いますが、設定がややこしいので別記事で書きます。

利用ツール

OpenCoverとReportGeneratorをインストールします

NuGetでインストールします

PM> Install-Package OpenCover
PM> Install-Package ReportGenerator
  • Visual Studioで適当なプロジェックトを作りツールメニューからソリューションのNuGetパッケージの管理を選んでインストールしても大丈夫です(%USERPROFILE%.nuget\packages\にインストールされます)

メニューからパッケージの管理画面を開きます。
Nuget-pm.png

パッケージ検索画面で検索して、両ツールを追加してください。
NuGet-OpenCover.png

最低限必要なコマンドラインの説明

OpenCover

引数 説明
-target:<ターゲットパス> カバレッジ計測対象のexeパス -target:"C:\TestTarget\bin\Debug\TestTarget.exe"
-output:<出力ファイル(xml)> 計測結果を保存するパス(xml) -output:"C:\TestTarget\bin\Debug\results.xml"
-register[:user] プロファイラへの登録で利用するユーザを指定。管理者権限がない場合、userを指定すれば良いようです -register:user
-mergeoutput 指定した場合、前回の出力結果にマージします -mergeoutput

ReportGenerator

引数 説明
-reports: OpenCoverで出力した測定結果ファイル(xml) -reports:"C:\TestTarget\bin\Debug\results.xml"
-reporttypes:<出力タイプ> Html,HtmlInline,MarkdownSummaryなど選択できます -reporttypes:HtmlInline;
-targetdir:<出力先> レポートファイル出力先 -targetdir:C:\TestTarget\bin\Debug\

外部ツールへの登録

Visual Studioのツール外部ツールで上記ツールを呼び出せるように登録します。

OpenCover

external-opencover.png

インストールしたOpenCoverのバージョンに合わせて変更してください。

引数 説明
タイトル OpenCover
コマンド %USERPROFILE%.nuget\packages\opencover\4.7.1221\tools\OpenCover.Console.exe
引数 -target:"\$(TargetPath)" -output:"\$(TargetDir)reports.xml" -register:user

ReportGenerator

external-reportgen.png

インストールしたReportGeneratorのバージョンに合わせて変更してください。

引数 説明
タイトル ReportGenerator
コマンド %USERPROFILE%.nuget\packages\reportgenerator\4.8.10\tools\net47\ReportGenerator.exe
引数 -reports:"\$(TargetDir)reports.xml" -reporttypes:HtmlInline; -targetdir:"\$(TargetDir)"

実行方法と出力サンプル

  1. ソリューションエクスプローラーから計測対象のプロジェクトファイルを開いて(\$(TargetDir)に影響)から、登録したツール(OpenCover)を実行します。
  2. 手動でプログラムを動かします(単体テストのようなイメージで実行すると網羅率が上がります)
  3. プログラムを終了させた後ReportGeneratorを実行します。
  4. 処理完了後、出力先(-targetdir:)にindex.htmlができているので開きます。

出力サンプル

  • テスト対象アプリ(四則演算のうち、×、÷のみを実行)

test-taget.png

  • サマリー
    • カバレッジ、複雑度のサマリが表示されます。
    • 掛け算、割り算を実行したことがわかります(割り算は通っていない分岐が残っている)。

report-summary.png

  • ソース(サマリをスクロールすると表示、キャプチャーの都合で分けています)

    • 割り算で0除算の分岐を通っていないことがわかります。

report-coverage.png

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4