用途
sonar-dependency-risks 用于在 SonarQube 项目中搜索软件成分分析(SCA)依赖风险,即依赖项中存在的安全问题,并关联分析项目、应用或组合中出现的对应版本。
主要能力
- 查询当前项目或指定项目的依赖风险。
- 支持通过 --branch 指定分支、通过 --pr 指定拉取请求。
- 通过 MCP 工具 mcp__sonarqube__search_dependency_risks 获取结果,支持分页(每页 50 条),自动翻页并合并结果。
- 结果按严重程度(Critical、High、Medium 等)分组,以表格展示依赖、版本、风险和 CVE 等信息。
- 若无风险,输出“No dependency risks found.”。
使用方式
基本用法:
sonar-dependency-risks # 当前项目的风险
sonar-dependency-risks my-project # 指定项目的风险
sonar-dependency-risks my-project --branch feature/auth
sonar-dependency-risks my-project --pr 42
参数映射:--branch <name> 对应 branchKey,--pr <id> 对应 pullRequestKey。
项目键解析:若用户提供项目键则使用;否则查找仓库根目录 sonar-project.properties 中的 sonar.projectKey;若仍未找到,则在 MCP 调用中省略 projectKey,依赖集成默认值。
调用 MCP 工具时,仅在需要时包含 projectKey,并传入 branchKey、pullRequestKey、pageIndex、pageSize 等参数。若一页返回 50 条结果,则递增 pageIndex 请求下一页,直到某页少于 50 条为止,并按返回顺序合并所有页。
若 MCP 工具不可用,可回退到 CLI(需要显式项目键):
sonar api get "/api/v2/sca/issues-releases?projectKey=<project-key>[&branchKey=<name>][&pullRequestKey=<id>]&pageIndex=1&pageSize=50"
分页方式与 MCP 调用相同,使用响应中的 page.total 判断是否已获取全部结果。每条 issuesReleases 条目包含风险键、状态、严重程度、vulnerabilityId 以及发布中的包。
适用场景
- 需要检查项目依赖是否存在已知安全漏洞时。
- 在代码审查或质量门禁流程中,结合分支或拉取请求查询依赖风险。
- 配合 sonar-quality-gate 技能检查质量门禁,或配合 sonar-list-issues 技能检查代码级安全问题。
限制
- 需要 SonarQube Advanced Security,该功能在 SonarQube Cloud Enterprise 计划或 SonarQube Server 2025.4 Enterprise 及以上版本中提供。
- 需要配置 SonarQube MCP Server,且会话中可用工具 mcp__sonarqube__search_dependency_risks。
- MCP Server 运行在容器中(Docker、Podman 或 Nerdctl),需要容器运行时处于运行状态。
- 需要配置凭据。
- 若项目键错误或 MCP 配置中没有默认项目,需显式传入项目键,或验证 sonar-project.properties / 重新运行 sonar-integrate 技能。
- 若 MCP 工具不可用且 CLI 回退也失败或不适用,需排查原因:MCP 服务器未启用/未注册(建议运行 sonar-integrate 技能)、已启用但工具仍不可用(常见原因是容器运行时未运行)、凭据未配置、项目键错误等。
- 不要臆造其他 CLI 命令(例如 sonar mcp call 或 sonar dependency-risks 并不存在)。
后续步骤
- 修复有漏洞的依赖:可要求将 <dependency> 更新到安全版本。
- 检查质量门禁:调用 sonar-quality-gate 技能(仅在未使用集成默认值时添加项目键)。
- 检查代码级安全问题:调用 sonar-list-issues 技能并传入项目键(或使用仓库中的 sonar.projectKey),按需添加过滤条件;sonar list issues 始终需要 -p。