代码覆盖率
导入并分析覆盖率数据
本文档说明如何在交互式界面中使用 CppDepend 的构建比较功能。该文档 代码差异报告 说明如何在报告场景中使用 CppDepend 的构建比较功能。
CppDepend 支持哪些覆盖率技术?
CppDepend 可从以下来源导入覆盖率数据:
- Bullseye 覆盖率文件
- Cobertura
- Visual Studio Team System
- CTC++
如何从 Microsoft Visual Studio 获取 XML 覆盖率文件?
Visual Studio 有 2 种覆盖率文件格式。
- 一个 二进制格式 其中文件扩展名为 .coverage。这是从 Visual Studio 测试获得的格式。您也可以使用 VSPerfMon.exe 工具获取 .coverage 文件。为此,您需要使用带 /Coverage 选项的 VSInstr.exe 工具对每个要覆盖的项目进行插桩。
- 一个 XML 格式 (带文件扩展名 .coveragexml 自 VS 2010 起,以及 .xml (适用于旧版本)
CppDepend 仅支持 XML 格式。您可以使用此选项从 Visual Studio 的二进制覆盖率文件手动导出 XML 覆盖率文件:
见下方代码片段,仅用 3 行代码即可编程方式将二进制覆盖率文件转换为 XML 覆盖率文件。
- 为此,您需要从项目中引用程序集 Microsoft.VisualStudio.Coverage.Analysis.dll:
- 此 DLL 的 x86 版本位于 C:\Program Files (x86)\Microsoft Visual Studio XX.0\Common7\IDE\PrivateAssemblies
- 此 DLL 的 x64 版本位于安装了 TFS 的 x64 服务器上的 C:\Program Files\Microsoft Team Foundation Server XX.0\Application Tier\TFSJobAgent\Plugins
- 两者 System.Data 和 System.Data.DataSetExtensions 也需要被引用。
- 如果您希望代码独立于任何 VS 或 TFS 安装,还需要部署 Microsoft.VisualStudio.Coverage.Interop.dll 被使用 Microsoft.VisualStudio.Coverage.Analysis.dll.
using Microsoft.VisualStudio.Coverage.Analysis;
...
var pathInBinary = @"C:\Dir\File.coverage";
var pathOutXml = @"C:\Dir\File.coveragexml";
var coverageInfo = CoverageInfo.CreateFromFile(pathInBinary);
var data = coverageInfo.BuildDataSet();
data.WriteXml(pathOutXml);
如何从 CTC++ 获取 XML 覆盖率文件?
您可以使用 Ctc2cob 将 Testwell CTC++ 报告转换为 Cobertura 风格 XML 报告的工具。
如何提供要解析的覆盖率文件列表?
在 VisualCppDepend 菜单中: 项目属性 > 分析 > 代码覆盖率 > 设置
如何将覆盖率数据导入分析结果?
在 VisualCppDepend 菜单中: 覆盖率 > 导入代码覆盖率数据
或
在 VisualStudio 菜单中: CppDepend > 覆盖率 > 导入代码覆盖率数据
