首页 > 解决方案 > 向量中的 Gcov 分支::push_back 函数调用

问题描述

我正在运行 gcov,由于某种原因,它在函数调用 vector::push_back 内创建了一个分支。gcov 文件如下所示:

       22:  374:    ret.push_back(min_idx);
call    0 returned 100%
branch  1 taken 100% (fallthrough)
branch  2 taken 0% (throw)

这是对“更大”框架进行单元测试的结果。当我做一个这样的简单例子时:

#include <vector>
int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};
    vec.push_back(6);
    return 0;
}

这是 gcov 输出:

        -:    0:Source:/home/rjohan69/work/test_proj/test_proj.cpp
        -:    0:Graph:test_proj.gcno
        -:    0:Data:test_proj.gcda
        -:    0:Runs:1
        -:    0:Programs:1
        -:    1:#include <vector>
        1:    2:int main() {
        2:    3:    std::vector<int> vec = {1, 2, 3, 4, 5};
        1:    4:    vec.push_back(6);
        3:    5:}

更大的框架被编译成一个库。这可能是个问题吗?这是否使它认为向量库是更大库的一部分?或者为什么一个在 push_back 函数调用中创建一个分支而不是另一个?

标签: c++code-coveragestdvectorgoogletestgcov

解决方案


推荐阅读