AI 提高了代码编写速度,但查看分析结果和手动修复也可能成为新的负担。本文根据 Qiita 原文,介绍如何连接 SonarQube 与 MCP,让 AI Agent 获取并修复 Issue。
SonarQube MCP Server
过去需要从 SonarQube 页面复制 Issue,再粘贴到 AI 聊天中请求修复。使用 MCP 后,AI 客户端可以通过 SonarQube API 获取 Issue、读取本地源代码,并将修复写入文件。
架构与处理流程
使用 Gemini 作为 Agent,连接本地源代码、SonarQube MCP Server 和 SonarQube Server。流程分为四步:

- AI Agent 根据提示生成代码
- SonarScanner 执行静态分析,并把结果发送到 SonarQube Server
- 通过 MCP Server 获取分析产生的 Issue
- AI Agent 结合代码上下文修复 Issue
需要 Docker、SonarScanner CLI 和 Gemini CLI(或其他 MCP 客户端)。
准备 SonarQube Server 和 MCP 客户端
| |
访问 http://localhost:9000,创建 mcp-demo 项目和 User Token。使用 Gemini CLI 时,在 ~/.gemini/settings.json 中添加 MCP Server 配置:
| |
请替换为自己的 Token 和 URL。然后从 MCP 客户端调用 get_system_health 验证连接。MCP Server 本身运行在本地 Docker 容器中。
分析与修复循环
先让 AI 生成一个 JavaScript 数独游戏,包含 index.html、style.css 和 script.js。随后运行 SonarScanner:
| |
分析完成后,请 AI 检查 mcp-demo 项目中的 Issue。MCP 工具 search_sonar_issues_in_projects 返回了 11 个 Issue,涉及认知复杂度、函数位置、颜色对比、数组创建和数值转换等问题。
再让 Agent 根据 Issue 修复代码,包括重构复杂函数、改善颜色对比并使用推荐的 API。最后重新扫描,确认没有未解决的 Issue。
总结
这种方案让 AI Agent 循环执行“生成代码 → 分析 → 获取 Issue → 修复”。MCP Server 连接 AI 与 SonarQube,免去了手动复制分析结果的步骤。修复后仍应重新分析并检查结果。