以编程方式将覆盖文件转换为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文件。
在调用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