Skip to main content

improve-coverage

Improve code coverage for a Bazel C++ test target or source file

معلومات المصدر

المستودع
redpanda-data/redpanda
آخر نشاط في المصدر
٢٠ أبريل ٢٠٢٦ في ١٧:٤٧
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٢٬٦١٤
التفرعات
٧٩٥

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
improve-coverage
description
Improve code coverage for a Bazel C++ test target or source file
user-invocable
true
# Improve Code Coverage Improve test coverage for a Bazel C++ test target or source file path. ## Input Resolution 1. **Bazel test target** (starts with `//`, e.g. `//src/v/bytes/tests:iobuf_test`): use it directly. 2. **Source file path** (e.g. `src/v/bytes/iobuf.cc`): find the test target: ```bash bazel query "kind('.*_test', rdeps(//src/v/..., //$(dirname $FILE):$(basename $FILE .cc), 1))" 2>/dev/null ``` If multiple targets match, pick the one in the closest `tests/` directory. If none match, tell the user and stop. ## Workflow ### Step 1: Baseline Coverage Run coverage and read the LLM report: ```bash tools/run-cov <target> -r llm ``` Note the **total line coverage percentage** — this is the baseline to beat. Read the report and identify: - **Uncovered functions** — highest impact. One test can cover many lines. - **Partially covered functions** — uncovered branches indicate missing error-path or edge-case tests. - **Zero-coverage files in scope** — may need new test cases entirely. ### Step 2: Understand the Code Read the source files named in the report. Focus on: - Uncovered functions: what they do, inputs, preconditions. - The existing test file: patterns, fixtures, helpers. Key codebase patterns: - `redpanda_cc_gtest` targets use GTest (`TEST()`, `TEST_F()`). `redpanda_cc_btest` targets use Seastar Boost test (`SEASTAR_THREAD_TEST_CASE`). Match whichever the test file uses. - Many functions are `ss::future<>` coroutines — test with `SEASTAR_THREAD_TEST_CASE` or the Seastar GTest runner. - Use `ss` namespace prefix for Seastar types. - Use `EXPECT_*` for most checks, `ASSERT_*` only when continuing would crash. ### Step 3: Write Tests Prioritize by impact: 1. **Uncovered functions** — call each one. A 20-line function = 20 lines covered. 2. **Uncovered error paths** — trigger the uncovered branches in partially covered functions. 3. **Zero-coverage files** — add smoke tests if practical. Rules: - Add tests to the **existing test file**. Don't create new files or BUILD targets unless necessary. - Follow existing naming conventions in the file. - One logical behavior per test case. - Prefer deterministic tests — construct error conditions directly. - Do NOT add comments that restate the code. ### Step 4: Verify Build ```bash bazel build <target> ``` Fix compilation errors before proceeding. ### Step 5: Verify Coverage Re-run coverage: ```bash tools/run-cov <target> -r llm ``` Compare to the baseline. Report: ``` Coverage: X.Y% → A.B% (+N.N%) New lines covered: <count> ``` If coverage did not improve, investigate: - Build errors preventing the new tests from running? - Code compiled out by preprocessor guards? - Template instantiations not triggered by test types? ### Step 6: Summary Report: - Which functions/paths are now covered - What test cases were added - Before/after coverage numbers - Remaining significant gaps and suggestions
عرض على GitHub