Back to Chromium

Code Coverage Config Validator

agents/skills/experimental-code-coverage-config-validator/SKILL.md

152.0.7953.14.1 KB
Original Source

Code Coverage Config Validator

Use this skill to verify if a Chromium builder is correctly configured in its generated GN arguments (gn-args.json) to produce code coverage data.


Inputs

When invoking this skill, the caller MUST pass the following inputs in the prompt:

  • builders_of_concern: Target builder names to validate (e.g., ["linux-rel"]). To locate the Starlark .star definition file for each builder, reference: builder_star_map.json.
  • language_context: The programming language context ("cpp", "objc", "rust", "java", "js", or "ts"). Consult language_coverage_map.json for authoritative mappings.

When to Use This Skill

  • Verifying if a builder has the correct GN arguments for code coverage.
  • Debugging why code coverage artifacts are missing or not updated.
  • Triaging a code coverage bug where builder configuration needs validation.

Validation Checks

Consult language_coverage_map.json for the required settings mapped to language_context. Verify that the builder's configuration (gclient_config and generated gn-args.json) satisfies both:

  • gclient Configuration: Inspect builder_spec.gclient_config to confirm any required_gclient_vars (e.g., checkout_clang_coverage_tools set via apply_configs = ["use_clang_coverage"]).
  • GN Arguments (gn_args): Inspect generated gn-args.json to confirm all required_gn_args are present.

Step-by-Step Execution

  1. Locate GN Args File: Search for builder_name inside infra/config/generated/builders/gn_args_locations.json to resolve its relative path (e.g., "try/linux-rel/gn-args.json"). Read the JSON file at infra/config/generated/builders/<relative_path>.
  2. Inspect Configuration: Examine the "gn_args" dictionary in the JSON.
  3. Perform Checks: Check each required key-value pair as defined in the Validation Checks section for the given language_context.
  4. Generate Report:
    • Validation Success: If all checks pass, report builder is valid.
    • Validation Failure: Detail missing or incorrect configurations. Recommend updating the builder's Starlark file and regenerating configs via lucicfg generate infra/config/main.star.
  5. Environment Reminder: If language_context is "cpp", "objc", or "rust", append a reminder that local Clang code coverage generation requires "checkout_clang_coverage_tools": True in the developer's ~/.gclient file under custom_vars.

Example Outputs

Example 1: Successful Validation (C++)

Builder linux-rel validation successful for language context cpp. All required GN arguments (use_clang_coverage = true, is_clang = true, and is_debug = false) are present in gn-args.json.

Example 2: Failed Validation (C++)

Builder linux-rel for language context cpp requires updates:

  • LACKING: "is_debug": false is missing in gn-args.json.

  • SUGGESTED CHANGE: Update the Starlark builder definition to set is_debug = False and run lucicfg generate infra/config/main.star.

  • REMINDER: For local C++ coverage generation, ensure your ~/.gclient file contains:

    python
    custom_vars = {
        "checkout_clang_coverage_tools": True,
    }
    

Example 3: Failed Validation (Java)

Builder android-x86-rel for language context java requires updates:

  • LACKING: "use_jacoco_coverage": true is missing in gn-args.json.
  • SUGGESTED CHANGE: Update the Starlark builder definition to set use_jacoco_coverage = True and regenerate configs via lucicfg.