html - 当源文件位于其他目录中时,gcovr 不会创建详细报告

标签 html relative-path gcov cpputest gcovr

当源文件位于我的根目录的相对位置时,我正在尝试从 gcovr 获取正确的 html 输出。

例如(我会提到 gcovr 工作的两个案例,以及它有问题的地方):

CASE:1 - gcovr 工作正常 在我使用 --html --html-details 从根目录运行 gcovr 之后,我的根目录结构如下

source/myfile.c
obj/myfile.o, myfile.gcda, myfile.gcno, myfile.c.gcov
gcovr_reports/report.html, report_myfile.html

所以一切正常,我有 html 总报告 (report.html) 以及详细报告 (report_myfile.html)。

案例:2 - gcovr 无法正常工作 在我使用 --html --html-details 从根目录运行 gcovr 之后,我的根目录结构如下)

../../../Common/Source/myfile.c 
obj/Common/Source/myfile.o,     myfile.gcda,myfile.gcno,^#^#^#Common#Source#gcovmyfile.gcov
gcovr_reports/report.html, report.C

现在如您所见,gcovr 在 gcovr_report/目录中生成了“report.C”文件

还创建了带有摘要的一般 html 报告 (report.html),但没有创建源文件“myfile.c”的详细报告。 当我查看 obj 目录时,它会创建以下文件(如下所示):

^#^#^#Project#Common#Source#myfile.c.gcov

当我看

^#^#^#Project#Common#Source#myfile.c.gcov, 

路径解析如下:

Source:../../../Project/Common/Source/myfile.c

但它应该是:

Source:../../../../../../../Project/Common/Source/myfile.c

gcovr 命令是:

C:\Python34\Scripts\gcovr -v -b -r C:\Project\UnitTests\myModule\module1 --    object-directory C:\Project\UTests\myModule\module1\test-obj\Common\Source --     html --html-details -o govr_report\report.html

知道我做错了什么吗?

最佳答案

Gcovr 过滤覆盖率数据以仅显示项目中的文件,由 -r 根或任何 --filter 决定。

Project: C:\Project\UnitTests\myModule\module1
File:    ..\..\..\Common\Source\myfile.c

该文件不在项目中,因此被排除。这通常是您想要的,因为您使用的任何库的覆盖范围往往是无关紧要的。

如果这是错误的,您可以接管过滤并定义您自己的--filter。您可以定义多个过滤器,并且任何一个都必须匹配。要完全禁用过滤器,请使用空过滤器 --filter ""

过滤器是与绝对源文件路径匹配的正则表达式。

不幸的是,Windows 的过滤器目前已损坏。不可能编写匹配多个目录的过滤器,除非您的工作目录是所有目标目录的父目录。例如,您可以转到 C:\ 并使用以下过滤器:

--filter Project\\UnitTests\\myModule\\module1\\
--filter Common\\Source\\

这将在 gcovr 的 future 版本中改变,因此请尽量避免使用包含反斜杠作为路径分隔符的过滤器。

更新:从 gcovr 版本 4 开始,所有过滤器都必须使用正斜杠作为路径分隔符,即使在 Windows 上也是如此。参见 Using Filters in the Gcovr User Guide了解详情。

关于html - 当源文件位于其他目录中时,gcovr 不会创建详细报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32145419/

相关文章:

c - 获取Gcov的执行行信息的顺序

eclipse-cdt - 静态库项目的 eclipse-cpp-luna-SR1 中没有源代码覆盖颜色突出显示

java - Spring boot创建excel错误(文件名、目录名或卷标语法不正确)]

php - php 如何从一个数据库的两个不同表中获取多个数据

Perl - 模块内文件的相对路径

asp.net - 加载配置文件时出错 : Failed to map the path '/'

php - 当使用 include() 包含相对路径时,PHP 检查哪些目录?

javascript - 有没有办法标记音频文件

javascript - 在黑暗环境中使用屏幕的方法

c++ - 对 `__gcov_flush' 的 undefined reference