Enable coverage information generation and tracking

Merged Alberto Miranda requested to merge amiranda/coverage into master

This MR enables the generation of code coverage reports for the source code. More specifically, it introduces the following changes:

  • Adds the gkfs-code-coverage.cmake CMake script under {PROJECT_ROOT}/CMake/ and includes it in the project's main CMakeLists.txt. This script defines the GKFS_ENABLE_CODE_COVERAGE option to control whether code coverage should be enabled when building, as well as the target_code_coverage() function to ensure that the appropriate flags are added to a CMake target.
  • Adds gcovr to GekkoFS docker build image.
  • Adds a coverage.sh script under {PROJECT_ROOT}/scripts/ci that provides both a capture and a merge work modes. This script abstracts away the direct usage of gcovr and allows the appropriate generation of coverage reports when running tests in parallel in the CI. The script relies on a .coverage-exclusions file (also under {PROJECT_ROOT}/scripts/ci) to control which paths should be excluded from coverage reporting (e.g. /usr/include/.*).
  • Adds a new report stage in the CI pipeline that upon completion generates artifacts both for a Cobertura XML and a HTML code coverage reports.
Edited by Alberto Miranda

Merge request reports