![](/img/trans.png)
[英]Build and Publish MVC4 application using MSBuild in Azure Devops Pipeline
[英]Azure DevOps Build Pipeline - Exclude a Folder from Code Coverage
我试图从代码覆盖率分析中排除一个文件夹,但经过大量的反复试验和研究后,我没有取得任何成功。
这是我在构建管道中的测试任务:
- task: DotNetCoreCLI@2
displayName: 'Running Unit Tests'
inputs:
command: test
projects: '$(unitTestsProject)'
arguments: '--configuration $(buildConfiguration) --settings ./cover.runsettings'
publishTestResults: true
continueOnError: false
在运行设置中,我尝试了不同的方法,其中一些如下所示:*
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>.*Migrations.*</ModulePath>
<ModulePath>.*\\Migrations\\.*</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<CodeCoverage>
<ExcludeDirectories>
<Directory>.*\\Migrations\\.*</Directory>
</ExcludeDirectories>
</CodeCoverage>
</Configuration>
</DataCollector>
上面的所有变体都不起作用。 但是当我在每个我不想包含在代码覆盖范围内的类上使用属性 [ExcludeFromCodeCoverage] 时,它运行良好。 我需要它从 runsettings 文件开始工作,因为迁移文件夹会快速增长,并且继续浏览生成的类并添加属性是不切实际的。
任何帮助或指导将不胜感激。 谢谢
根据这个自定义代码覆盖率分析的文档,您可以使用下面的代码进行测试以定义您的代码。
<!-- Match the path of the source files in which each method is defined: -->
<Sources>
<Exclude>
<Source>.*\\atlmfc\\.*</Source>
<Source>.*\\vctools\\.*</Source>
<Source>.*\\public\\sdk\\.*</Source>
<Source>.*\\microsoft sdks\\.*</Source>
<Source>.*\\vc\\include\\.*</Source>
</Exclude>
</Sources>
我的猜测是,通过命名空间来阻止它们会更容易......
<Functions>
<Exclude>
<Function>^Fabrikam\.UnitTest\..*</Function>
<Function>^std::.*</Function>
<Function>^ATL::.*</Function>
<Function>.*::__GetTestMethodInfo.*</Function>
<Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
<Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
</Exclude>
</Functions>
源文件依赖于存在的符号数据和其他一些东西。 命名空间嵌入在程序集本身中。
在将它也放在构建服务器上之前,请确保您在本地尝试它以查看它是否有效......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.