CtrlK
BlogDocsLog inGet started
Tessl Logo

experimental-code-coverage-config-validator

Validates Chromium generated builder configurations (gn-args.json) for code coverage correctness based on language context.

56

Quality

63%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./agents/skills/experimental-code-coverage-config-validator/SKILL.md
SKILL.md
Quality
Evals
Security

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:

    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.
Repository
chromium/chromium
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.