我使用.runsettings文件从代码覆盖中排除某些代码,但不会将其排除在代码覆盖范围之外,因为我的代码覆盖率百分比根本没有变化。也没有错误。
代码:
<CodeCoverage>
<ModulePaths>
<Include>
<ModulePath>.*\.dll$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*\.test.dll</ModulePath>
<ModulePath>.*\.csv.dll</ModulePath>
</Exclude>
</ModulePaths>
<Functions>
<Exclude>
<!-- CORE -->
<Function>xxx.DI.Mobile.Core.ViewModels.HomeAndContents.xxx</Function>
<Function>xxx.DI.Mobile.Core.ViewModels.Components.xxxx</Function>
<Function>xxx.DI.Mobile.Core.ViewModels.Components.xxx</Function>
<!-- xxx -->
<Function>^xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.xxx\.xxx$</Function>
<Function>^xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.xxx\.xxx$</Function>
<Function>.*\.xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.xxx\.xxx$</Function>
<Function>.*xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Dashboard\.xxx$</Function>
</Exclude>
</Functions>
<UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
<AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
<CollectFromChildProcesses>True</CollectFromChildProcesses>
<CollectAspDotNet>False</CollectAspDotNet>
</CodeCoverage>
长类名只是每个类的完整路径的DOT表示法。它说使用\.
来分隔命名空间。
我的一个班级的一个例子是:
namespace xxx.DI.Mobile.Core.State.ViewModels.xxx
{
public class xxx : yyy
{
然后就像这样进入函数标签:
<Function>xxx.DI.Mobile.Core.State.ViewModels.xxx.xxx</Function>
在我的函数标记中尝试这些正则表达式但尚未使用:
<Function>^xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Vehicle\.xxx$</Function>
<Function>^xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Vehicle\.xxx$</Function>
<Function>.*\.xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Policies\.xxx$</Function>
<Function>.*xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Dashboard\.xxx$</Function>
<Function>xxx\.DI\.Mobile\.Core\.xxx\.ViewModels\.Common\.xxx</Function>
为什么不从代码覆盖中排除我的任何代码?
答案 0 :(得分:2)
<Function>
标记排除了功能。因此,要排除整个班级,只需将\..*
添加到班级的末尾 - 其中\.
表示点,.*
表示任何内容。例如,班级的所有功能。例如:
<Function>xxx.xxx.Mobile.Core.xxx.ViewModels.Vehicle.xxx\..*</Function>
尽管dot应该是\.
,但我的文件夹名称之间只有.
无论如何都在工作。
答案 1 :(得分:0)
我的猜测是系统无法解释排除中的<function>
阻止,可能会尝试给出正则表达式。
请在下面尝试:
<Function>^xxx\.DI\.Mobile\.Core\.State\.ViewModels\.Common\.GetAQuoteViewModel$</Function>
或
<Function>.*\\.DI\.Mobile\.Core\.State\.ViewModels\.Common\.GetAQuoteViewModel$</Function>
更重要的是,前两个排除被解释为
<强> anystring.test.dll 强>
和
<强> anystring.csv.dll 强>
希望你没事。
我认为您已经知道该规则,特定于此代码覆盖率设置。
但在下面列出。
。*匹配任何字符的字符串
。匹配一个点&#34;。&#34;
()匹配括号&#34;()&#34;
\匹配文件路径分隔符&#34; \&#34;
^匹配字符串的开头
$匹配字符串的结尾