0
 10 [ +  - ][ +  - ] :          2 : Conf::~Conf() {}
  11                 :            : 
  12                 :            : 
  13                 :          2 : Conf::Conf( std::string filename, std::string delimiter,
  14                 :            : std::string comment )
  15 [ +  - ][ +  - ]:          2 :: m_Delimiter(delimiter), m_Comment(comment)
  16                 :            : {
  17                 :            :         // Construct a Conf, getting keys and values from given file
  18                 :            : 
  19 [ +  - ][ +  - ]:          4 :         std::ifstream in( filename.c_str() );
             [ +  - ]
  20                 :            : 
  21 [ +  - ][ -  + ]:          2 :         if( !in ) throw File_not_found( filename ); 
             [ #  # ]
  22                 :            : 
  23         [ +  - ]:          2 :         in >> (*this);
  24                 :          2 : }

代码覆盖率报告如上。对于 Conf 类,构造函数的命中数是 2,但是这一行的命中数std::ifstream in( filename.c_str() );是 4,我认为它也应该是 2。您如何看待此代码覆盖率报告中的不同命中数,这是一个错误lcov还是有意义的?

4

1 回答 1

0

看起来他们正在计算两件事(第 19 行有两行带方括号的行),并且计数必须向您显示这两个条目的总数。为什么编译器将行分成两部分?我不太确定。

最后,我实际上删除了分支计数功能以避免不得不处理它。对于像我这样的大型项目,它似乎没有用。也许这样做会消除这种副作用。

于 2013-04-28T23:47:38.090 回答