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

2 つのことをカウントしているように見え (19 行目に角括弧で囲まれた 2 つの行があります)、カウントはこれら 2 つのエントリの合計を示しているに違いありません。コンパイラが行を 2 つに分割したのはなぜですか? よくわかりません。

私の側では、実際にブランチカウント機能を削除して、それに対処する必要がないようにしました。私のような大規模なプロジェクトでは役に立たなかったようです。おそらくそうすることで、この副作用が取り除かれます。

于 2013-04-28T23:47:38.090 に答える