我.c
使用gcc -fprofile-arcs -ftest-coverage [filenames]
. command
但是为这个命令提供文件名是非常乏味的工作。
相反,我需要帮助,我可以在包含所有源文件的文件夹上运行 gcov 工具。
这可能吗?请帮我解决问题。
提前致谢。
我.c
使用gcc -fprofile-arcs -ftest-coverage [filenames]
. command
但是为这个命令提供文件名是非常乏味的工作。
相反,我需要帮助,我可以在包含所有源文件的文件夹上运行 gcov 工具。
这可能吗?请帮我解决问题。
提前致谢。
我遇到了同样的问题,我的项目包含约 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 {} \;
在包含您的项目的代码文件夹上运行它。
[LCOV][1] 自动提供用户友好的报告,首先我建议看一下。
如果您真的想使用 gcov 显示覆盖率数据,您可以尝试
寻找 。-name "*.cpp" -exec sh -c 'gcov {} -o "$(dirname {})"' \;
这将根据您的 gcno 和 gcda 文件创建 gcov 文件。
而且通常移动 gcno/gcda 文件并不是一个完美的主意。这将导致查找源代码时出现问题。
首先,您在问题中指定的命令用于编译 c/c++ 文件并对其进行检测,以便在执行时稍后生成覆盖率。
该命令也可以如下使用: gcc --coverage g++ --coverage
注意:您也必须为链接指定相同的标志。
现在关于这个问题,如果您的问题是关于编译多个文件,那么无论多么复杂,都有很多方法可以构建项目。您可以为此使用自动构建。
如果您的问题是关于为多个文件生成覆盖率报告,那么:
您可以使用 gcovr 生成各种形式的报告,只需使用“-r 或 --root=ROOT”标志指定根目录(src 和 obj 上方的目录)。请参阅本用户指南。
如果您真的只想使用 gcov 而别无其他,其他人给出的答案也可以。但在我看来,gcovr 满足了 gcov 可以实现的所有目的(除了功能级别的详细信息,您可以获得行级别的详细信息)。