From 81376a8516b74ef15245a4224d0deccdcd492bb5 Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Tue, 13 Oct 2026 23:23:59 -0300 Subject: [PATCH 1/2] Revert "fix: coverage GCOVR Exclude Markers applied to known behavior (avoid "C++ internal branches")." This reverts commit 0f008900dbad4f30138abfdd00a4a3854d4504a8. --- .../src/hackerrank/projecteuler/euler003.cpp | 2 -- .../src/hackerrank/warmup/compare_triplets.cpp | 4 ++-- .../src/hackerrank/warmup/mini_max_sum.cpp | 12 +++--------- .../src/hackerrank/warmup/plus_minus.cpp | 15 +++++++-------- .../exercises/src/hackerrank/warmup/staircase.cpp | 12 ++++++------ .../src/hackerrank/warmup/time_conversion.cpp | 12 +++--------- 6 files changed, 21 insertions(+), 36 deletions(-) diff --git a/src/lib/exercises/src/hackerrank/projecteuler/euler003.cpp b/src/lib/exercises/src/hackerrank/projecteuler/euler003.cpp index 930074f..f83c1dc 100644 --- a/src/lib/exercises/src/hackerrank/projecteuler/euler003.cpp +++ b/src/lib/exercises/src/hackerrank/projecteuler/euler003.cpp @@ -11,9 +11,7 @@ namespace hackerrank::projecteuler { long prime_factor(long n) { if (n < 2) { - // GCOVR_EXCL_START throw std::invalid_argument("n must be greater than 2"); - // GCOVR_EXCL_STOP } long divisor = n; diff --git a/src/lib/exercises/src/hackerrank/warmup/compare_triplets.cpp b/src/lib/exercises/src/hackerrank/warmup/compare_triplets.cpp index 0506fb0..45358bd 100644 --- a/src/lib/exercises/src/hackerrank/warmup/compare_triplets.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/compare_triplets.cpp @@ -10,7 +10,7 @@ namespace hackerrank::warmup { std::vector compareTriplets(const std::vector &a, const std::vector &b) { - std::vector awards = {0, 0}; + std::vector awards = {0, 0}; int i = 0; for (const int &value : a) { @@ -24,6 +24,6 @@ std::vector compareTriplets(const std::vector &a, i += 1; } return awards; -} // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 +} } // namespace hackerrank::warmup diff --git a/src/lib/exercises/src/hackerrank/warmup/mini_max_sum.cpp b/src/lib/exercises/src/hackerrank/warmup/mini_max_sum.cpp index 54fcf5a..42b15c6 100644 --- a/src/lib/exercises/src/hackerrank/warmup/mini_max_sum.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/mini_max_sum.cpp @@ -14,9 +14,7 @@ namespace hackerrank::warmup { std::string miniMaxSumCalculate(const std::vector &arr) { if (arr.size() < 2) { - // GCOVR_EXCL_START throw std::invalid_argument("List too short. Pass at least 2 elements."); - // GCOVR_EXCL_STOP } long long tsum = 0; @@ -31,17 +29,13 @@ std::string miniMaxSumCalculate(const std::vector &arr) { } std::stringstream result; + result << tsum - tmax << " " << tsum - tmin; - result << tsum - tmax << " " << tsum - tmin; // GCOVR_EXCL_BR_WITHOUT_HIT: 3/6 - - return result.str(); // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + return result.str(); } void miniMaxSum(const std::vector &arr) { - const auto result = miniMaxSumCalculate(arr); - // GCOVR_EXCL_START - std::cout << result << std::endl; - // GCOVR_EXCL_STOP + std::cout << miniMaxSumCalculate(arr) << std::endl; } } // namespace hackerrank::warmup diff --git a/src/lib/exercises/src/hackerrank/warmup/plus_minus.cpp b/src/lib/exercises/src/hackerrank/warmup/plus_minus.cpp index 987d3ec..4e60fe7 100644 --- a/src/lib/exercises/src/hackerrank/warmup/plus_minus.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/plus_minus.cpp @@ -12,11 +12,11 @@ const int BUFFER_MAX_SIZE = 10; std::string format_result(double number) { std::string str; - str.reserve(BUFFER_MAX_SIZE); // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + str.reserve(BUFFER_MAX_SIZE); char *buffer = str.data(); snprintf(buffer, BUFFER_MAX_SIZE, "%0.6lf", number); - return buffer; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + return buffer; } namespace hackerrank::warmup { @@ -37,7 +37,7 @@ std::vector plusMinusCalculate(const std::vector &arr) { } } - std::vector results = { + std::vector results = { static_cast(positives) / static_cast(arr.size()), static_cast(negatives) / static_cast(arr.size()), static_cast(zeros) / static_cast(arr.size())}; @@ -45,19 +45,18 @@ std::vector plusMinusCalculate(const std::vector &arr) { std::vector answer = {}; for (double tmp : results) { - std::string formatted = - format_result(tmp); // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 - answer.emplace_back(formatted); // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + std::string formatted = format_result(tmp); + answer.emplace_back(formatted); } return answer; -} // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 +} void plusMinus(const std::vector &arr) { std::vector output = plusMinusCalculate(arr); for (const std::string &line : output) { - std::cout << line << std::endl; // GCOVR_EXCL_BR_WITHOUT_HIT: 2/4 + std::cout << line << std::endl; } } } // namespace hackerrank::warmup diff --git a/src/lib/exercises/src/hackerrank/warmup/staircase.cpp b/src/lib/exercises/src/hackerrank/warmup/staircase.cpp index 81aaf8e..e6ee05a 100644 --- a/src/lib/exercises/src/hackerrank/warmup/staircase.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/staircase.cpp @@ -9,26 +9,26 @@ std::vector staircaseCalculate(int n) { std::vector answer; for (int i = 0; i < n; i++) { - std::string line = ""; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + std::string line = ""; for (int j = 0; j < n; j++) { if (j < n - i - 1) { - line += " "; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + line += " "; } else { - line += "#"; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + line += "#"; } } - answer.emplace_back(line); // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + answer.emplace_back(line); } return answer; -} // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 +} void staircase(int n) { std::vector output = staircaseCalculate(n); for (const std::string &line : output) { - std::cout << line << std::endl; // GCOVR_EXCL_BR_WITHOUT_HIT: 2/4 + std::cout << line << std::endl; } } } // namespace hackerrank::warmup diff --git a/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp b/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp index 367889d..09f6fef 100644 --- a/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp +++ b/src/lib/exercises/src/hackerrank/warmup/time_conversion.cpp @@ -27,7 +27,6 @@ std::string timeConversion(const std::string &s) { char TIME_SEPARATOR = ':'; std::string meridian = lastN(s, 2); - // GCOVR_EXCL_START auto time_str = std::stringstream(firstN(s, s.size() - 2)); std::string segment; std::vector time; @@ -41,12 +40,9 @@ std::string timeConversion(const std::string &s) { int hour; hour_str >> hour; - // GCOVR_EXCL_STOP if (hour < 0 || hour > 23) { - // GCOVR_EXCL_START throw std::invalid_argument("Invalid hour value: " + std::to_string(hour)); - // GCOVR_EXCL_STOP } if (hour >= 12) { @@ -57,25 +53,23 @@ std::string timeConversion(const std::string &s) { hour += 12; } - // GCOVR_EXCL_START hour_str.str(""); hour_str.clear(); hour_str << std::setfill('0') << std::setw(2) << (hour % 24); time[0] = hour_str.str(); - // GCOVR_EXCL_STOP std::string conversion; unsigned long tsize = time.size(); for (int i = 0; i < tsize; i++) { - conversion += time[i]; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + conversion += time[i]; if (i < tsize - 1) { - conversion += ":"; // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 + conversion += ":"; } } return conversion; -} // GCOVR_EXCL_BR_WITHOUT_HIT: 1/2 +} } // namespace hackerrank::warmup From f68e94e34dfe4811a6465446edb5fee96e64afd7 Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Wed, 14 Oct 2026 00:19:59 -0300 Subject: [PATCH 2/2] fix: coverage GCOVR new parameters --- Makefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index aeca4d1..913d715 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,18 @@ BUILDKIT_PROGRESS=plain DOCKER_COMPOSE=docker compose # TOOLS -COVERAGE_TOOL_OPTS=--root . --filter 'src/lib/*' --exclude "tests/*" --exclude 'build/*' --txt --txt-metric line --txt-metric branch --print-summary +COVERAGE_TOOL_OPTS = \ + --root . \ + --filter 'src/lib/*' \ + --exclude-unreachable-branches \ + --exclude-throw-branches \ + --exclude-noncode-lines \ + --exclude "tests/*" \ + --exclude 'build/*' \ + --txt \ + --txt-metric line \ + --txt-metric branch \ + --print-summary # C++ specific SRC_DIR = src