Cześć.
Mam spory projekt C++ zarządzany cmake
z testami napisanymi w gtest
.
Dostałem zadanie dorobić do tego "code coverage".
Wymagania Windows MSVC.
Licencję na MS Visual Studio Enterprise mam.
Jeśli wybiorę opcję z poziomu IDE to projekt się przebudowuje, testy uruchamiają i mam okienko pokazujące pokrycie kodu.
Teraz problem jak to zrobić by to zadziałało z linii poleceń.
Nie mogę znaleźć jak z linii poleceń zmusić MSVC do zbudowania testów, w taki sposób by ich uruchomienie spowodowało utworzenie odpowiedniego raportu o pokryciu kodu.
Wszystkie instrukcję jakie znalazłem opisują proces z poziomu IDE, albo używają MSTest
, który nie ma sensu w przypadku używania gtest
.
Parę linków, które wyglądają dla nie sensownie:
- https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2019
- https://docs.microsoft.com/en-us/visualstudio/test/customizing-code-coverage-analysis?view=vs-2019
- https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8cc34c29-86b6-41c2-9f15-4cb1c76217bc/measure-code-coverage-via-the-command-line?forum=vsdebug
Mój proces budowania wygląda tak:
cd build64
cmake -A x64 -Thost=x64 -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 16 2019" ..
cmake --build .
# albo
msbuild MojProjekt.sln /p:Configuration=Debug
Jako, że wszystko ma się dziać na Jenkins muszę zbudować projekt z linii poleceń.
Uruchomić testy z odpowiednim środowisku tak by uzyskać wynik code coverage, który potem wyeksportuje do formatu trawionego przez Jenkins (Cobertura plugin).
bardziej złożone wyszukiwania Google kierują mnie zwykle do narzędzi Clang/gcc (Lcov
) albo do OpenCppCoverage, a ja mam to zrobić z MSVC.