C++ 聚合初始化分支覆盖率

C++ 聚合初始化分支覆盖率,c++,c++11,gcc,code-coverage,gcov,C++,C++11,Gcc,Code Coverage,Gcov,我正在建立一个基本上是lcov的替代方案。我正在尝试使它生成的默认分支覆盖范围具有尽可能少的噪波。分支噪声的一个来源似乎是初始值设定项列表: #include <vector> #include <string> using namespace std; struct A { vector<string> reference_tokens; }; int main() { A a; vector<string> rt = {"

我正在建立一个基本上是lcov的替代方案。我正在尝试使它生成的默认分支覆盖范围具有尽可能少的噪波。分支噪声的一个来源似乎是初始值设定项列表:

#include <vector>
#include <string>

using namespace std;

struct A {
   vector<string> reference_tokens;
};

int main() {
  A a;

  vector<string> rt = {"a", "b", "c"};

  a.reference_tokens = {rt[0]};
  return 0;
}
#包括
#包括
使用名称空间std;
结构A{
矢量参考符号;
};
int main(){
A A;
向量rt={a”,“b”,“c”};
a、 引用_标记={rt[0]};
返回0;
}
当我生成此代码段的覆盖率时,我得到:

 9                 :            : struct A {
10                 :            :    vector<string> reference_tokens;
11                 :            : };
12                 :            : 
13                 :          1 : int main() {
14                 :          2 :   A a;
15                 :            : 
16 [ +  - ][ +  - ]:          6 :   vector<string> rt = {"a", "b", "c"};
   [ +  - ][ +  - ]
17                 :            : 
18 [ +  - ][ +  - ]:          2 :   a.reference_tokens = {rt[0]};
   [ +  + ][ -  - ]
19                 :          1 :   return 0;
20                 :            : }
9::结构A{
10::向量参考_令牌;
11                 :            : };
12                 :            : 
13:1:int main(){
14:2:A;
15                 :            : 
16[+-][+-]:6:向量rt={“a”,“b”,“c”};
[ +  - ][ +  - ]
17                 :            : 
18[+-][+-]:2:a.reference_tokens={rt[0]};
[ +  + ][ -  - ]
19:1:返回0;
20                 :            : }
现在,我认识到GCC插入了用于处理异常的分支。但是,如果我过滤掉异常分支,仍然会留下:

 9                 :            : struct A {
10                 :            :    vector<string> reference_tokens;
11                 :            : };
12                 :            : 
13                 :          1 : int main() {
14                 :          2 :   A a;
15                 :            : 
16                 :          6 :   vector<string> rt = {"a", "b", "c"};
17                 :            : 
18 [ +  + ][ -  - ]:          2 :   a.reference_tokens = {rt[0]};
19                 :          1 :   return 0;
20                 :            : }
9::结构A{
10::向量参考_令牌;
11                 :            : };
12                 :            : 
13:1:int main(){
14:2:A;
15                 :            : 
16:6:向量rt={“a”,“b”,“c”};
17                 :            : 
18[+][-]:2:a.reference_标记={rt[0]};
19:1:返回0;
20                 :            : }
我不确定这4个分支的作用是什么。根据gcov,它们不是例外分支,而且似乎总是1:1。例如,较大的初始值设定项列表将导致非异常分支

所以我的问题是。。。这些树枝是什么?你能联系到他们吗?这些噪音是否可以安全消除