SonarQube — Fix Issue 是一个用于修复 SonarQube 所识别代码质量或安全问题的技能。
用途
该技能针对 SonarQube 报告中的某个具体问题,按规则键和代码位置进行修复。它适用于需要快速处理单条 SonarQube 告警、且希望改动范围可控的场景。
使用方式
技能通过命令行形式调用,示例包括:
sonar-fix-issue java:S1481 src/main/java/MyClass.java:42 sonar-fix-issue python:S2077 src/auth/login.py sonar-fix-issue Remove unused variable in MyClass.java
参数可以是规则键(如 java:S1481、python:S2077)加文件路径与可选行号(如 src/auth/login.py:34),也可以是纯自然语言描述。如果既无法确定规则键也无法确定文件路径,技能会询问:“Which rule and file should I fix?”
主要能力与执行步骤
-
识别问题:解析用户提供的参数,提取规则键、文件路径与可选行号,或纯语言描述。
-
查询规则(若给出规则键):调用 mcp__sonarqube__show_rule 获取完整规则描述、理由与修复指导,然后再改动代码。除非工具 schema 要求,否则不添加额外参数(如 projectKey);集成后规则查询通常只需要规则键。如果 MCP 工具不可用,则回退到 sonar api get "/api/rules/show?key=<rule-key>"。如果 sonar 也不可用或未认证,则依赖内置的 SonarQube 规则知识。
-
读取文件:读取完整文件内容。如果给出了行号,则围绕该行重点分析,但仍读取整个文件以理解上下文。
-
应用修复:做最小改动以解决规则违规;不重构周边代码,不修复无关问题;保持现有行为不变,修复不得改变代码的功能。
-
解释改动:编辑后简要说明违规是什么、规则为何标记它、改了什么以及为何能解决问题。
-
建议后续步骤:建议调用 sonar-analyze 技能并传入文件以确认没有引入新问题;建议调用 sonar-list-issues 技能并传入项目键(或 sonar-project.properties 中的 sonar.projectKey),CLI 始终使用 -p。
适用场景
适合在开发过程中针对 SonarQube 单条告警进行定点修复,尤其是已知规则键和文件位置时。也支持用自然语言描述问题,便于快速定位。
限制
技能依赖 SonarQube 规则信息;若 MCP 工具与 sonar CLI 均不可用或未认证,则只能依赖内置规则知识。修复范围限定为最小改动,不处理无关问题。关于收费、价格、平台支持等更多信息,资料中暂未提供。