5

.c使用gcc -fprofile-arcs -ftest-coverage [filenames]. command
但是为这个命令提供文件名是非常乏味的工作。
相反,我需要帮助,我可以在包含所有源文件的文件夹上运行 gcov 工具
这可能吗?请帮我解决问题。

提前致谢。

4

3 回答 3

5

我遇到了同样的问题,我的项目包含约 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 {} \;

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

于 2013-04-18T07:12:52.593 回答
1

[LCOV][1] 自动提供用户友好的报告,首先我建议看一下。

如果您真的想使用 gcov 显示覆盖率数据,您可以尝试

寻找 。-name "*.cpp" -exec sh -c 'gcov {} -o "$(dirname {})"' \;

这将根据您的 gcno 和 gcda 文件创建 gcov 文件。

而且通常移动 gcno/gcda 文件并不是一个完美的主意。这将导致查找源代码时出现问题。

于 2014-09-26T13:54:43.710 回答
1

首先,您在问题中指定的命令用于编译 c/c++ 文件并对其进行检测,以便在执行时稍后生成覆盖率。

该命令也可以如下使用: gcc --coverage g++ --coverage

注意:您也必须为链接指定相同的标志。

现在关于这个问题,如果您的问题是关于编译多个文件,那么无论多么复杂,都有很多方法可以构建项目。您可以为此使用自动构建。

如果您的问题是关于为多个文件生成覆盖率报告,那么:

您可以使用 gcovr 生成各种形式的报告,只需使用“-r 或 --root=ROOT”标志指定根目录(src 和 obj 上方的目录)。请参阅本用户指南

如果您真的只想使用 gcov 而别无其他,其他人给出的答案也可以。但在我看来,gcovr 满足了 gcov 可以实现的所有目的(除了功能级别的详细信息,您可以获得行级别的详细信息)。

于 2017-02-24T06:40:28.580 回答