заставить lcov захватывать только часть кодов (на основе последних N коммитов)

Я могу использовать gcov / lcov / genhtml для создания отчета о тестовом покрытии для all the files, теперь я хочу получить отчет только для последних 10 коммитов. как я могу попасть туда?

Я пробовал:

1. compile and run the program. 
2. lcov --directory . --capture --output-file redis.info
3. git diff HEAD~10..HEAD >  my.patch
4. lcov --diff ./redis.info my.patch -o redis-patch.info  

Я хочу охватить только my.patch, но потерпел неудачу (все еще просматривает охват всех данных)


person zhihuifan    schedule 05.11.2019    source источник
comment
обычно lcov --diff не предназначен для этой цели. Я дам обновление, как только у меня будет решение.   -  person zhihuifan    schedule 06.11.2019


Ответы (1)


К сожалению, lcov --diff предназначен для исправления источников в случае, если покрытие было создано, но источники старые. Несколько дней назад fastcov получил возможность в этом PR, чтобы отфильтровать покрытие с помощью файла diff. Его пока нет в выпуске, но можно использовать и однофайловый инструмент. Инструмент разработан для GCC 9+, но вы можете смело запускать его с любой версией GCC, если хотите фильтровать только готовый файл .info lcov. Использование будет следующим:

1. compile and run the program. 
2. lcov --directory . --capture --output-file redis.info
3. git diff HEAD~10..HEAD >  my.patch
4. python fastcov.py -C ./redis.info --diff-filter my.patch --lcov -o redis-patch.info  
person Roman B    schedule 05.07.2020