Skip to main content

improve-coverage

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

ソース情報

リポジトリ
redpanda-data/redpanda
ソースの最終更新活動
2026年4月20日 17:47
検出された SKILL.md の言語
英語
スター
12,614
フォーク
795

インストール方法

デフォルトでは、最初にソースを確認する 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で見る