如何将 gcov 与 QMake 结合使用来实现代码覆盖率

发布于 2024-10-03 10:28:15 字数 1085 浏览 4 评论 0原文

我想将 gcov 与使用 QTestLib 编写的单元测试一起使用。我通过将其添加到我的 .pro 文件中,成功地沿着我的目标文件生成了一些 .gcno 文件:

QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage -O0

但是,当我运行时:

gcov main.cpp.gcno

我生成了一堆带有无用内容的 .gcov 文件(与我在网络上的教程):

-:    0:Source:main.cpp
-:    0:Graph:main.gcno
-:    0:Data:-
-:    0:Runs:0
-:    0:Programs:0
-:    1:/*EOF*/
-:    2:/*EOF*/
-:    3:/*EOF*/
-:    4:/*EOF*/
-:    5:/*EOF*/
-:    6:/*EOF*/
-:    7:/*EOF*/
-:    8:/*EOF*/
-:    9:/*EOF*/
-:   10:/*EOF*/
-:   11:/*EOF*/
-:   12:/*EOF*/
-:   13:/*EOF*/
-:   14:/*EOF*/
#####:   15:/*EOF*/
-:   16:/*EOF*/
#####:   17:/*EOF*/
-:   18:/*EOF*/
-:   19:/*EOF*/
#####:   20:/*EOF*/
-:   21:/*EOF*/
-:   22:/*EOF*/
-:   23:/*EOF*/
-:   24:/*EOF*/
#####:   25:/*EOF*/
#####:   26:/*EOF*/
-:   27:/*EOF*/
-:   28:/*EOF*/
-:   29:/*EOF*/
#####:   30:/*EOF*/

我的源文件位于 ./MyProject/test/src 目录下,所有目标文件都位于 src 下的 .obj 目录中(即: .MyProject/test/ src/.obj)。所有二进制文件都在 ./MyProject/build 目录中创建。

我缺少什么?

谢谢!

I would like to use gcov with my unit test written using QTestLib. I have managed to generate some .gcno files along my object files by adding this to my .pro file :

QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage -O0

But, when I run :

gcov main.cpp.gcno

I got a bunch of .gcov files generated with non-useful content (nothing like what I see in the tutorials on the web) :

-:    0:Source:main.cpp
-:    0:Graph:main.gcno
-:    0:Data:-
-:    0:Runs:0
-:    0:Programs:0
-:    1:/*EOF*/
-:    2:/*EOF*/
-:    3:/*EOF*/
-:    4:/*EOF*/
-:    5:/*EOF*/
-:    6:/*EOF*/
-:    7:/*EOF*/
-:    8:/*EOF*/
-:    9:/*EOF*/
-:   10:/*EOF*/
-:   11:/*EOF*/
-:   12:/*EOF*/
-:   13:/*EOF*/
-:   14:/*EOF*/
#####:   15:/*EOF*/
-:   16:/*EOF*/
#####:   17:/*EOF*/
-:   18:/*EOF*/
-:   19:/*EOF*/
#####:   20:/*EOF*/
-:   21:/*EOF*/
-:   22:/*EOF*/
-:   23:/*EOF*/
-:   24:/*EOF*/
#####:   25:/*EOF*/
#####:   26:/*EOF*/
-:   27:/*EOF*/
-:   28:/*EOF*/
-:   29:/*EOF*/
#####:   30:/*EOF*/

My source files are under ./MyProject/test/src directory and all my object files are in a .obj directory underneath src (ie: .MyProject/test/src/.obj). All binaries are created in ./MyProject/build directory.

What am I missing?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

·深蓝 2024-10-10 10:28:15

你运行过你的QT程序吗?在此之前还没有覆盖数据。
另外,看看 lcov,您可以使用它来获取所有内容的基于 html 的漂亮报告

Have you run your QT program? Until then there's no coverage data.
Also, have a look at lcov, which you can use to get a nice html-based report of everything

作业与我同在 2024-10-10 10:28:15

值得注意的是,qmake 没有直接操作 CXX_FLAGS,而是(已经有一段时间了)一个 gcov CONFIG 选项,它似乎工作更可靠:

我在 .pro 文件中使用此条件实现了它:

isEmpty(RELEASE_BUILD) {
CONFIG += gcov
}

It is worth noting that instead of directly manipulating the CXX_FLAGS, qmake has (had for a while now) a gcov CONFIG option which seems to work more reliably:

I implemented it with this conditional in my .pro files:

isEmpty(RELEASE_BUILD) {
CONFIG += gcov
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文