You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Azure DevOps代码覆盖率检查排除第三方NuGet DLL?

解决Azure DevOps Pipeline代码覆盖率仅统计自研代码的问题

方法一:使用.runsettings配置文件

创建名为CodeCoverage.runsettings的配置文件,放在项目根目录,通过规则过滤第三方代码,仅保留自研代码的覆盖率统计:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <!-- 替换为自研代码的命名空间/模块,支持通配符 -->
            <Include>
              <Module>YourCompany.*</Module>
              <Module>YourProject.*</Module>
            </Include>
            <!-- 排除第三方包与测试项目自身 -->
            <Exclude>
              <Module>*.Tests</Module>
              <Module>Newtonsoft.Json</Module>
              <Module>Microsoft.*</Module>
              <Module>System.*</Module>
              <!-- 带版本号的第三方包通用排除规则 -->
              <Module>*[0-9].*</Module>
            </Exclude>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

修改Pipeline中的测试任务,指定使用该配置文件:

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: '**/*[Tt]ests/*.csproj'
    arguments: '--configuration release --collect "Code coverage" --settings CodeCoverage.runsettings --no-build'

方法二:直接通过命令行参数过滤(基于Coverlet)

如果项目使用Coverlet作为覆盖率收集工具(Azure DevOps默认覆盖率收集多基于此),可直接在测试命令中添加过滤参数:

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: '**/*[Tt]ests/*.csproj'
    arguments: '--configuration release --collect "Code coverage" --no-build /p:Exclude="[Newtonsoft.Json]*" /p:Exclude="[Microsoft.*]*" /p:Exclude="[System.*]*" /p:Include="[YourCompany.*]*"'

注:将YourCompany.*替换为自研代码的命名空间,[Newtonsoft.Json]*这类为需要排除的第三方包命名空间,可按需增减。

关键说明

  • 优先推荐.runsettings文件方案,配置更集中、易维护;命令行参数方案适合快速临时调整。
  • 需确保Include规则精准匹配自研代码的命名空间/模块,避免漏统计;Exclude规则覆盖项目依赖的第三方包,可根据实际依赖情况调整。

内容的提问来源于stack exchange,提问作者Matt Frear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:47:04