4

私はUbuntu12、g ++、lcovを使用しています。後者は。とともにインストールされapt-get install lcovます。

コンパイルに成功し、を使用してhtmlレポートを生成していgenhtmlます。ラインカバレッジ情報は良さそうですが、関数カバレッジカウントの多くは奇妙に見えます。たとえば、コンストラクタと仮想デストラクタのみを含む1つのC ++クラスは、7つの関数を持つものとしてlcovによって報告されます。したがって、セッション中に両方に電話をかけた場合、私のカバレッジは2/7になります。

これは、呼び出されることのない1つの関数を持つクラスを示す出力例です。その関数が何であるかを理解することはできません:

出力例

誰かが壊れた関数名をデコードし、膨らんだ関数の数を説明し、問題を解決する方法を提案できますか?

前もって感謝します。

アップデート

OK、以下の元の質問に答えたので(コメントを参照)、これらの内部のctorとdtorが関数カバレッジ統計を破壊するのを防ぐ方法についての提案を募集しています。関数カウントを自分で作成した関数に制限するにはどうすればよいですか?

4

1 に答える 1

1

あなたは今までに新しいプロジェクトに参加していると思いますが、その時点ではC ++ 11を使用していなかった可能性がありますが、今使用している場合は、これが役立つ可能性があります。

class my_class
{
    ...
    my_class(my_class const &) = delete;
    ...
};

これは、必要のないすべての可能なデフォルトコンストラクターに対して何らかの形式の宣言が必要であることも意味します...デフォルトコンストラクターを使用している場合は、lcovが次のように指示しているため、テストを拡張する必要があります。あなたは実際にそれらをテストしていません!ある種のことをする必要があります:

my_class a;
my_class b(a);
my_class c;
c = b;
于 2014-05-30T07:16:48.883 に答える