繁体   English   中英

Azure DevOps 构建管道 - 从代码覆盖范围中排除文件夹

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM