C++ 聚合初始化分支覆盖率
我正在建立一个基本上是lcov的替代方案。我正在尝试使它生成的默认分支覆盖范围具有尽可能少的噪波。分支噪声的一个来源似乎是初始值设定项列表: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 = {"
#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。例如,较大的初始值设定项列表将导致非异常分支
所以我的问题是。。。这些树枝是什么?你能联系到他们吗?这些噪音是否可以安全消除