генерирование данных о покрытии филиала для lcov

я пытаюсь использовать lcov для показателей покрытия кода, но не могу заставить работать ветки.

Вот как я использую это:

g++ -ggdb3 --coverage src/read.c tests/test.cpp -o bin/test
lcov --zerocounters --directory $PWD
lcov --capture --initial --directory $PWD --output-file coverage_output
./bin/test
lcov --no-checksum --directory $PWD --capture --output-file coverage_output
genhtml --branch-coverage --highlight --legend --output-directory out coverage_output

но я получаю:

Общий уровень покрытия:
строки ……: 100.0% (60 из 60 строк)
функции ..: 100,0% (26 из 26 функций)
филиалы …: данные не найдены

есть идеи?

15

Решение

В последней версии LCOV отключено покрытие филиала по умолчанию.

Вам необходимо включить его:

  • редактирование вашего .lcovrc файл (скопированный из / etc / lcovrc) для изменения lcov_branch_coverage установка на 1
  • добавление --rc lcov_branch_coverage=1 в ваши командные строки lcov
24

Другие решения

.Файлы lcovrc — это файл настроек, которые необходимо указать в пути к файлу lcov. Честно говоря, я не очень много исследовал использование этого файла.

Вам нужно добавить дополнительный параметр как «—rc lcov_branch_coverage = 1» для lcov для всех звонков. В вашем случае добавьте этот параметр ко всем вашим трем вызовам. Если вы пропустите один, это приведет к падению покрытия филиала.

Также — genh-охват необходим для genhtml.

4

Извините, не столько «идея», сколько подтверждение того, что вы все делаете правильно. Ваши точные команды работали над этим простым кодом:

#include <iostream>
using namespace std;

bool foo(int i)
{
if (i != 0) {
return 12 / i;
} else {
return 0;
}
}

int main(int argc, char** argv)
{
cout << foo(argc) << endl;
return 0;
}

Таблица покрытия lcov содержит статистику по строкам, функциям и ветвям. Может быть, еще раз проверить, что вы действительно смотрите на правильный вывод HTML?

1

основываясь на этом сообщение, разница может зависеть от версии gcc, которую вы используете. Можете ли вы поделиться, какие версии вы используете.
Я не получаю покрытие филиала на:

 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
0
По вопросам рекламы [email protected]