SonarQube Nedir?
SonarQube; Clean Code ilkeleri doğrultusunda kodunuza statik analiz uygular, bugs, vulnerabilities, code smells, coverage ve duplications gibi metrikleri ölçer. Quality Gate ile ekiplerin minimum kalite eşiğini korumasına yardımcı olur, Security Hotspots ve kurallar (rules) ile güvenlik risklerini görünür kılar.
NUVIA’da SonarQube; monorepo ve mikroservis projelerinde merkezi kalite politikası, PR bazlı analiz ve build kırma (fail the build) mekanizmasıyla kullanılır.
Ölçümler ve Göstergeler
- Bugs & Vulnerabilities: Hatalar ve güvenlik açıkları.
- Code Smells: Bakımı zorlaştıran kokular; temiz kod önerileri.
- Coverage: Test kapsaması (unit/integration).
- Duplications: Yinelenen kod oranı.
- Security Hotspots: İnsan incelemesi gerektiren güvenlik odaklı noktalar.
- Maintainability / Reliability / Security Rating: A→E aralığında derecelendirme.
Quality Gate & Quality Profile
- Quality Gate: PR ve main dalında asgari eşikler (ör. yeni kodda ≥%80 coverage, kritik açık = 0, dupl. ≤%3).
- Quality Profile: Dil başına aktif kural seti. Kurumsal ihtiyaçlara göre özelleştirilir.
- Pull Request Decoration: PR üzerinde sonuçların yorum/denetim olarak görünmesi.
Kurulum & Entegrasyon
Sunucu, Docker imajı ile hızlıca başlatılabilir; analiz için SonarScanner, Maven/Gradle eklentileri veya .NET Scanner kullanılır.
# Docker ile SonarQube (örnek)
docker run -d --name sonarqube -p 9000:9000 sonarqube:lts
# sonar-project.properties (JS/TS örneği)
sonar.projectKey=org_app_web
sonar.sources=src
sonar.tests=src
sonar.test.inclusions=**/*.test.ts,**/*.spec.ts
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.exclusions=**/*.min.js,**/dist/**
CI/CD Entegrasyon Örnekleri
GitHub Actions
# .github/workflows/sonarqube.yml
name: SonarQube
on: [pull_request, push]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci && npm test -- --ci && npm run build && npm run coverage
- name: SonarScanner
run: |
curl -sSLo scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-5.0.1.3006-linux.zip
unzip -q scanner.zip
./sonar-scanner-*/bin/sonar-scanner -Dsonar.host.url=${{ secrets.SONAR_HOST_URL }} -Dsonar.login=${{ secrets.SONAR_TOKEN }}
Azure DevOps Pipelines
# Özet: Hazır görevlerle üç adım
# 1) Prepare Analysis Configuration
# 2) Run Code Analysis
# 3) Publish Quality Gate Result
# (Kurulum için SonarQube hizmet bağlantısı gerekir.)
En İyi Uygulamalar
- Yeni kodu (New Code) odak alın; eski borçları kademeli azaltın.
- Quality Gate’i zorunlu kılın; başarısız olduğunda birleşmeyi engelleyin.
- Kapsam raporlarını CI’da üretin ve yükleyin.
- Kuralları körleşmeden özelleştirin; yanlış pozitifleri gözden geçirin.
- Güvenlik sıcak noktalarını (hotspots) manuel gözden geçirme sürecine dahil edin.
Resmî Kaynaklar
- SonarQube Docs: https://docs.sonarqube.org/
- SonarScanner CLI: CLI
Sık Sorulanlar
Coverage neden görünmüyor?
Test aracı LCOV/JaCoCo gibi bir rapor üretmeli ve yolunu sonar.javascript.lcov.reportPaths
veya dilinize uygun anahtar ile iletmelisiniz.
SonarQube vs SonarCloud?
SonarQube kendi sunucunuzda barındırılır; SonarCloud SaaS sürümüdür. Kurumsal regülasyon ve veri mahremiyeti ihtiyaçlarına göre seçim yapılır.