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

如何在Azure DevOps管道中过滤代码覆盖率结果的外部依赖?

过滤VSTest代码覆盖率中的外部依赖项

要只统计自身代码的覆盖率,核心是通过自定义.runsettings配置文件指定代码覆盖率的包含/排除规则,替代默认的全量收集逻辑。

步骤1:创建代码覆盖率配置文件

在项目根目录创建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>
            <!-- 包含需要统计的自身程序集 -->
            <ModulePaths>
              <Include>
                <ModulePath>YourProjectPrefix.*.dll</ModulePath>
                <!-- 示例:单个项目可直接写<ModulePath>YourBusinessProject.dll</ModulePath> -->
              </Include>
              <Exclude>
                <!-- 排除测试程序集 -->
                <ModulePath>*.Tests.dll</ModulePath>
                <!-- 排除微软、系统类库 -->
                <ModulePath>Microsoft.*.dll</ModulePath>
                <ModulePath>System.*.dll</ModulePath>
                <!-- 排除特定第三方NuGet依赖 -->
                <ModulePath>Newtonsoft.Json.dll</ModulePath>
                <ModulePath>xunit.*.dll</ModulePath>
                <!-- 排除原生依赖 -->
                <ModulePath>*.native.dll</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- 可选:通过公司名称批量过滤 -->
            <CompanyNames>
              <Include>
                <CompanyName>YourCompanyName</CompanyName>
              </Include>
              <Exclude>
                <CompanyName>Microsoft Corporation</CompanyName>
              </Exclude>
            </CompanyNames>

            <!-- 可选:排除自动生成的代码 -->
            <Sources>
              <Exclude>
                <Source>*.g.cs</Source>
                <Source>*.generated.cs</Source>
              </Exclude>
            </Sources>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

步骤2:修改VSTest任务配置

在YAML中指定使用这个自定义配置文件,覆盖默认的代码覆盖率收集规则:

- task: VSTest@2
  displayName: 'Run Tests'
  inputs:
    vsTestVersion: 'toolsInstaller'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    codeCoverageEnabled: true
    runSettingsFile: 'CodeCoverage.runsettings' # 关联自定义配置文件

关键调整说明

  • 替换YourProjectPrefix.*.dll为你实际的业务程序集命名规则,确保只包含需要统计的代码。
  • 按需添加/删除<Exclude>中的模块,覆盖你项目中所有的外部依赖。
  • 排除*.Tests.dll是因为测试代码本身不需要计入覆盖率统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:45:22