0
Lorsque j'ajoute des balises LCOV_EXCL_START/STOP à mon code C++, cela ne semble pas avoir d'effet sur mon rapport gcovr.LCOV_EXCL_START/STOP n'a aucun effet lors de l'utilisation de gcovr
Est-ce que quelqu'un sait pourquoi cela se produit?
Je donne les résultats suivants:
$ tree
.
├── build
├── include
│ └── a.h
└── tests
└── test_a.cpp
et
$ cat include/a.h
void f (bool x)
{
// LCOV_EXCL_START
if (x)
throw 1;
// LCOV_EXCL_STOP
}
et
$ cat tests/test_a.cpp
#include "a.h"
int main()
{
f (false);
return 0;
}
Mais la ligne 5 throw 1;
est inclus dans le rapport de gcovr, même si elle est entourée en exclure tags:
$ 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%
------------------------------------------------------------------------------
Pour commencer, essayez d'ajouter '// GCOV_EXCL_LINE' après le lancement 1; - c'est-à-dire tous sur la même ligne. Cela fait-il une différence? – ksl
@ksl Je l'ai essayé, mais ça ne fait aucune différence. – jsp
Avez-vous essayé * et * supprimer '// LCOV_EXCL_START' et' // LCOV_EXCL_STOP'? Serrant ici .. – ksl