From 59ae0231ed84b1205d4e6b77bd0b04d1ce4b7d9a Mon Sep 17 00:00:00 2001 From: Gabriel Ferreira Date: Fri, 6 Sep 2024 17:17:15 +0200 Subject: [PATCH] build: Add target to convert lcov coverage report to the cobertura format --- .../custom-modules/ns3-coverage.cmake | 25 ++++++++++++++++++- ns3 | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/build-support/custom-modules/ns3-coverage.cmake b/build-support/custom-modules/ns3-coverage.cmake index 6bcfcf6e9..2662d7296 100644 --- a/build-support/custom-modules/ns3-coverage.cmake +++ b/build-support/custom-modules/ns3-coverage.cmake @@ -18,6 +18,7 @@ if(${NS3_COVERAGE}) message(FATAL_ERROR "LCOV is required but it is not installed.") endif() + set(zero_counters) if(${NS3_COVERAGE_ZERO_COUNTERS}) set(zero_counters "--lcov-zerocounters") endif() @@ -32,8 +33,30 @@ if(${NS3_COVERAGE}) add_custom_target( coverage_gcc COMMAND lcov -o ns3.info -c --directory ${CMAKE_BINARY_DIR} ${zero_counters} - COMMAND genhtml ns3.info WORKING_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/coverage DEPENDS run_test_py ) + + add_custom_target( + coverage_html + COMMAND genhtml ns3.info + WORKING_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/coverage + DEPENDS coverage_gcc + ) + + # Convert lcov results to cobertura (compatible with gitlab) + check_deps(cobertura_deps EXECUTABLES c++filt PYTHON_PACKAGES lcov_cobertura) + if(cobertura_deps) + message( + WARNING + "Code coverage conversion from LCOV to Cobertura requires missing dependencies: ${cobertura_deps}" + ) + else() + add_custom_target( + coverage_cobertura + COMMAND lcov_cobertura ns3.info --output cobertura.xml --demangle + WORKING_DIRECTORY ${CMAKE_OUTPUT_DIRECTORY}/coverage + DEPENDS coverage_gcc + ) + endif() endif() diff --git a/ns3 b/ns3 index af097513a..a69e0919e 100755 --- a/ns3 +++ b/ns3 @@ -1285,7 +1285,9 @@ def build_step( "check-version", "cmake-format", "cmake-format-check", + "coverage_cobertura", "coverage_gcc", + "coverage_html", "docs", "doxygen", "doxygen-no-build",