关于 sonar-list-issues
通过 `sonarqube-cli` 列出 SonarQube 项目问题的技能,要求先解析项目键,并验证严重级别、状态、分支和拉取请求筛选参数。
主要功能
- 01列出项目问题
- 02按严重级别和状态筛选
- 03指定分支或拉取请求
- 04验证参数和项目键
适用场景
- 01审查项目中的严重问题
- 02检查分支上的未解决问题
- 03查看拉取请求中的问题
MCP 相关
此技能通过 CLI 执行 `sonar list issues`,不使用 SonarQube MCP 工具。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sonarsource/ sonarqube-agent-plugins --skill sonar-list-issues安装后在 Claude Code 中输入/sonar-list-issues确认已加载。
详细介绍
SonarQube — 列出问题
使用 sonarqube-cli 搜索 SonarQube 项目中的问题。
与 SonarQube MCP 工具(可能会使用集成中的默认项目)不同,sonar list issues 始终需要 -p <project-key>。运行 CLI 之前,请从用户提供的参数或 sonar-project.properties 中解析项目密钥。
用法
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-cli 命令。继续之前,必须安装并验证 CLI 身份。
继续之前,请确认 sonar 可在 PATH 中找到且已通过身份验证。如果未满足,请勿尝试调用任何替代命令或自行编造替代方案,并向用户显示:
无法列出问题。
可能的原因:
- 未安装
sonarqube-cli或尚未通过身份验证 — 调用 sonar-integrate 技能- 项目密钥错误或缺失 —
sonar list issues必须提供-p;调用 sonar-list-projects 技能,或在sonar-project.properties中设置sonar.projectKey
然后询问用户是否(是/否)现在运行 sonar-integrate 技能。简要说明其作用:检查用户机器上的 SonarQube 设置 — 安装或更新 sonarqube-cli 并验证身份验证 — 并为此 Agent 重新配置集成,包括 SonarQube MCP 服务和密钥扫描钩子。如果用户确认,请自行调用 sonar-integrate 技能,并在本次会话中从头到尾遵循其步骤,然后重新检查并继续;如果用户拒绝,则停止。
说明
第 1 步:解析项目密钥
此流程使用 sonar list issues(CLI),而不是 MCP。CLI 始终需要 -p <project-key> — 未解析出密钥时,不要调用它。
- 如果用户提供了项目密钥,请使用该密钥。
- 否则,请在仓库根目录的
sonar-project.properties中查找sonar.projectKey。 - 如果仍未找到,不要运行
sonar list issues。告知用户:“调用 sonar-list-projects 技能以查找项目密钥,然后使用该密钥重新运行”, 或在sonar-project.properties中添加sonar.projectKey。(MCP 集成默认值不适用于此 CLI 命令。)
第 2 步:解析用户提供参数中的可选标志
| 标志 | 对应的 CLI 选项 |
|---|---|
--severities <values> | --severities |
--statuses <values> | --statuses |
--branch <name> | --branch |
--pr <id> | --pull-request |
sonar list issues不支持按问题类型、规则、标签或组件筛选,也不支持--resolved标志。仅支持上述选项(以及--format、--page和--page-size)。如需按规则/类型/标签/组件筛选,或深入查看单个文件,请使用基于 MCP 的技能(例如,查看文件时使用 sonar-analyze,或使用mcp__sonarqube__search_sonar_issues_in_projects)。
第 3 步:验证参数
构建命令之前,请根据以下规则验证用户提供的每个值。如果任何值未通过验证,请停止并告知用户被拒绝的值及原因 — 不要运行命令。运行 CLI 之前,请根据项目密钥模式验证解析出的项目密钥(来自参数或 sonar-project.properties)。
| 参数 | 允许的模式 |
|---|---|
| 项目密钥 | ^[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 命令构建并运行该命令。始终传入 -p,并使用在步骤 1 中解析出的键。
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 |
严重性图标(标签取决于服务端版本):
- 🔴 阻断
- 🟠 严重 / 高
- 🟡 主要 / 中
- 🔵 次要 / 低
- ⚪ 信息
如果未发现问题:
## SonarQube Issues — `my-project`
✅ No issues found.
步骤 6:后续步骤
- 要修复特定问题:"请让我修复
<rule>,位置为<file>:<line>。" - 要检查质量门:"调用 sonar-quality-gate 技能。"