通过 Coco 设置代码覆盖率

使用 Coco 可以测量和分析测试的代码覆盖率。下文将介绍如何设置项目的代码覆盖率。有关在Qt Creator 中查看结果的更多信息,请参阅从 Coco 查看代码覆盖率报告

要使用该插件,必须下载并安装 6.0 或更高版本的 Coco。

注意: 启用 Coco 插件才能使用。

设置 Coco 安装目录

进入首选项>Coco 设置 Coco 安装目录。通常不需要更改默认值。

为 Coco 创建构建配置

为使用 qmake 或 CMake 构建的Qt Creator 项目创建构建配置:

  1. 转到Projects >Build & Run >Build >Build Settings
  2. 选择现有的构建配置(如Debug),然后选择Clone ,用新名称(如DebugCoverage)克隆它。
  3. 配置克隆,以便与 Coco 一起使用。

请勿使用同一构建配置在覆盖和正常构建之间来回切换。

Build Settings > > 显示构建配置的代码覆盖是打开还是关闭。选择 或 可打开或关闭代码覆盖。Build Steps Coco code coverage Enable Coverage Disable Coverage

从构建步骤设置代码覆盖率

为项目设置代码覆盖

要指定项目的代码覆盖设置,请访问Projects >Project Settings >Coco Code Coverage

Coco 代码覆盖率设置

设置目的
Enable code coverage for build configuration <name>打开或关闭构建配置的代码覆盖。
CoverageScanner Options代码覆盖选项(可选)。
Exclude File将文件排除在检测范围之外。
Exclude Directory将目录排除在检测之外。
Override输入命令,将其添加到设置文件末尾。当常规配置标志不够用时,请使用此选项。
Changed Build Settings列出已更改的项目构建设置。
Revert从当前设置文件重新加载覆盖设置。
SaveSave & Re-configure将设置写入设置文件,并在必要时重新配置项目。

如果开启了代码覆盖,插件会生成一个设置文件,由构建工具首先读取。它会更改编译过程,使用 Coco 编译器封装程序,而不是原始编译器。设置文件始终位于项目源代码的根目录下。它还包含覆盖标志和可能的覆盖。将其存入版本控制以保留设置。

qmake 项目

对于 qmake 项目,设置文件是cocoplugin.prf 功能文件

对于命令行编译,请使用附加选项运行qmake

CONFIG+=cocoplugin COCOPATH=<Coco directory>

此外,将环境变量QMAKEFEATURES 设为cocoplugin.prf 所在的目录。

CMake 项目

对于 CMake 项目,设置文件是cocoplugin.cmake CMake 缓存预加载脚本。此外,编译器文件 cocoplugin-gcc.cmakecocoplugin-clang.cmakecocoplugin-visualstudio.cmake 也在同一目录下创建。命令行编译需要这些文件。

要从命令行编译项目(使用 GCC 编译时),请输入:

cmake <other options> -C <project dir>/cocoplugin-gcc.cmake

文件cocoplugin-gcc.cmake 包含cocoplugin.cmake

如果使用 GCC、Clang 或 MSVC 以外的其他编译器,请修改该编译器的编译器文件。

另请参阅 "为构建配置项目"、"启用和禁用插件"、"从 Coco 查看代码覆盖率报告"、"字体颜色"以及 "分析代码"。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.