none
Visual Studioを用いたコードカバレッジ取得機能について RRS feed

  • 質問

  • Visual Studio2010 Premiumを用いたコードカバレッジ取得機能について以下2点ご教授いただければと思います。

    1. 分岐網羅率(C1)の取得は可能でしょうか?
    2. Boost Test Library で作成した単体テストコードからコードカバレッジ率を取得できるのでしょうか?
    • Visual Studioの機能で作成したテストコードでないと取得できないのでしょうか?
    • 下記URLの方法でも難しいでしょうか?

    http://msdn.microsoft.com/ja-jp/library/bb385771.aspx

    2012年4月13日 2:57

回答

  • 2. についてだけですが、Visual Studio で作ったテスト コードでなくても、コード カバレッジを取ることは可能です。

    コード カバレッジ ツールのコマンドを直接実行します。これは次の URL が参考になると思います。
    手順の 3. で NUnit の Test Runner を実行していますが、ここを Boost の Test Runner に置き換えれば良いはずです。

     NUnitとVSTSのCode Coverageを連携させる « Scrabble.NET
     http://blog.clavis.in/scrabblenet/archives/33


    あるいは、これを踏まえて、アプリケーションとして自動実行してしまう方法もあります。
    次の URL にある、"Writing Custom Functions to Gather Code Coverage Data" あたりが参考になると思います。

     Advanced Code Coverage Techniques with Visual Studio Team System
     http://msdn.microsoft.com/en-us/library/dd347161.aspx

    どちらも Visual Studio 2008 に関する内容ですので、パス等は適宜読み替えてください。

    # 1. については C0 相当のように思いますが、確証がありません。(見つけられませんでした。)
    2012年4月17日 7:35
  • C1 の定義が違うだけでは?
    日本語の Wikipedia の外部リンクから飛べる Code Coverage Analysis にも C1 や C2 が登場しますが、C0 は登場しません。また、C1 は Statement Coverage のところに出てきます。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年4月18日 13:42
    モデレータ

すべての返信

  • 2. についてだけですが、Visual Studio で作ったテスト コードでなくても、コード カバレッジを取ることは可能です。

    コード カバレッジ ツールのコマンドを直接実行します。これは次の URL が参考になると思います。
    手順の 3. で NUnit の Test Runner を実行していますが、ここを Boost の Test Runner に置き換えれば良いはずです。

     NUnitとVSTSのCode Coverageを連携させる « Scrabble.NET
     http://blog.clavis.in/scrabblenet/archives/33


    あるいは、これを踏まえて、アプリケーションとして自動実行してしまう方法もあります。
    次の URL にある、"Writing Custom Functions to Gather Code Coverage Data" あたりが参考になると思います。

     Advanced Code Coverage Techniques with Visual Studio Team System
     http://msdn.microsoft.com/en-us/library/dd347161.aspx

    どちらも Visual Studio 2008 に関する内容ですので、パス等は適宜読み替えてください。

    # 1. については C0 相当のように思いますが、確証がありません。(見つけられませんでした。)
    2012年4月17日 7:35
  • totojo様、ご回答ありがとうございます。


    2. についてご教示いただきました下記の方法を試し、boost で作成したテストのカバレッジファイルを取得することができました。

    >コード カバレッジ ツールのコマンドを直接実行します。これは次の URL が参考になると思います。
    手順の 3. で NUnit の Test Runner を実行していますが、ここを Boost の Test Runner に置き換えれば良いはずです。

     NUnitとVSTSのCode Coverageを連携させる « Scrabble.NET
     http://blog.clavis.in/scrabblenet/archives/33


    1.分岐網羅率(C1)に関してですが、下記リンクに

    http://msdn.microsoft.com/en-us/library/dd299398%28v=VS.90%29.aspx

    「The code coverage tools use two different types of analysis: block-based statement coverage, also known as C1 coverage, and line-based coverage.」

    とあります。

    私の認識では

    C1=分岐カバレッジ(branch coverage)≠ブロックカバレッジ(block-based statement coverage)

    なのですが「also known as」とありますし、混乱しています。

    ●私の認識誤りor語訳なのでしょうか?


    じっさいに下記リンクの「Covered (% Blocks)」を取得した所、私の期待するC1(分岐カバレッジ)の値を取得することができませんでした。

    http://msdn.microsoft.com/en-us/library/cc667391.aspx

    ●上記の「Covered (% Blocks)」は「block-based statement coverage」のことを指していると考えて間違いないのでしょうか?


    2012年4月18日 4:31
  • C1 の定義が違うだけでは?
    日本語の Wikipedia の外部リンクから飛べる Code Coverage Analysis にも C1 や C2 が登場しますが、C0 は登場しません。また、C1 は Statement Coverage のところに出てきます。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年4月18日 13:42
    モデレータ
  • 日本とカバレッジの名前が違うのですね。

    勉強になりました。


    ありがとうございました。
    2012年4月19日 0:20