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

如何自动将所有migrations排除在代码覆盖率分析范围外

自动排除Migrations文件代码覆盖率的配置方案

以下是主流.NET代码覆盖率工具的通用配置方案,无需手动给每个Migration类添加[ExcludeFromCodeCoverage]特性:

Coverlet(跨平台.NET覆盖率工具)

命令行参数方式

执行测试时直接添加排除规则参数:

dotnet test /p:CollectCoverage=true /p:Exclude="[*]*.Migrations.*"

规则说明:[程序集匹配规则]命名空间匹配规则,上述规则会匹配所有程序集下所有Migrations命名空间下的所有类型。

配置文件方式

在项目根目录创建coverlet.runsettings配置文件,内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="XPlat code coverage">
        <Configuration>
          <!-- 可添加多条<Exclude>节点适配不同匹配规则 -->
          <Exclude>[*]*.Migrations.*</Exclude>
          <!-- 如果要按文件路径匹配可以用下面的规则 -->
          <!-- <ExcludeByFile>**/Migrations/*.cs</ExcludeByFile> -->
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

测试时指定配置文件即可:

dotnet test --settings coverlet.runsettings

Visual Studio 自带代码覆盖率工具

同样通过runsettings文件配置,在配置文件中添加如下节点:

<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0">
  <Configuration>
    <Functions>
      <Exclude>
        <!-- 按命名空间匹配排除所有Migrations相关类 -->
        <Function>^.*\.Migrations\..*$</Function>
      </Exclude>
    </Functions>
  </Configuration>
</DataCollector>

OpenCover 工具配置

执行测试时添加排除参数即可:

# 按命名空间排除
OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test" -excludebyattribute:"*.Migrations.*" -output:coverage.xml
# 按文件路径排除
OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test" -excludebyfile:"*Migrations/*.cs" -output:coverage.xml

你可以根据自己项目的命名规则、文件目录结构调整匹配规则,实现全局一次性生效。

内容的提问来源于stack exchange,提问作者Elder Barbosa Lima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:54:05