【问题标题】:GCovr generate a 0% coverage report, if cpp,gcno and gcda files are not present at same folder如果 cpp、gcno 和 gcda 文件不在同一文件夹中,GCovr 会生成 0% 覆盖率报告
【发布时间】:2015-08-27 12:27:57
【问题描述】:

我在同一个文件夹中有两个文件夹,如下所示:-
1.src(它包含我的 cpp 文件)
2.linux(我在其中运行 g++ 并执行 o 文件)
现在我正在运行如下命令

cd linux
g++ --coverage ../src/example1.cpp -o example1
./example1
cd ..
/opt/gcovr-3.2//scripts/gcovr -v -r .

我得到了输出,覆​​盖率为 0%

扫描目录。对于 gcda/gcno 文件...
找到 2 个文件(并将处理 1 个)
运行 gcov:'gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/ '/opt/gcovr-3.2/doc/examples/example1/linux'中的 doc/examples/example1/linux'
解析文件 /opt/gcovr-3.2/doc/examples/src/example1.cpp 的覆盖率数据
过滤文件 /opt/gcovr-3.2/doc/examples/src/example1.cpp 的覆盖率数据
收集了 0 个文件的覆盖数据

为了进一步调试,我转到“linux”文件夹,在命令下面运行

gcov /opt/gcovr-3.2/doc/examples/example1/linux/example1.gcno --branch-counts --branch-probabilities --preserve-paths --object-directory /opt/gcovr-3.2/doc/examples/example1/linux

我得到了输出,覆​​盖范围有效

/opt/gcovr-3.2/doc/examples/example1/linux
文件“../src/example1.cpp”
执行的行数:7 的 85.71%
已执行的分支:100.00% of 2
至少服用一次:2 的 50.00%
执行的调用:100.00% 1
../src/example1.cpp:creating '..#src#example1.cpp.gcov'

现在我想知道我做错了什么?我的项目很复杂,所以我不想将所有 cpp 文件从各自的“src”文件夹复制到各自的“linux”文件夹。我试过--object-directory,结果也一样。

【问题讨论】:

    标签: gcovr


    【解决方案1】:

    gcovr 使用 .gcov 文件进行分析。 我也遇到了类似的问题,并通过手动生成 .gcov 文件分两步克服了它

    1. 在包含 gcno 文件的文件夹中运行 gcov -b -l -p -c *.gcno 这将生成 gcov 文件,其中包含 gcno 和 gcda 文件中的所有详细信息。
    2. 转到项目根文件夹并运行 gcovr -g -k -r . --html --html-details -o tp.html 或任何带有 -g 选项的 gcovr 命令,-g 选项告诉 gcovr 处理 gcov 输出文件

    希望这个解决方案有帮助..

    【讨论】:

    • 这对我很有用!!! -k 选项对于在使用 gcovr 解析后保留 .gcov 文件至关重要。
    【解决方案2】:

    几个月以来我一直在使用 gcovr 和 gcov。

    与我所做的唯一不同的是,您没有在“-r”标志中正确指定路径。

    您应该始终指定完整路径。

    即使不规范也可以,但路径应该是完整的。

    并始终在根目录名称后分别为 linux 和 windows 指定一个额外的斜杠“/”或“\”。 例如

    -r "/path/to/root/directory/"
    

    似乎这个额外的斜线很重要,否则会出现问题。 不知道确切的问题,但我认为它不会在没有结束斜杠的情况下递归搜索。

    【讨论】:

      【解决方案3】:

      安装 Homebrew gcc/gcovr 的 Om MacOS/Darwin,原来 gcovr 使用的 gcov/usr/bin/gcov,这是不兼容的 Apple/clang 版本。

      我不明白为什么没有/usr/local/bin/gcov,但将其创建为gcov-9 的链接为我解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        • 1970-01-01
        • 2020-12-01
        • 2011-06-06
        • 2013-09-29
        相关资源
        最近更新 更多