SuperAPI AI 工具集

sonar-list-issues

测试与质量

查看项目

更新于 10-16 02:25

技能介绍

用途

sonar-list-issues 用于通过 sonarqube-cli 命令行工具搜索 SonarQube 项目中的问题(issues)。与 SonarQube MCP 工具(可能使用集成中的默认项目)不同,sonar list issues 始终要求提供 -p <project-key> 参数。

主要能力

该技能支持以下筛选维度:

  • 按严重级别筛选:--severities,可选值为 INFO、MINOR、MAJOR、CRITICAL、BLOCKER、HIGH、MEDIUM、LOW 的逗号分隔子集。
  • 按状态筛选:--statuses,可选值为 OPEN、CONFIRMED、FALSE_POSITIVE、ACCEPTED、FIXED 的逗号分隔子集。
  • 按分支筛选:--branch <name>。
  • 按拉取请求筛选:--pr <id>(映射到 CLI 的 --pull-request)。

此外还支持 --format、--page 和 --page-size 选项。

该技能不支持按问题类型、规则、标签或组件筛选,也不支持 --resolved 标志。如需按规则/类型/标签/组件筛选或深入单个文件,应使用基于 MCP 的技能(例如针对文件的 sonar-analyze,或 mcp__sonarqube__search_sonar_issues_in_projects)。

使用方式

前置条件

该技能使用 sonarqube-cli 命令,CLI 必须已安装并完成认证。运行前需确认 sonar 在 PATH 中可用且已认证。若不可用,不应尝试调用任何替代命令或编造替代方案,而应向用户显示:

Unable to list issues.

Possible causes:

  • sonarqube-cli not installed or not authenticated — invoke the sonar-integrate skill
  • Project key is wrong or missing — -p is mandatory for sonar list issues; invoke the sonar-list-projects skill or set sonar.projectKey in sonar-project.properties

随后询问用户(是/否)是否现在运行 sonar-integrate 技能,并简要说明其作用:检查用户机器上的 SonarQube 设置——安装或更新 sonarqube-cli 并验证认证——并为该智能体重新配置集成,包括 SonarQube MCP 服务器和密钥扫描钩子。若用户确认,则自行调用 sonar-integrate 技能并在本次会话中端到端执行,然后重新检查并继续;若用户拒绝,则停止。

步骤 1:解析项目键

此流程使用 sonar list issues(CLI),而非 MCP。CLI 始终需要 -p <project-key>,不要在未解析出键的情况下调用。

  • 若用户提供了项目键,则使用它。
  • 否则在仓库根目录的 sonar-project.properties 中查找 sonar.projectKey。
  • 若仍未找到,不要运行 sonar list issues。告知用户:"Invoke the sonar-list-projects skill to find your project key, then re-run with that key," 或在 sonar-project.properties 中添加 sonar.projectKey。(MCP 集成的默认值不适用于此 CLI 命令。)

步骤 2:解析用户参数中的可选标志

标志 映射到 CLI 选项
--severities <values> --severities
--statuses <values> --statuses
--branch <name> --branch
--pr <id> --pull-request

步骤 3:校验参数

构建命令前,按以下规则校验每个用户提供的值。若任一值校验失败,停止并告知用户被拒绝的内容及原因,不要运行命令。运行 CLI 前,还需按项目键模式校验解析出的项目键(来自参数或 sonar-project.properties)。

参数 允许的模式
project key ^[a-zA-Z0-9_-.:]+$
--severities INFO, MINOR, MAJOR, CRITICAL, BLOCKER, HIGH, MEDIUM, LOW 的逗号分隔子集
--statuses OPEN, CONFIRMED, FALSE_POSITIVE, ACCEPTED, FIXED 的逗号分隔子集
--branch ^[a-zA-Z0-9_-./]+$
--pr 仅数字

步骤 4:运行 sonar list issues

使用 shell 命令构建并运行命令。始终传入步骤 1 中解析出的键作为 -p。

sonar list issues -p <project-key> --format toon [--severities <values>] [--statuses <values>] [--branch <name>] [--pull-request <id>]

仅包含已提供的可选标志。

步骤 5:格式化结果

若发现问题,先显示摘要行,再显示按严重级别和行号排序的表格:

SonarQube Issues — my-project (branch: main)

Found 12 issue(s):

File Line Severity Rule Message
src/auth/login.py 12 🔴 Blocker python:S2077 SQL injection risk
src/utils/helpers.py 34 🟠 High python:S2259 Null dereference
src/api/routes.py 67 🟡 Medium python:S3776 Cognitive complexity too high

严重级别图标(标签取决于服务器版本):

  • 🔴 Blocker
  • 🟠 Critical / High
  • 🟡 Major / Medium
  • 🔵 Minor / Low
  • ⚪ Info

若未发现问题:

SonarQube Issues — my-project

✅ No issues found.

步骤 6:后续步骤

  • 修复特定问题:"Ask me to fix <rule> at <file>:<line>."
  • 检查质量门:"Invoke the sonar-quality-gate skill."

使用示例

sonar-list-issues # issues in the current project sonar-list-issues my-project # issues in a specific project key sonar-list-issues my-project --severities CRITICAL,BLOCKER # filter by severities sonar-list-issues my-project --statuses OPEN,CONFIRMED # filter by status sonar-list-issues my-project --branch main # on a specific branch sonar-list-issues my-project --pr 42 # on a pull request

适用场景

适用于需要以命令行方式查询 SonarQube 项目、分支或拉取请求中问题列表的场景,尤其是需要按严重级别或状态快速筛选问题、或需要针对特定分支/PR 查看问题的情形。

限制

  • 必须提供 -p <project-key>,无法使用 MCP 集成的默认项目。
  • 不支持按问题类型、规则、标签或组件筛选,也不支持 --resolved 标志。
  • 依赖 sonarqube-cli 已安装并认证。
  • 参数需符合规定的校验模式,否则不会执行命令。