Skip to main content

sonar-coverage

Find files with low test coverage and inspect uncovered lines in a SonarQube project (project key optional when MCP integration already defines the default project)

الانتقال إلى التثبيت

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

المستودع
SonarSource/sonarqube-gh-agent-apps-plugin
آخر نشاط في المصدر
١٩ مايو ٢٠٢٦ في ١٢:٣٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١
التفرعات
٣

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

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

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

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

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
sonar-coverage
description
Find files with low test coverage and inspect uncovered lines in a SonarQube project (project key optional when MCP integration already defines the default project)
argument-hint
[project-key?] [--max n] [--file key] [--pr id]
# SonarQube — Coverage Identify files with insufficient test coverage and pinpoint the exact lines that need tests. ## Usage ``` sonar-coverage # worst-covered files in the configured project sonar-coverage my-project # worst-covered files in a specific project sonar-coverage --max 50 # only files with coverage <= 50% sonar-coverage --file src/auth/login.py # line-by-line detail for one file sonar-coverage --pr 42 # coverage on a pull request ``` ## Prerequisites This skill requires the SonarQube MCP Server to be configured and the tools `mcp__sonarqube__search_files_by_coverage` and `mcp__sonarqube__get_file_coverage_details` to be available in your session. If a call to either MCP tool fails, surface the tool error verbatim and stop. Auth, credentials, and MCP server configuration are runtime infrastructure concerns and are not user-fixable from chat — do not ask the user to verify env vars or to install or run any CLI. ## Instructions ### Step 1: Resolve the project key (only when needed) MCP tools sometimes **do not require** `projectKey` when the SonarQube MCP Server has a default project for this workspace (e.g. `SONARQUBE_PROJECT_KEY` configured in the server env). Resolve a key only when you must pass it (tool schema requires it, or the user targets another project): - If the user provided a project key, use it. - Otherwise look for `sonar.projectKey` in `sonar-project.properties` at the repo root. - If still not found, **omit `projectKey`** in MCP calls and rely on the integration default. ### Step 2: Parse optional flags from the user-provided arguments | Flag | Meaning | | -------------- | --------------------------------------------------------------------------- | | `--max <n>` | Only return files with coverage ≤ n% (maps to `maxCoverage`) | | `--pr <id>` | Analyse a pull request instead of the main branch | | `--file <key>` | Skip the file list and go straight to line-by-line detail for this file key | ### Step 3: Run the appropriate flow #### Flow A — File list (default, no `--file`) Invoke the MCP tool `mcp__sonarqube__search_files_by_coverage`. Include **`projectKey` only if** you resolved one in Step 1 **and** the tool requires it; otherwise omit it. ```json { "projectKey": "<only-if-required>", "maxCoverage": "<n>", "pullRequest": "<id>", "pageSize": 20 } ``` Omit unused optional fields. Present results as a table sorted by coverage ascending: ```markdown ## Coverage Files with lowest coverage (worst first): | File | Coverage | | ------------------- | -------- | | src/auth/login.py | 12.5% | | src/utils/crypto.py | 23.0% | | src/api/routes.py | 41.8% | ``` If no files are returned (all files exceed the threshold), say: *"All files meet the coverage threshold."* Then offer to drill in: *"Ask me to inspect any of these files for uncovered lines, or invoke the sonar-coverage skill with `--file <file-key>`."* #### Flow B — Line detail (`--file <key>` given, or user asks to inspect a file) Invoke the MCP tool `mcp__sonarqube__get_file_coverage_details`: ```json { "key": "<file-key>", "pullRequest": "<id>" } ``` Use the file key as returned by Flow A (format `<projectKey>:<path>`, e.g. `my-project:src/auth/login.py`). If the user provides just a path, prepend the resolved project key when you have one; otherwise pass the path as-is and the MCP server resolves it against the configured project. Present uncovered and partially covered lines: ```markdown ## Coverage Detail — `src/auth/login.py` Overall coverage: **12.5%** ### Uncovered lines Lines with no test coverage: 14, 15, 23, 45–52, 67 ### Partially covered branches | Line | Covered branches | Total branches | | ---- | ---------------- | -------------- | | 30 | 1 | 2 | | 61 | 0 | 2 | ``` If the file is fully covered, say: *"All lines in this file are covered."* ### Step 4: Next steps - To write tests for uncovered lines: *"Ask me to add tests for the uncovered lines above."* - To check for quality issues in the same file: *"Invoke the sonar-list-issues skill with `--component <file>`."* - To check the quality gate: *"Invoke the sonar-quality-gate skill."*
عرض على GitHub