代码覆盖率分析服务

用于分析基于MTP的.NET测试项目的代码覆盖率的MCP服务器,解析Cobertura XML覆盖率报告并通过MCP工具提供覆盖率数据,支持AI辅助开发工作流。

  • by glennawatson
  • C#
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 glennawatson/dotnet-mtp-coverage-mcp

使用说明

UnitTestMcp

用于分析基于MTP(Microsoft测试平台)的代码覆盖率的MCP(模型上下文协议)服务器。NET测试项目。解析Cobertura XML覆盖率报告,并通过用于AI辅助开发工作流程的MCP工具公开覆盖率数据。

特性

  • 解析Cobertura XML覆盖率报告(来自的标准输出 dotnet test 具有代码覆盖率)
  • 查询单个源文件的缺失行和分支
  • 全面覆盖类、方法、项目和整个解决方案
  • 在整个解决方案中生成全面的漏报报告
  • 自动发现和合并多个覆盖报告

先决条件

  • .NET 10 SDK 或以后
  • MTP兼容测试框架(例如。, TUnit(MSTest、xUnit v3)
  • 已配置代码覆盖率收集(通过 testconfig.json 或CLI标志)

安装

快速安装

单击以在首选环境中安装:

注:

  • 这些安装链接是为预期的NuGet包V1.*标识准备的 UnitTestMcp.Server 并且不需要 dotnet tool 先安装。
  • 如果您还不能使用这些链接,请使用下面的手动配置选项之一。
{
  "servers": {
    "MTP.UnitTest.MCP": {
      "type": "stdio",
      "command": "dnx",
      "args": [
        "UnitTestMcp.Server@1.*",
        "--yes"
      ]
    }
  }
}

要安装为一个.NET工具:

dotnet tool install --global UnitTestMcp.Server

或者直接从源代码运行:

cd src
dotnet run --project UnitTestMcp.Server

MCP工具

工具 说明
GetMissedCoverageForFile 获取特定源文件的缺失行和分支
GetClassCoverage 获取特定类的总体覆盖率摘要
GetMethodCoverage 获取特定方法的总体覆盖率摘要
GetProjectCoverage 获取特定项目/包的总体覆盖率摘要
GetSolutionCoverage 获取整个解决方案的总体覆盖率摘要
GetSolutionMissedCoverage 获取解决方案中所有遗漏行和分支的详细报告

用法

生成覆盖率报告

使用MTP,代码覆盖率通过以下方式配置 testconfig.json 和那个 Microsoft.Testing.Extensions.CodeCoverage 扩展。将扩展添加到您的测试项目中,并将其配置为Cobertura输出:

{
    "extensions": [
        {
            "extensionId": "Microsoft.Testing.Extensions.CodeCoverage",
            "settings": {
                "format": "cobertura"
            }
        }
    ]
}

然后正常运行测试:

dotnet test

配置为MCP服务器

以下示例适用于使用已发布全局工具的最终用户。您不需要从源代码构建项目来使用这些配置。

克劳德代码CLI

使用以下命令将已安装的工具添加为stdio MCP服务器:

claude mcp add dotnet-mtp-coverage-mcp -- dotnet-mtp-coverage-mcp

如果您的本地设置需要环境变量,Claude Code还支持:

claude mcp add -e SOME_SETTING=value dotnet-mtp-coverage-mcp -- dotnet-mtp-coverage-mcp

使用已安装的全局工具时,不需要其他子进程标志或参数。

JSON配置

对于基于JSON的MCP客户端(例如,Claude Desktop或其他使用 mcpServers 对象),使用以下stdio服务器配置之一。

安装。NET工具:

{
  "mcpServers": {
    "dotnet-mtp-coverage-mcp": {
      "command": "dotnet-mtp-coverage-mcp"
    }
  }
}

对于环境变量:

{
  "mcpServers": {
    "dotnet-mtp-coverage-mcp": {
      "command": "dotnet-mtp-coverage-mcp",
      "env": {
        "SOME_SETTING": "value"
      }
    }
  }
}

覆盖 XML 格式

此工具需要Cobertura XML格式,这是 Microsoft.Testing.Extensions.CodeCoverage 配置扩展时 "format": "cobertura" 在 testconfig.json.

建筑

cd src
dotnet build

运行测试

cd src
dotnet test

项目结构

src/
  UnitTestMcp.Core/         # Core library: models, parsers, services
    Models/                  # Coverage data models (records)
    Parsers/                 # Cobertura XML parser
    Services/                # Coverage query service
  UnitTestMcp.Server/        # MCP server executable
    Tools/                   # MCP tool definitions
  tests/
    UnitTestMcp.Tests/       # TUnit tests
      TestData/              # Sample Cobertura XML fixtures

归因

本项目中的Cobertura XML解析逻辑和覆盖率数据模型概念改编自 报告生成器 由Daniel Palme根据Apache许可证2.0授权。ReportGenerator是一个全面的代码覆盖率报告生成工具,支持多种输入和输出格式。

许可证

麻省理工学院许可证-版权所有(c)2026 Glenn Watson。看 许可证 了解详情。