Microsoft.CodeCoverage v17.8 发布,新增 dotnet-coverage 工具及其他改进

Microsoft 开发者工具升级总结

Microsoft 近日发布了其开发者工具的升级版本 17.8.0,主要针对 Microsoft.CodeCoverage 工具进行了显著改进。此次更新引入了新工具 dotnet-coverage,并带来了多项增强功能,包括新的报告格式、自动合并工具、性能提升和改进的文档。

新工具 dotnet-coverage 的引入

dotnet-coverage 是此次更新中的一个重要新增工具,其主要功能包括:

  • 收集控制台和 Web 应用程序的代码覆盖率
  • 合并覆盖率报告
  • 对二进制文件进行插桩
  • 计算单个测试的代码覆盖率

该工具显著提升了 Microsoft.CodeCoverage 的代码覆盖率分析的完整性和效率。

平台兼容性的扩展

工具的 平台兼容性 通过引入 静态插桩 得到了扩展。Microsoft 的代码覆盖率工具最初依赖于 Windows 平台上的动态插桩,后来版本引入了静态代码覆盖率收集,预先对磁盘上的库进行插桩,以支持跨平台的 .NET 应用。动态插桩仍然是默认选项,但在非 Windows 系统上,静态插桩会被激活,以避免冗余的动态插桩。开发者可以通过配置标志来控制使用哪种插桩方法。

报告格式的全面改进

代码覆盖率报告格式进行了全面改进,以便更好地与辅助工具(如 ReportGenerator)集成。默认的 .coverage 格式保持不变,同时引入了多种新格式,包括:

  • Binary(默认)格式:适用于 Visual Studio Enterprise 的 .coverage 格式
  • Cobertura 格式:适用于 Visual Studio Enterprise 和文本编辑器的 .cobertura.xml 格式
  • XML 格式:适用于 Visual Studio Enterprise 和其他文本编辑器的 .xml 格式

解决方案的自动合并功能

此次更新引入了解决方案级别的自动合并功能。通过在解决方案级别执行命令 dotnet test --collect 'Code Coverage',可以自动合并所有相关测试项目的代码覆盖率数据。这一功能简化了 复杂解决方案 中的代码覆盖率管理。

性能提升

在 16.5 版本之前,代码覆盖率报告的收集过程显著影响了测试的 执行速度。此次更新修复了这一问题,开发者现在可以享受到高达 80% 的性能提升,使代码覆盖率分析更加高效且不干扰测试过程。详细 基准测试结果 可在官方公告中查看。

如何开始使用最新功能

开发者可以通过将最新的稳定包引入测试项目来开始使用 最新功能 并优化构建过程。以下是需要包含的包引用:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Microsoft.CodeCoverage" Version="17.8.0" />

对于不包含 C++ 代码的解决方案,开发者可以通过在 runsettings 配置中禁用原生代码覆盖率来提升速度和可靠性:

<EnableStaticNativeInstrumentation>False</EnableStaticNativeInstrumentation>
<EnableDynamicNativeInstrumentation>False</EnableDynamicNativeInstrumentation>

文档改进

最新的文档改进可以在更新的 GitHub 仓库 中找到。该仓库为用户提供了全面的信息资源和 示例,以改善文档体验。

此次更新显著提升了 Microsoft.CodeCoverage 工具的功能和性能,为开发者提供了更加高效和灵活的代码覆盖率分析解决方案。

阅读 44
0 条评论