Я могу запустить проверку покрытия, используя cmake этот вики-страница Это очень просто, и при настройке панели инструментов у меня может быть прекрасный вид покрытия кода в моем браузере (последняя часть). Но я не хочу проверять каждый раз, чтобы проверить прогресс одного файла. На самом деле, я хочу проверить покрытие кода локально для подкаталога, а не для библиотеки enitre с кодом стороннего производителя.
Итак, как мы можем проверить покрытие кода для подкаталога. Конечно, я написал тест в cmakelists.txt, используя add_test (….).
Я постараюсь объяснить немного без какого-либо кода.
Class A {
public:
A() {}
....
so many methods ..
....
protected:
~A() {}
}; //end class A
Далее я написал тест:
//testA
int main()
{
A *a = new A();
a->method1();
a->method2();
...
}
Теперь в CMakeLists.txt у меня есть:
add_test(testA ...)
Поэтому, когда я запускаю ctest, он запускает все тесты, включая TestA
, Конечно, я могу использовать ctest -R "TestA"
,
Теперь возвращаясь к вопросу, как я могу проверить охват class A
только. без запуска всего теста или только бега testA
?
Я создал скрипт cmake, который генерирует данные покрытия, предназначенные для http://coveralls.io/ сервис (бесплатно для проектов с открытым исходным кодом).
Сценарий позволяет вам точно указать, из каких файлов вы хотите собрать покрытие кода (по сравнению с большинством сценариев, которые позволяют исключать файлы). Чтобы ты мог file(GLOB
интересующие вас файлы или укажите их вручную. Этот скрипт также можно изменить, чтобы он просто запускал lcov и генерировал локальные отчеты html.
https://github.com/JoakimSoderberg/coveralls-cmake
https://github.com/JoakimSoderberg/coveralls-cmake-example
Если http://coveralls.io/ вас не интересует, вот еще один скрипт, который использует lcov для простой генерации локальных отчетов в формате html:
https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake