mcpField
S
sonarqube

sonarqube

github.com/claude-dev-suite测试与质量46104 次安装2 天前更新
代码仓库

关于 sonarqube

面向 SonarQube 和 SonarCloud 的代码质量分析技能,适合配置代码扫描与质量门禁的开发团队。内容涵盖 CI 集成、关键指标、文件排除和常见故障排查。

主要功能

  1. 01配置 SonarCloud 与 SonarQube
  2. 02设置质量门禁条件
  3. 03集成 GitHub Actions 与 Maven
  4. 04查看缺陷、漏洞和代码异味
  5. 05配置覆盖率及文件排除

适用场景

  1. 01在拉取请求中检查质量门禁
  2. 02为 CI 流水线添加代码分析
  3. 03排查覆盖率报告未识别问题
  4. 04逐步处理遗留项目的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill sonarqube

安装后在 Claude Code 中输入/sonarqube确认已加载。

详细介绍

SonarQube / SonarCloud

何时不使用此技能

  • JavaScript/TypeScript 代码检查 - 使用 eslint-biome 技能以获得更快的反馈
  • 安全扫描 - 使用 owasp-top-10 或 security-scanner MCP
  • 测试执行 - 使用 Vitest/Playwright 技能运行测试
  • 代码覆盖率生成 - 使用 JaCoCo/Vitest 技能生成覆盖率报告

深入了解:使用 mcp__documentation__fetch_docs,并将 technology 设为 sonarqube,以获取全面的文档。

官方文档

资源链接
SonarQube 文档https://docs.sonarsource.com/sonarqube/latest/
SonarCloud 文档https://docs.sonarsource.com/sonarcloud/
规则仓库https://rules.sonarsource.com/
API 参考https://sonarcloud.io/web_api/

快速设置

SonarCloud(开源项目推荐)
# 1. Connect repo at sonarcloud.io
# 2. Create sonar-project.properties
# sonar-project.properties
sonar.projectKey=org_project
sonar.organization=your-org
sonar.sources=src
sonar.tests=tests
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.coverage.exclusions=**/*.test.ts,**/*.spec.ts
SonarQube(可自托管)
# docker-compose.yml
services:
  sonarqube:
    image: sonarqube:lts-community
    ports:
      - "9000:9000"
    environment:
      - SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonar
    volumes:
      - sonarqube_data:/opt/sonarqube/data

质量门禁

默认质量门禁条件
指标条件目标
覆盖率新代码≥ 80%
重复行新代码≤ 3%
可维护性评级新代码A
可靠性评级新代码A
安全评级新代码A
已审查的安全热点新代码100%
自定义质量门禁
# Create via API
curl -X POST "https://sonarcloud.io/api/qualitygates/create" \
  -H "Authorization: Bearer $SONAR_TOKEN" \
  -d "name=Strict"

CI/CD 集成

GitHub Actions
# .github/workflows/sonar.yml
name: SonarCloud
on: [push, pull_request]

jobs:
  sonarcloud:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: SonarCloud Scan
        uses: SonarSource/sonarcloud-github-action@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Maven(Java)

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.10.0.2594</version>
</plugin>
mvn sonar:sonar \
  -Dsonar.projectKey=project \
  -Dsonar.host.url=https://sonarcloud.io \
  -Dsonar.token=$SONAR_TOKEN

关键指标

指标说明良好值
Bug可靠性问题0
漏洞安全问题0
代码异味可维护性问题尽量减少
覆盖率测试覆盖率 %> 80%
重复代码重复代码 %< 3%
认知复杂度代码可理解性< 15/函数

特定语言规则

语言规则数链接
JavaScript/TS422https://rules.sonarsource.com/javascript/
Java733https://rules.sonarsource.com/java/
Python300+https://rules.sonarsource.com/python/
C#400+https://rules.sonarsource.com/csharp/
Go100+https://rules.sonarsource.com/go/

排除文件

# sonar-project.properties
sonar.exclusions=**/node_modules/**,**/dist/**,**/*.test.ts
sonar.coverage.exclusions=**/tests/**,**/__mocks__/**
sonar.cpd.exclusions=**/generated/**

API 示例

# Get project status
curl "https://sonarcloud.io/api/qualitygates/project_status?projectKey=KEY" \
  -H "Authorization: Bearer $SONAR_TOKEN"

# Get issues
curl "https://sonarcloud.io/api/issues/search?componentKeys=KEY&types=BUG" \
  -H "Authorization: Bearer $SONAR_TOKEN"

# Get metrics
curl "https://sonarcloud.io/api/measures/component?component=KEY&metricKeys=coverage,bugs,vulnerabilities" \
  -H "Authorization: Bearer $SONAR_TOKEN"

反模式

反模式不良原因正确做法
PR 未设置质量门禁合并质量差的代码启用 PR 装饰,并在失败时阻止合并
从覆盖率中排除所有测试覆盖率数据虚高仅排除测试工具代码
忽略代码异味技术债务不断累积修复问题或添加注释说明理由
不报告覆盖率无法追踪质量趋势在 CI 中配置覆盖率报告
使用默认质量门禁对大多数项目而言过于宽松创建更严格的自定义门禁
不审查安全热点可能遗漏漏洞发布前审查所有安全热点

快速故障排除

问题可能原因解决方案
质量门禁意外失败新代码覆盖率 < 80%添加测试或调整覆盖率目标
未运行分析缺少 SONAR_TOKEN将令牌添加到 CI 密钥中
覆盖率始终为 0%报告路径错误检查 sonar.javascript.lcov.reportPaths
重复代码误报样板代码添加到 sonar.cpd.exclusions
报告的问题过多首次扫描旧代码聚焦“新代码”,逐步修复
PR 装饰不起作用未集成 GitHub App配置 SonarCloud GitHub App

相关技能

评论

支持 Markdown