я пытаюсь использовать 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 функций)
филиалы …: данные не найдены
есть идеи?
В последней версии LCOV отключено покрытие филиала по умолчанию.
Вам необходимо включить его:
.lcovrc
файл (скопированный из / etc / lcovrc) для изменения lcov_branch_coverage
установка на 1--rc lcov_branch_coverage=1
в ваши командные строки lcov.Файлы lcovrc — это файл настроек, которые необходимо указать в пути к файлу lcov. Честно говоря, я не очень много исследовал использование этого файла.
Вам нужно добавить дополнительный параметр как «—rc lcov_branch_coverage = 1» для lcov для всех звонков. В вашем случае добавьте этот параметр ко всем вашим трем вызовам. Если вы пропустите один, это приведет к падению покрытия филиала.
Также — genh-охват необходим для genhtml.
Извините, не столько «идея», сколько подтверждение того, что вы все делаете правильно. Ваши точные команды работали над этим простым кодом:
#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?
основываясь на этом сообщение, разница может зависеть от версии gcc, которую вы используете. Можете ли вы поделиться, какие версии вы используете.
Я не получаю покрытие филиала на:
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)