mcpField
S
sonarqube

sonarqube

github.com/claude-dev-suiteTesting & quality46104 installsUpdated 2d ago
Repository

About sonarqube

A skill for working with SonarQube and SonarCloud code analysis, intended for development teams configuring scans and quality gates. It covers CI integration, key metrics, file exclusions, and troubleshooting.

Key features

  1. 01Configure SonarCloud and SonarQube
  2. 02Set quality gate conditions
  3. 03Integrate GitHub Actions and Maven
  4. 04Review bugs, vulnerabilities, and code smells
  5. 05Configure coverage and file exclusions

Use cases

  1. 01Check quality gates on pull requests
  2. 02Add code analysis to CI pipelines
  3. 03Troubleshoot unrecognized coverage reports
  4. 04Address issues incrementally in legacy projects

Install

Copy the command and run it in a terminal.

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

After installing, type/sonarqubein Claude Code to confirm it loaded.

Details

From the project README

SonarQube / SonarCloud

When NOT to Use This Skill

  • JavaScript/TypeScript linting - Use eslint-biome skill for faster feedback
  • Security scanning - Use owasp-top-10 or security-scanner MCP
  • Test execution - Use Vitest/Playwright skills for running tests
  • Code coverage generation - Use JaCoCo/Vitest skills for coverage

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: sonarqube for comprehensive documentation.

Official Documentation

ResourceLink
SonarQube Docshttps://docs.sonarsource.com/sonarqube/latest/
SonarCloud Docshttps://docs.sonarsource.com/sonarcloud/
Rules Repositoryhttps://rules.sonarsource.com/
API Referencehttps://sonarcloud.io/web_api/

Quick Setup

SonarCloud (Recommended for Open Source)
# 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 (Self-hosted)
# 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

Quality Gates

Default Quality Gate Conditions
MetricConditionTarget
Coverageon new code≥ 80%
Duplicated Lineson new code≤ 3%
Maintainability Ratingon new codeA
Reliability Ratingon new codeA
Security Ratingon new codeA
Security Hotspots Reviewedon new code100%
Custom Quality Gate
# Create via API
curl -X POST "https://sonarcloud.io/api/qualitygates/create" \
  -H "Authorization: Bearer $SONAR_TOKEN" \
  -d "name=Strict"

CI/CD Integration

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)
<!-- pom.xml -->
<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

Key Metrics

MetricDescriptionGood Value
BugsReliability issues0
VulnerabilitiesSecurity issues0
Code SmellsMaintainability issuesMinimize
CoverageTest coverage %> 80%
DuplicationsDuplicated code %< 3%
Cognitive ComplexityCode understandability< 15/function

Language-Specific Rules

LanguageRulesLink
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/

Excluding Files

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

API Examples

# 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"

Anti-Patterns

Anti-PatternWhy It's BadCorrect Approach
No quality gate on PRsMerging bad codeEnable PR decoration, block on failure
Excluding all tests from coverageInflated coverage numbersOnly exclude test utilities
Ignoring code smellsTechnical debt accumulatesFix or justify with comments
No coverage reportingCan't track quality trendsConfigure coverage reports in CI
Using default quality gateToo lenient for most projectsCreate custom stricter gate
Not reviewing Security HotspotsPotential vulnerabilities missedReview all hotspots before release

Quick Troubleshooting

IssueLikely CauseSolution
Quality gate failed unexpectedlyNew code coverage < 80%Add tests or adjust coverage target
Analysis not runningMissing SONAR_TOKENAdd token to CI secrets
Coverage always 0%Wrong report pathCheck sonar.javascript.lcov.reportPaths
Duplicated code false positivesBoilerplate codeAdd to sonar.cpd.exclusions
Too many issues reportedFirst scan on legacy codeUse "New Code" focus, fix incrementally
PR decoration not workingMissing GitHub App integrationConfigure SonarCloud GitHub App

Related Skills

Comments

Markdown supported