sonarqube

v2026.09.24

SonarQube/SonarCloud integration for continuous code quality. Setup, configuration, quality gates, and CI/CD integration. USE WHEN: user mentions "SonarQube", "SonarCloud", "quality gates", asks about "code coverage", "technical debt", "code smells", "sonar-project.properties", "SonarScanner" DO NOT USE FOR: ESLint/Biome - use linting skills, OWASP security - use security skills, testing tools - use Vitest/Playwright skills

GitHub
Install command
npx skhub add claude-dev-suite/sonarqube
Markdown
SKILL.md

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

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/quality/sonarqube

Default branch

main

Latest commit

9496306

Tree SHA

fe4e2f1