用途
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 已安装并认证。
- 参数需符合规定的校验模式,否则不会执行命令。