2016-07-27 8 views
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% 
------------------------------------------------------------------------------ 
+0

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

+0

@ksl Je l'ai essayé, mais ça ne fait aucune différence. – jsp

+0

Avez-vous essayé * et * supprimer '// LCOV_EXCL_START' et' // LCOV_EXCL_STOP'? Serrant ici .. – ksl

Répondre

0

J'ai mis à niveau vers la version 3.4 de gcovr, et cela fonctionne maintenant.