Проверка покрытия кода CMake / CTest

Я могу запустить проверку покрытия, используя 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?

4

Решение

Я создал скрипт 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

1

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