SuperAPI AI 工具集

sonar-coverage

测试与质量

查看项目

更新于 10-16 02:48

技能介绍

用途

SonarQube — Coverage 技能用于识别测试覆盖率不足的文件,并精确定位需要补充测试的具体代码行。它面向使用 SonarQube 进行代码质量管理的开发与测试场景,帮助开发者快速找到覆盖率薄弱点。

主要能力

  • 列出当前项目或指定项目中覆盖率最差的文件,按覆盖率升序排列。
  • 通过 --max <n> 只返回覆盖率小于等于 n% 的文件。
  • 通过 --pr <id> 分析拉取请求而非主分支。
  • 通过 --file <key> 跳过文件列表,直接查看某个文件的逐行覆盖率详情,包括未覆盖行和部分覆盖分支。

使用方式

基本命令形式:

sonar-coverage                              # 当前项目中覆盖率最差的文件
sonar-coverage my-project                   # 指定项目中覆盖率最差的文件
sonar-coverage my-project --max 50          # 仅覆盖率 <= 50% 的文件
sonar-coverage my-project --file src/auth/login.py  # 单个文件的逐行详情

可选参数:

参数 含义
--max <n> 仅返回覆盖率 ≤ n% 的文件(映射到 maxCoverage)
--pr <id> 分析拉取请求而非主分支
--file <key> 跳过文件列表,直接查看该文件键的逐行详情

执行流程分为两步:先解析项目键(仅在需要时),再根据是否提供 --file 选择文件列表流程或行详情流程。文件列表流程调用 mcp__sonarqube__search_files_by_coverage,以表格形式按覆盖率升序展示结果;行详情流程调用 mcp__sonarqube__get_file_coverage_details,展示未覆盖行列表和部分覆盖分支表格。文件键格式为 <projectKey>:<path>,例如 my-project:src/auth/login.py。

前置条件

该技能要求已配置 SonarQube MCP Server,并且会话中可用的工具包括 mcp__sonarqube__search_files_by_coverage 和 mcp__sonarqube__get_file_coverage_details。若这些工具不可用,可尝试 sonar api CLI 回退方案。

若 MCP 工具与 CLI 回退均失败,需排查原因:

  • MCP 服务器未注册:建议运行 sonar-integrate 技能进行配置,然后重启代理会话。
  • 容器运行时未运行:SonarQube MCP Server 通过 sonar run mcp 在 Docker/Podman/Nerdctl 容器内启动,守护进程停止时即使配置正确也不会产生工具。可运行 docker ps(或 podman ps / nerdctl ps)确认。
  • 凭据未配置:运行 sonar-integrate 技能。
  • 项目键错误或 MCP 配置中无默认项目:传入显式键,或检查 sonar-project.properties / 重新运行 sonar-integrate 技能。

适用场景

  • 在持续集成或代码审查前,快速定位覆盖率不足的文件。
  • 针对拉取请求检查新增代码的测试覆盖情况。
  • 深入单个文件,找出需要补充测试的具体行和分支。
  • 与 sonar-list-issues、sonar-quality-gate 等技能配合,形成完整的代码质量检查流程。

限制

  • 依赖 SonarQube MCP Server 或 sonar api CLI,二者均不可用时无法工作。
  • CLI 回退方案需要显式项目键,没有 MCP 默认值;若未解析到项目键,需询问用户或调用 sonar-list-projects。
  • 不应自行编造其他 CLI 命令(例如 sonar mcp call 或 sonar coverage do 并不存在)。
  • 具体收费、价格、平台支持范围等信息暂未提供。