1

我正在解析 total.info 文件,该文件是在我的源代码上运行一些 lcov 命令的结果,以便构建一个在需要时提供覆盖信息的服务。lcov 还提供了一个不错的 html ui 来浏览代码覆盖率。问题是我在服务中的功能覆盖率方面得到的值与 lcov 的 html ui 不同。

我正在计算端到端测试的代码覆盖率,而不是单元测试。

Gcc 版本是 4.8.5 Red Hat

Lcov 版本是 1.14

启动的 lcov 命令按以下顺序排列:

1-time lcov -c -i -d . --rc geninfo_adjust_src_path="{path} => " -o base.info

2-time lcov -c -d . --rc geninfo_adjust_src_path="{path} => " -o test.info

3-time lcov -rc geninfo_adjust_src_path="{path} => " -a base.info -a test.info -o total.info

为了简单起见,这里有来自 total.info 文件的 2 个部分。

在本节中,解析工作正常有 5 个函数

TN:
SF:{path}/FileOne.hpp
FN:22,_methodName
FN:29,_methodName
FN:31,_methodName
FN:40,_methodName
FN:48,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:6,_methodName
FNDA:6,_methodName
FNDA:0,_methodName
FNF:5
FNH:2
DA:22,6
DA:29,12
DA:31,6
DA:33,24
DA:34,0
DA:35,6
DA:36,6
DA:40,0
DA:42,0
DA:43,0
DA:45,0
DA:48,0
DA:50,0
DA:51,0
DA:54,0
LF:15
LH:6
end_of_record

解析问题发生在下面的部分,因为某些函数似乎有重复的 FN 语句(它们都从同一行开始,所以我假设这指的是同一个函数)

TN:
SF:{path}/FileTwo.hpp
FN:32,_methodName
FN:39,_methodName
FN:48,_methodName
FN:58,_methodName
FN:64,_methodName
FN:100,_methodName
FN:116,_methodName
FN:116,_methodName
FN:128,_methodName
FN:128,_methodName
FN:128,_methodName
FN:128,_methodName
FN:132,_methodName
FN:138,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNDA:0,_methodName
FNF:14
FNH:0
DA:32,0
DA:33,0
DA:39,0
DA:40,0
DA:41,0
DA:44,0
DA:48,0
DA:49,0
DA:51,0
DA:52,0
DA:55,0
DA:56,0
DA:58,0
DA:59,0
DA:60,0
DA:61,0
DA:62,0
DA:64,0
DA:65,0
DA:66,0
DA:68,0
DA:91,0
DA:92,0
DA:96,0
DA:97,0
DA:100,0
DA:101,0
DA:102,0
DA:104,0
DA:105,0
DA:106,0
DA:112,0
DA:116,0
DA:117,0
DA:118,0
DA:121,0
DA:122,0
DA:125,0
DA:128,0
DA:129,0
DA:130,0
DA:132,0
DA:133,0
DA:134,0
DA:135,0
DA:138,0
DA:139,0
DA:140,0
DA:141,0
DA:142,0
DA:145,0
LF:51
LH:0
end_of_record

在第 116 和 128 行,函数如下:

     115             :    template <typename UnaryOp>
     116           0 :    void remove_if(UnaryOp op) {
     117           0 :       for (typename Items::iterator it = m_items.begin(), end = m_items.end(); it != end;) {
     118           0 :          if (!op(*it))
     119             :             ++it;
     120             :          else {
     121           0 :             shutItem(*it);
     122           0 :             m_items.erase(it++);
     123             :          }
     124             :       }
     125           0 :    }

     127             :    template <typename Op>
     128           0 :    void for_each(Op &op) {
     129           0 :       std::for_each(m_items.begin(), m_items.end(), op);
     130           0 :    }

我的问题是为什么某些函数会出现多次(谁的“FN:{}”从同一行开始)?

4

0 回答 0