以编程方式将覆盖文件转换为coveragexml

本文关键字:转换 coveragexml 文件 覆盖 编程 方式 | 更新日期: 2023-09-27 18:10:37

我正在使用Visual Studio查找代码覆盖率。我已经生成了。coverage文件,可以在Visual Studio中打开它。我想把它转换成。coveragexml文件。我使用的是CoverageInfo, CoverageDS类。这是我正在尝试的代码:

CoverageInfo info = CoverageInfo.CreateFromFile(coverageFilePath, binaryPath,symbolPath);
CoverageDS dataSet = info.BuildDataSet();
dataSet.WriteXml(outfile);

由于覆盖文件很大,所以调用info。BuildDataSet给出内存不足的异常。有没有别的办法可以得到保险?

我参考了MSDN博客http://blogs.msdn.com/b/phuene/archive/2009/12/01/programmatic-coverage-analysis-in-visual-studio-2010.aspx,它也提到了这个案例。本文介绍了利用ICoverageModule接口从CoverageInfo类中获取模块信息的方法。但是如何将这个模块信息转换为XML呢?该博客展示了一个如何解析和打印模块信息的示例。但我正在寻找将此转换为coveragexml文件。

以编程方式将覆盖文件转换为coveragexml

在调用CoverageInfo.BuildDataSet(...)时,我遇到了相同的System.OutOfMemoryException。为了解决这个问题,我将项目更改为构建64位应用程序,这使得进程可以使用更多的内存。您还需要引用64位版本的:

  • Microsoft.VisualStudio.Coverage.Analysis.dll
  • Microsoft.VisualStudio.Coverage.Interop.dll

您可以在安装了TFS的系统上找到这些。查看C:'Program Files'Microsoft Team Foundation Server XX.0'Application Tier'TFSJobAgent'Plugins

可能有点晚了…

但是我已经创建了一个dotnet工具,将.coverage文件转换为.coveragexml文件,以支持使用VSTest@2时SonarCloud代码覆盖。

详情请参阅此链接:https://github.com/StefH/CoverageConverter