运行gcovr命令后无法生成代码覆盖率,并且无法从子目录中删除.gcda

时间:2019-01-10 08:39:36

标签: python c++ code-coverage gcovr

我在代码覆盖率方面面临以下问题:

  1. 未为.cpp文件生成详细的html文件, 有.gcno和.gcda对应项。
  2. 运行gcovr命令后,gcda文件自动被删除。

我遵循以下步骤:

    我使用-fprofile-arcs编译代码时生成了
  1. .gcno -ftest-coverage选项并与-lgcov选项链接。
  2. 我运行了可执行文件以生成.gcda文件。
  3. 我将.gcno和.gcda文件复制到了存放我的位置 源代码。
  4. 我从顶层目录中运行了gcovr命令(如下所述) 其中的子目录进一步包含.cpp文件。
  5. 生成coverage.html,其中包含有关其他信息 html报告,但是当我打开它们时它们是空白的。
  6. 我尝试了gcovr在各种位置运行,例如 根目录或子目录。

.gcno和.gcda文件所在的目录为:: D:\ RTC_Latest_GTEST \ RTC_21_11_18 \ software \ output_gtest \ Application \ contents \ Application_name

执行gcovr命令的目录为:: D:\ RTC_Latest_GTEST \ RTC_21_11_18 \ software \ Application \ contents \ Application_name

当前,我正在从Application_name文件夹中运行gcovr命令。

我运行以下命令为我的代码生成深入的html报告:

python.exe c:\\Python27\\gcovr --exclude-unreachable-branches -b -r . -d --html --html-details -o coverage.html

预期结果:

  1. 实际结果将在html中包含详细的覆盖率报告 具有相应的.gcda和.gcno的每个.cpp文件的格式 对方。
  2. .gcda和.gcno文件将出现在子目录中 运行gcovr命令后。

Generated HTML coverage report

1 个答案:

答案 0 :(得分:0)

->。gcda文件由于-d选项而被删除,如@amon在评论中所述。

->以下是我用于生成覆盖率报告的命令,我正在从Application_name目录运行此命令:

gcovr -r .. --html --html-details -o coverage.html --object-directory = .. / .. / .. / .. // output_gtest // Application // contents // Application_name

->我在上述命令中做了以下修改:

1)-object-directory,在这里添加了存在.gcda和.gcno文件的路径。

2)我使用的是gcovr的过时版本,因此无法生成覆盖率报告,因此我更新了gcovr的版本,以下链接中提到了相同的步骤::

https://gcovr.com/installation.html