SuperAPI AI Directory

sonarqube

Agents & models

View repository

Updated 10-16 05:48

About this skill

SonarQube

SonarQube is the leading tool for continuous inspection of code quality. It detects bugs, vulnerabilities (SAST), and code smells in over 30 programming languages.

When to Use

  • Continuous Code Quality & Clean Code Auditing: Analyzing codebases for bugs, vulnerabilities, security hotspots, and code smells.
  • Quality Gates in Pull Requests: Enforcing that new code meets strict quality standards (test coverage, zero new bugs) before merging.
  • Technical Debt & Maintainability Tracking: Measuring duplication percentage, complexity scores, and estimated remediation time.
  • Enterprise Security Compliance: Ensuring codebases comply with security standards (OWASP Top 10, CWE, SANS Top 25).

Quick Start

docker run -d --name sonarqube -p 9000:9000 sonarqube:lts
# Login: admin/admin at http://localhost:9000
# sonar-project.properties
sonar.projectKey=my-project
sonar.sources=src
sonar.host.url=http://localhost:9000
sonar.login=...

Core Concepts

The "Clean as You Code" Methodology

Focuses quality gate enforcement on "New Code" (modified in the PR) rather than legacy debt:

[ Developer Branch ] ──Pull Request──→ [ CI Scanner ] ──Analyze New Code──→ [ Quality Gate PASS / FAIL ]

sonar-project.properties Configuration

Defines source paths, exclusions, test execution reports, and lcov coverage targets:

# sonar-project.properties
sonar.projectKey=enterprise-api-service
sonar.projectName=Enterprise API Service
sonar.sources=src
sonar.tests=tests
sonar.exclusions=**/node_modules/**,**/dist/**,**/*.spec.ts
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.qualitygate.wait=true

SonarScanner CLI Execution

Runs static analysis and uploads results to SonarQube Server or SonarCloud:

sonar-scanner \
  -Dsonar.host.url=https://sonarqube.internal.corp \
  -Dsonar.token=$SONAR_TOKEN

Common Patterns

Maven / Gradle Sonar Scanner Pipeline

Problem: Code smells and security hotspots merge to main branch unnoticed.

Solution: Run Sonar analysis during standard build jobs:

# Analyze with Maven passing project key and token
mvn clean verify sonar:sonar \
  -Dsonar.projectKey=my_enterprise_app \
  -Dsonar.host.url=https://sonarqube.internal.net \
  -Dsonar.token=$SONAR_TOKEN \
  -Dsonar.qualitygate.wait=true

Best Practices

Do:

  • Enforce the Quality Gate on Pull Requests: Block merges if code coverage on new code is under 80% or if new security vulnerabilities are found.
  • Upload Real Code Coverage Reports: Ensure unit test runs output valid LCOV or JaCoCo XML reports consumed by SonarQube.
  • Review Security Hotspots Interactively: Investigate flagged security hotspots to confirm safe usage of cryptography and deserialization.
  • Use SonarLint in IDEs: Run instant local analysis in VS Code/JetBrains to fix code smells before committing.

Don't:

  • Attempt to fix all legacy technical debt at once: Adopt the Clean as You Code strategy; fix debt incrementally as files are modified.
  • Disable rules to bypass failing Quality Gates: Address underlying architectural smells rather than weakening inspection rules.
  • Run SonarScanner on untested code: Run tests and generate coverage reports before executing the Sonar scanner step.

Troubleshooting

Error Cause Solution
Quality Gate failed: Coverage is below threshold New code lacks adequate unit tests or report file missing. Ensure coverage reports (lcov, jacoco) are generated and path specified in config.
You are not authorized to run the analysis Invalid or expired SONAR_TOKEN. Regenerate user/project token in SonarQube user security settings.
Task failed: SonarQube server unreachable Network firewall or proxy blocking connection to internal Sonar server. Verify server status and ensure runner has network egress to host URL.

References