1

C++ コードに LCOV_EXCL_START/STOP タグを追加しても、gcovr レポートに影響がないようです。

なぜこれが起こるのか誰かが知っていますか?

私は次のものを持っています:

$ tree
.
├── build
├── include
│   └── a.h
└── tests
    └── test_a.cpp

$ cat include/a.h 
void f (bool x)
{
    // LCOV_EXCL_START
    if (x)
        throw 1;
    // LCOV_EXCL_STOP
}

$ cat tests/test_a.cpp 
#include "a.h"

int main ()
{
    f (false);
    return 0;
}

ただし、5 行throw 1;目は除外タグで囲まれていますが、gcovr レポートに含まれています。

$ g++ -c -O0 -fprofile-arcs -ftest-coverage -fPIC --coverage -I include ./tests/test_a.cpp -o ./build/test_a.o
$ g++ ./build/test_a.o -o ./build/test_a -lgcov
$ ./build/test_a
$ gcovr -r .
------------------------------------------------------------------------------
                           GCC Code Coverage Report
Directory: .
------------------------------------------------------------------------------
File                                       Lines    Exec  Cover   Missing
------------------------------------------------------------------------------
include/a.h                                    4       3    75%   5
tests/test_a.cpp                               3       3   100%   
------------------------------------------------------------------------------
TOTAL                                          7       6    85%
------------------------------------------------------------------------------
4

1 に答える 1

2

gcovr バージョン 3.4 にアップグレードしたところ、動作するようになりました。

于 2016-09-23T18:24:14.433 に答える