LINUX.ORG.RU

c++ code coverage

 ,


0

2

Можно ли как то суммировать вызов нескольких вызовов генерирующих выхлоп для gcov?

Грубо говоря - есть юнит тесты, есть функциональные тесты. Физически, это два разных бинаря, грузящих одну либу. Юнит тестами без гемороя не покрывается то, что покрывается функциональными и наоборот, хочется автоматизировать процесс просмотра общей картины.

★★★★★

Последнее исправление: pon4ik (всего исправлений: 1)

TestCocoon это умеет, но у него свой движок покрытия

annulen ★★★★★
()

Так они и так суммируются.

i-rinat ★★★★★
()
// lib.c
int add5(int a)
{
	return a + 5;
}

int add3(int a)
{
	return a + 3;
}
// bin1.c
#include <stdio.h>

int add5(int);

int main(void) {
	printf("binary1, %d\n", add5(20));
	return 0;
}
// bin2.c
#include <stdio.h>

int add3(int);

int main(void) {
	printf("binary2, %d\n", add3(20));
	return 0;
}
$ export LD_LIBRARY_PATH=.
$ gcc -fPIC -coverage -shared lib.c -o liblib.so
$ gcc -coverage -llib -L. bin1.c -o bin1
$ gcc -coverage -llib -L. bin2.c -o bin2
$ ./bin1
binary1, 25
$ gcov *.gcda
File 'bin1.c'
Lines executed:100.00% of 3
Creating 'bin1.c.gcov'

File 'lib.c'
Lines executed:50.00% of 4
Creating 'lib.c.gcov'

Lines executed:71.43% of 7
$ cat lib.c.gcov 
        -:    0:Source:lib.c
        -:    0:Programs:2
        1:    1:int add5(int a)
        -:    2:{
        1:    3:	return a + 5;
        -:    4:}
        -:    5:
    #####:    6:int add3(int a)
        -:    7:{
    #####:    8:	return a + 3;
        -:    9:}
$ ./bin2
binary2, 23
$ gcov *.gcda
File 'bin1.c'
Lines executed:100.00% of 3
Creating 'bin1.c.gcov'

File 'bin2.c'
Lines executed:100.00% of 3
Creating 'bin2.c.gcov'

File 'lib.c'
Lines executed:100.00% of 4
Creating 'lib.c.gcov'

Lines executed:100.00% of 10
$ cat lib.c.gcov 
        -:    0:Source:lib.c
        -:    0:Programs:3
        1:    1:int add5(int a)
        -:    2:{
        1:    3:	return a + 5;
        -:    4:}
        -:    5:
        1:    6:int add3(int a)
        -:    7:{
        1:    8:	return a + 3;
        -:    9:}

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Вот блин, полез искать рокетсайнс решение, не додумавшись попробовать. facepalm.jpg.

Спасибо.

pon4ik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.