Opencoverのカバレッジチェック対象を名前空間で除外する
OpenCoverでコードカバレッジを計測する対象がVB.NETのプロジェクトのとき、
テストプロジェクトとプロジェクト内のMy Projectディレクトリ配下のコードについては
カバレッジの計測は不要と考えたので-filter:
パラメータを使用して除外することにした。
例えば、ソリューション内にプロジェクトBuildTarget
とテストプロジェクトUnitTest
が存在している場合で、
BuildTargetディレクトリをカバレッジ計測の対象とし、
UnitTestディレクトリとMy Projectディレクトリ(名前空間がMy
のもの)をカバレッジ計測から除外するとき、
Opencoverのフィルタパラメータは-filter:"+[BuildTarget*]* -[UnitTest*]* -[*]*.My.*""
を指定する。
フィルタの記述ルールについては、Usage · OpenCover/opencover Wiki · GitHubに詳細が書かれているが、 大きく以下の4点を覚えておけばある程度対応できると思う。
- フィルタの記述がない場合は
+[*]*
が適用され、すべてを対象とする +[○○*]*
は、○○から始まる全てのアセンブリを対象とする-[△△*]*
は、△△から始まる全てのアセンブリを除外する-[*]××
は、全てのアセンブリ内で××名前空間のものを除外する
フィルタについては、除外したいキーワードだけ指定してもテスト結果は出力されないようなので注意しなければならないのと、
本来であれば、ディレクトリ単位で除外したい場合はWikiにある通り-excludedirs:
パラメータを使用すべきだと思う。*1
*1:-excludedirsがうまくいかなかったので諦めた。