mcpField
S
sonar-list-issues

sonar-list-issues

github.com/sonarsource测试与质量11449 次安装今天更新
代码仓库

关于 sonar-list-issues

通过 `sonarqube-cli` 列出 SonarQube 项目问题的技能,要求先解析项目键,并验证严重级别、状态、分支和拉取请求筛选参数。

主要功能

  1. 01列出项目问题
  2. 02按严重级别和状态筛选
  3. 03指定分支或拉取请求
  4. 04验证参数和项目键

适用场景

  1. 01审查项目中的严重问题
  2. 02检查分支上的未解决问题
  3. 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 技能。"

评论

支持 Markdown