如何排除TeamCity中dotCover覆盖的types和方法?

我有一个现有的C#4项目,我已经通过使用TestDriven.Net和Visual Studio覆盖function,即Test With – > Coverage从上下文菜单检查了testing覆盖率。

该项目包含一些代码,我不想要覆盖,我解决了这些types和方法添加[ExcludeFromCodeCoverage]

我们刚刚将TeamCity升级到6.0.3,并且在NUnit构build步骤中添加了dotCover覆盖。

我已经设法删除“filter”部分中的外部程序集(例如NHibernate)(通过明确指出我想要覆盖的程序集),但我正在努力如何从覆盖程序集中排除types和方法。

在这里输入图像说明

好吧,马丁,我明白了! 它只花了一个小时的filter语法随机戳…当文档说,像这样添加一个filter

 +:myassembly=*;type=*;method=*** 

他们真的是这个意思……凡是<>中的任何东西都完全由你来代替,而其他任何东西都是一个文字

 +:<myassembly>;type=<filter>;method=<filter> 

所以,我想要的filter是包含一个程序集(从一些程序集中),然后在该程序集中排除一些名称空间。 我写了

 +:Omnyx.Scanner -:Omnyx.Scanner;type=Omnyx.Scanner.Simulation.* -:Omnyx.Scanner;type=Omnyx.Scanner.ToolsCommon.* 

看看dotCover提示和技巧页面。 看起来您可以在“filter”部分设置排除项目,就像您排除整个组件一样。

假设您要忽略MyStuff包含的名为DoStuff的方法,该方法位于MyAwesomeAssembly库中。 那么你的dotCover XML应该看起来像这样:

 <Filters> <ExcludeFilters> <FilterEntry> <ModuleMask>MyAwesomeAssembly</ModuleMask> <ClassMask>MyStuff</ClassMask> <FunctionMask>DoStuff</FunctionMask> </FilterEntry> </ExcludeFilters> </Filters> 

免责声明:我不使用dotCover,所以我不能100%确定这是否真的有效。

这就是TeamCity文档中关于filter选项的说明:

指定程序集使用以下语法对每行进行一次分析:+:myassembly = ; type = ; method = *

使用 – :myassembly从代码覆盖范围中排除程序集。 此处支持星号通配符(*)。