在文件夹上运行 gcov 工具

6
我使用gcc -fprofile-arcs -ftest-coverage [文件名]命令在一些.c文件上运行gcov工具。但是手动输入文件名非常繁琐。
相反,我需要帮助来在包含所有源文件的文件夹中运行gcov工具。
这可能吗?请给我提供解决方案。
提前感谢您的帮助。

以下信息将有助于他人为您提供更好的答案:您如何提供其他编译标志?是否有makefile?如果有,只需附加CFLAGS即可。 - RRON
4个回答

7

我遇到了同样的问题,我的项目有大约3000个文件。

编写一个shell脚本,使用find exec抓取所有的.c .gcno和.gcda文件到一个公共文件夹中,然后使用相同的命令运行gcov。

示例:

LOCATION=your_gcov_folder_name
find -name '*.c' -exec cp -t $LOCATION {} +
find -name '*.gcno' -exec cp -t $LOCATION {} +
find -name '*.gcda' -exec cp -t $LOCATION {} +
cd $LOCATION
find -name '*.c' -exec gcov -bf {} \;

在包含项目的代码文件夹上运行它。


1
首先,你在问题中指定的命令是用于编译c/c++文件并在执行时进行覆盖率插装以生成覆盖率报告的。
这个命令也可以按以下方式使用: gcc --coverage g++ --coverage
注意:链接时必须指定相同的标志。
现在关于问题,如果你的问题是关于编译多个文件,则有很多构建项目的方法,无论多么复杂。您可以使用自动化构建来实现。
如果您的问题是关于为多个文件生成覆盖率报告,则可以使用gcovr通过指定根目录(在src和obj上方的目录)与“-r”或“--root=ROOT”标志来以各种形式生成报告。请参考此 user guide。其他人给出的答案也可以使用,如果您确实只想使用gcov而没有其他工具。但是,在我的意见中,gcovr 可以满足所有可用 gcov 的目的(除了函数级详细信息,尽管您可以获得行级详细信息)。

1
[LCOV][1] 可以自动生成用户友好的报告,建议先查看一下。
如果您真的想使用 gcov 来显示覆盖率数据,可以尝试以下操作:
find . -name "*.cpp" -exec sh -c 'gcov {} -o "$(dirname {})"' \;
这将基于您的 gcno 和 gcda 文件创建 gcov 文件。
通常不建议移动 gcno/gcda 文件,这会导致找不到源代码的问题。

0

如果您没有得到覆盖率报告,请尝试删除

"coverageReporters": [ "text", "text-summary" ],

从文件中删除

jest.config.js


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接