1. GİRİŞ VE TEMEL YAPI
1.1. SonarQube ve Kurumsal Değer
SonarQube Nedir?
SonarQube, SonarSource tarafından geliştirilen, kaynak kodun sürekli ve otomatik olarak analiz edilmesini sağlayan açık kaynak tabanlı bir statik kod analiz platformudur. Kodunuzu derlemeden veya çalıştırmadan analiz eder; hataları, güvenlik açıklarını, kod kokularını (code smells) ve teknik borçları tespit eder.
Temel Kavramlar
| Kavram | Açıklama |
|---|---|
| Bug | Çalışma zamanında beklenmeyen davranışa yol açabilecek kodlama hataları |
| Vulnerability | Güvenlik açığına yol açabilecek zayıf noktalar |
| Code Smell | Kodun çalışmasını engellemez ancak bakım maliyetini artıran kötü tasarım kalıpları |
| Security Hotspot | Manuel güvenlik incelemesi gerektiren potansiyel risk noktaları |
| Technical Debt | Kod kalitesi sorunlarını gidermek için gereken tahmini süre |
| Coverage | Birim testlerinin kodu ne kadar kapsadığını gösteren oran |
| Duplication | Kod tekrarı oranı |
SonarQube'ün Kurumsal Değeri
1. Yazılım Kalitesinin Standardizasyonu
- Tüm projeler için tek bir kalite standardı belirlenir
- 35+ programlama dilini destekler (Java, JavaScript, Python, C#, Go, Rust, Swift, Kotlin, COBOL vb.)
- AI tarafından üretilen kodlar dahil tüm kod kaynakları analiz edilir
2. Güvenlik Açıklarının Erken Tespiti (Shift-Left)
- SAST (Static Application Security Testing) ile güvenlik açıkları geliştirme aşamasında tespit edilir
- OWASP Top 10, CWE Top 25, PCI DSS, STIG gibi standartlara uyum raporları
- 400+ gizli bilgi (secret) kalıbı ile API anahtarı, şifre ve token sızıntılarını önler
3. Teknik Borç Yönetimi
- Teknik borç süre olarak hesaplanır (ör. 5 gün 3 saat)
- Yeni kod ve mevcut kod ayrımı ile önceliklendirme yapılır
- "Clean as You Code" felsefesi: Yeni yazılan kodun temiz olmasına odaklanılır
4. Maliyet Tasarrufu
- Bir hata ne kadar erken bulunursa düzeltme maliyeti o kadar düşük olur
SonarQube Edisyonları
| Edisyon | Özellikler |
|---|---|
| Community Build | Ücretsiz, temel analiz, 20+ dil, tek branch |
| Developer | Branch analizi, PR decoration, taint analizi |
| Enterprise | Portföy yönetimi, uyum raporları, 35+ dil, SAST, SCA, taint analizi |
| Data Center | Enterprise + yüksek erişilebilirlik (HA), yatay ölçekleme |
SonarQube Mimarisi
┌─────────────────────────────────────────────────────────────────┐
│ GELİŞTİRİCİ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
│ │ IDE │ │ Git Push│ │ CI/CD Pipeline │ │
│ │(SonarLint)│───│ │───│ (SonarScanner) │ │
│ └──────────┘ └──────────┘ └──────────┬────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ SonarQube Server │ │
│ │ ┌────────────────┐ │ │
│ │ │ Compute Engine │ │ │
│ │ │ (Analiz Motoru) │ │ │
│ │ └────────┬───────┘ │ │
│ │ │ │ │
│ │ ┌────────▼───────┐ │ │
│ │ │ Web Server │ │ │
│ │ │ (Dashboard) │ │ │
│ │ └────────────────┘ │ │
│ │ ┌────────────────┐ │ │
│ │ │ Database │ │ │
│ │ │ (PostgreSQL) │ │ │
│ │ └────────────────┘ │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
1.2. Platform Entegrasyonlarına Genel Bakış
Desteklenen Entegrasyonlar
SonarQube, modern yazılım geliştirme yaşam döngüsünün (SDLC) her aşamasına entegre olur:
DevOps Platformları
| Platform | Entegrasyon Özellikleri |
|---|---|
| GitHub (Enterprise & Cloud) | PR Decoration, SSO, GitHub Actions, monorepo desteği |
| GitLab (Self-Managed & Cloud) | MR Decoration, SSO, GitLab CI/CD |
| Azure DevOps | PR Decoration, Azure Pipelines, Azure AD SSO |
| Bitbucket (Cloud & Data Center) | PR Decoration, Bitbucket Pipelines |
CI/CD Araçları
| Araç | Entegrasyon Yöntemi |
|---|---|
| Jenkins | SonarQube Scanner Plugin |
| GitHub Actions | sonarsource/sonarqube-scan-action |
| GitLab CI/CD | sonar-scanner-cli Docker image |
| Azure Pipelines | SonarQube Extension |
| Bitbucket Pipelines | Pipe tabanlı entegrasyon |
| Codemagic | Mobil uygulama CI/CD |
IDE Entegrasyonları (SonarLint / SonarQube for IDE)
- VS Code, IntelliJ IDEA, Eclipse, Visual Studio, WebStorm, PyCharm
- Connected Mode ile sunucu kurallarıyla senkronizasyon
AI ve Agentic Entegrasyonlar (2025-2026 Yenilik)
- SonarQube MCP Server: Claude Code, Cursor, Windsurf, GitHub Copilot gibi AI araçlarıyla entegrasyon
- SonarSweep: LLM tarafından üretilen kodu otomatik iyileştirme
- AI Code Assurance: AI kodlarına özel kalite kapısı
İş Araçları Entegrasyonları
- Jira Cloud: Sorunları otomatik Jira ticket'larına dönüştürme
- Slack: Kalite kapısı durum bildirimlerini Slack kanallarına gönderme
- JFrog: Build evidence ve compliance doğrulama
Entegrasyon Akış Şeması
IDE (SonarLint) Git Repository CI/CD Pipeline
│ │ │
│ Anlık analiz │ Push/PR │ Otomatik tetikleme
│ & uyarılar │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ SONARQUBE SERVER │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Rules & │ │ Quality Gate │ │ Analiz Motoru │ │
│ │ Profiles │ │ Değerlendirme│ │ (SAST + SCA) │ │
│ └──────────┘ └──────────────┘ └────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Portfolio │ │ PR │ │ Raporlama │ │
│ │ Yönetimi │ │ Decoration │ │ (PDF / Dashboard) │ │
│ └──────────┘ └──────────────┘ └────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
Jira/Slack GitHub/GitLab Yönetim Raporları
Bildirimleri PR Yorumları & Uyum Raporları
2. KURUMSAL ERİŞİM VE YETKİLENDİRME YÖNETİMİ
2.1. Kullanıcı Yönetimi Temelleri (Basic ve LDAP/SSO)
Kimlik Doğrulama (Authentication) Yöntemleri
SonarQube, kurumsal ortamlara uygun çoklu kimlik doğrulama yöntemlerini destekler:
1. Yerleşik (Built-in) Kimlik Doğrulama
- SonarQube'ün kendi veritabanında kullanıcı bilgileri saklanır
- Küçük takımlar ve PoC (Proof of Concept) ortamları için uygundur
- Varsayılan admin hesabı:
admin / admin(ilk girişte değiştirilmelidir!)
Yapılandırma:
Administration → Security → Force Authentication = Enabled
Güvenlik Uyarısı: Üretim ortamında "Force Authentication" mutlaka aktif olmalıdır. Aksi halde anonim kullanıcılar projeleri görüntüleyebilir.
2. LDAP / Active Directory Entegrasyonu
LDAP entegrasyonu, kurumsal dizin servisleriyle (OpenLDAP, Microsoft Active Directory) merkezi kimlik doğrulama sağlar.
Temel Özellikler:
- Just-in-Time Provisioning: Kullanıcı ilk kez giriş yaptığında otomatik olarak SonarQube'de oluşturulur
- Otomatik Senkronizasyon: Ad, e-posta gibi bilgiler her girişte güncellenir
- Çoklu LDAP Sunucu Desteği: Farklı dizin sunucularına bağlantı ve yedeklilik
- Güvenlik Protokolleri: CRAM-MD5, DIGEST-MD5, GSSAPI desteği
sonar.properties Yapılandırma Örneği:
# LDAP Sunucu Yapılandırması
sonar.security.realm=LDAP
ldap.url=ldap://ldap.sirketiniz.com:389
# Bağlantı Bilgileri
ldap.bindDn=cn=sonarqube,ou=ServiceAccounts,dc=sirketiniz,dc=com
ldap.bindPassword=gizli_sifre
# Kullanıcı Eşleme
ldap.user.baseDn=ou=Users,dc=sirketiniz,dc=com
ldap.user.request=(&(objectClass=person)(sAMAccountName={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail
# Grup Eşleme (Yetkilendirme için)
ldap.group.baseDn=ou=Groups,dc=sirketiniz,dc=com
ldap.group.request=(&(objectClass=group)(member={dn}))
ldap.group.idAttribute=cn
Active Directory İçin Ek Not:
Microsoft Active Directory, LDAP protokolünü destekler. Yukarıdaki yapılandırma AD sunucuları için de geçerlidir. AD kullanıyorsanız sAMAccountName veya userPrincipalName ile kullanıcı eşlemesi yapabilirsiniz.
3. SAML 2.0 SSO (Single Sign-On)
SAML tabanlı SSO, kullanıcıların kimlik sağlayıcı (Identity Provider) üzerinden tek oturum açma ile SonarQube'e erişmesini sağlar.
Desteklenen Kimlik Sağlayıcılar:
- Okta
- Azure Active Directory (Entra ID)
- OneLogin
- Keycloak
- Auth0
SAML Yapılandırması (Administration → Configuration → Authentication → SAML):
| Parametre | Açıklama | Örnek Değer |
|---|---|---|
| Application ID | SP Entity ID | sonarqube |
| Provider Name | IdP adı | Okta |
| Provider ID | IdP Entity ID | http://www.okta.com/xxx |
| SAML Login URL | IdP SSO URL | https://sirket.okta.com/app/xxx/sso/saml |
| Identity Provider Certificate | IdP sertifikası | Base64 kodlanmış X.509 |
| SAML User Login Attribute | Kullanıcı adı alanı | login |
| SAML User Name Attribute | Görünen ad | name |
| SAML User Email Attribute | E-posta | email |
| SAML Group Attribute | Grup bilgisi | groups |
Yapılandırma Akışı:
1. IdP'de (Okta, Azure AD vb.) yeni bir SAML uygulaması oluşturun
2. SonarQube'ün ACS URL'ini ekleyin: https://sonarqube.sirketiniz.com/oauth2/callback/saml
3. IdP'den metadata bilgilerini alın
4. SonarQube Administration'da SAML ayarlarını yapılandırın
5. "Test Configuration" butonu ile doğrulayın
6. Başarılıysa SAML'ı etkinleştirin
4. DevOps Platform SSO
| Platform | Yapılandırma |
|---|---|
| GitHub SSO | GitHub OAuth App oluşturulur → Client ID/Secret SonarQube'e tanımlanır |
| GitLab SSO | GitLab Application oluşturulur → Application ID/Secret tanımlanır |
| Bitbucket SSO | OAuth Consumer oluşturulur |
İpucu: DevOps Platform SSO kullanıldığında, platformdaki grup bilgileri SonarQube'e aktarılabilir. Bu sayede yetkilendirme de merkezi olarak yönetilir.
Token Tabanlı Kimlik Doğrulama
CI/CD pipeline'ları ve API çağrıları için token kullanılır:
| Token Türü | Kullanım Alanı | Kapsam |
|---|---|---|
| User Token | Kullanıcı adına API erişimi | Kullanıcının tüm yetkileri |
| Project Analysis Token | Belirli proje analizi | Sadece hedef proje |
| Global Analysis Token | Tüm projelerin analizi | Tüm projeler (analiz izni) |
Token Oluşturma:
My Account → Security → Generate Tokens
Token Adı: "Jenkins-Pipeline-Token"
Tür: Project Analysis Token
Proje: my-java-project
Süre: 90 gün (önerilen)
Token oluşturulduktan sonra bir kez gösterilir, kaydedilmezse tekrar erişilemez!
2.2. Rol ve İzin Yapıları
Genel (Global) İzinler
Global izinler, SonarQube instance genelinde geçerli olan yetkilerdir:
| İzin | Açıklama | Tipik Rol |
|---|---|---|
| Administer System | Tüm sistem ayarlarını yönetme | SonarQube Admin |
| Administer Quality Profiles | Kalite profillerini oluşturma/düzenleme | Kalite Yöneticisi |
| Administer Quality Gates | Kalite kapılarını yönetme | Kalite Yöneticisi |
| Execute Analysis | Analiz çalıştırma (global düzeyde) | CI/CD Service Account |
| Create Projects | Yeni proje oluşturma | Takım Lideri |
| Create Applications | Uygulama (application) oluşturma | Portföy Yöneticisi |
| Create Portfolios | Portföy oluşturma | Üst Yönetim / CTO |
Proje Düzeyinde İzinler
Her proje için ayrı ayrı izin tanımlanabilir:
| İzin | Açıklama |
|---|---|
| Browse | Projeyi görüntüleme, dashboard ve sorunlara erişim |
| See Source Code | Kaynak kodu görüntüleme |
| Administer Issues | Sorun durumlarını değiştirme (false positive, won't fix vb.) |
| Administer Security Hotspots | Güvenlik hotspot'larını inceleme ve yönetme |
| Administer | Proje ayarlarını yönetme (kalite kapısı atama, izin düzenleme) |
| Execute Analysis | Bu projeye analiz gönderme |
İzin Şablonları (Permission Templates)
Yeni oluşturulan projelere otomatik olarak izin atamak için şablonlar kullanılır:
Administration → Security → Permission Templates
Örnek Şablon: "Microservice-Projesi"
| Grup | Browse | See Source | Administer Issues | Execute Analysis | Administer |
|---|---|---|---|---|---|
| developers | |||||
| tech-leads | |||||
| ci-cd-accounts | |||||
| security-team | |||||
| sonar-admins |
Şablon Uygulanma Koşulu:
- Proje adı belirli bir pattern ile eşleştiğinde otomatik uygulanır
- Örnek:
.*-service→ tüm*-serviceprojelerine bu şablon uygulanır
Grup Yönetimi ve RBAC (Role-Based Access Control)
Yerleşik Gruplar:
sonar-users: Tüm kayıtlı kullanıcılar (varsayılan)sonar-administrators: Sistem yöneticileri
Önerilen Grup Yapısı:
sonar-administrators → Sistem yöneticileri
quality-managers → Kalite profili ve kalite kapısı yöneticileri
security-auditors → Güvenlik inceleme ekibi
team-backend → Backend geliştirme ekibi
team-frontend → Frontend geliştirme ekibi
team-mobile → Mobil geliştirme ekibi
ci-cd-service → CI/CD pipeline service account'ları
management-viewers → Yönetim (sadece okuma yetkisi)
LDAP/SSO Grup Eşleme: LDAP veya SSO üzerinden gelen grup bilgileri, SonarQube'daki aynı isimdeki gruplarla otomatik eşleştirilir. Bu sayede kullanıcı izinleri merkezi dizin üzerinden yönetilir.
LDAP Grubu: "CN=developers,OU=Groups,DC=sirket,DC=com"
Otomatik Eşleşme
SonarQube Grubu: "developers"
→ Browse, See Source Code, Administer Issues izinleri
3. KALİTE VE GÜVENLİK STANDARTLARININ OLUŞTURULMASI
3.1. Kalite Kapısı (Quality Gate) Açıklama ve Oluşturma
Kalite Kapısı Nedir?
Kalite Kapısı (Quality Gate), kodunuzun üretime hazır olup olmadığını belirleyen koşullar kümesidir. Analiz sonuçları bu koşullarla karşılaştırılır ve kod ya geçer (Passed) ya da kalır (Failed).
Tek Soruyu Yanıtlar: "Bu kod üretime alınmaya hazır mı?"
Kalite Kapısı Nasıl Çalışır?
Kod Push / PR Açılır
│
▼
SonarScanner Analiz Yapar
│
▼
Analiz Sonuçları Hesaplanır
(Coverage, Bugs, Vulnerabilities...)
│
▼
Quality Gate Koşulları Kontrol Edilir
│
┌───┴───┐
│ │
PASSED FAILED
│ │
▼ ▼
PR PR Merge
Merge Engellenir
Edilir (Opsiyonel)
Yerleşik Kalite Kapıları
1. Sonar Way (Varsayılan)
Sonar'ın önerdiği, yeni koda odaklanan kalite kapısı:
| # | Koşul | Eşik | Uygulandığı Kod |
|---|---|---|---|
| 1 | Yeni sorun sayısı | 0 | Yeni Kod |
| 2 | Security Hotspot inceleme oranı | %100 | Yeni Kod |
| 3 | Test kapsama oranı (Coverage) | ≥ %80 | Yeni Kod |
| 4 | Tekrarlanan satır yoğunluğu (Duplication) | ≤ %3 | Yeni Kod |
2. Sonar Way for AI Code
AI tarafından üretilen kod içeren projeler için önerilen kalite kapısı:
- Standart Sonar Way koşullarına ek olarak AI Code Assurance koşulları içerir
- AI kodunun daha sıkı güvenlik kontrolünden geçmesini sağlar
Özel (Custom) Kalite Kapısı Oluşturma
Adımlar:
1. Quality Gates → Create (sağ üst köşe)
2. İsim girin: "Kurumsal-QualityGate"
3. Add Condition → Koşulları ekleyin
4. Set as Default (isteğe bağlı)
Örnek Kurumsal Kalite Kapısı:
| # | Metrik | Operatör | Eşik | Kapsam |
|---|---|---|---|---|
| 1 | Issues (Yeni sorunlar) | > | 0 | Yeni Kod |
| 2 | Security Hotspots Reviewed | < | 100% | Yeni Kod |
| 3 | Coverage | < | 80% | Yeni Kod |
| 4 | Duplicated Lines (%) | > | 3% | Yeni Kod |
| 5 | Reliability Rating | worse than | A | Yeni Kod |
| 6 | Security Rating | worse than | A | Yeni Kod |
| 7 | Maintainability Rating | worse than | A | Yeni Kod |
| 8 | Coverage | < | 60% | Genel Kod |
| 9 | Duplicated Lines (%) | > | 5% | Genel Kod |
Kalite Kapısı - Proje Eşleştirme
Manuel Eşleştirme:
Quality Gates → Kurumsal-QualityGate → Projects sekmesi → Proje seçin
Proje Tarafından Eşleştirme:
Project Settings → Quality Gate → Kalite kapısı seçin
Fudge Factor (Tolerans Mekanizması)
Küçük değişikliklerde (20 satırdan az yeni kod) coverage ve duplication koşulları göz ardı edilir. Bu, küçük düzeltmelerin kalite kapısını gereksiz yere engellemesini önler.
Administration → Configuration → General → Quality Gate Fudge Factor
Kalite Kapısı ve CI/CD Entegrasyonu
Kalite kapısı sonucu CI/CD pipeline'ına aktarılarak build'in başarısız olması sağlanabilir:
# SonarScanner çalıştırıldıktan sonra kalite kapısı sonucunu bekle
sonar-scanner -Dsonar.qualitygate.wait=true
Bu parametre ile:
- Quality Gate Passed → Pipeline devam eder
- Quality Gate Failed → Pipeline başarısız olur, merge engellenir
"Yeni Kod" (New Code) Tanımı
Kalite kapıları yeni kod üzerinde çalışır. "Yeni kod" tanımı yapılandırılabilir:
| Yöntem | Açıklama |
|---|---|
| Previous Version | Son versiyondan bu yana yapılan değişiklikler (önerilen) |
| Number of Days | Son X gün içindeki değişiklikler |
| Reference Branch | Belirli bir branch'e göre fark |
| Specific Analysis | Belirli bir analiz tarihinden itibaren |
Administration → Configuration → New Code → Default
veya
Project Settings → New Code
3.2. Custom Kural Ekleme (Quality Profiles)
Kalite Profili (Quality Profile) Nedir?
Kalite Profili, bir programlama dili için uygulanacak kurallar kümesidir. Her dil için bir kalite profili aktif olabilir ve bu profil analiz sırasında hangi kuralların uygulanacağını belirler.
Kalite Profili = Dil + Aktif Kurallar + Kural Özelleştirmeleri
Yerleşik Profiller
Her dil için "Sonar way" adında yerleşik bir profil gelir:
- Sonar uzmanlarının önerdiği en iyi kuralları içerir
- Salt okunur (read-only) olup düzenlenemez
- Yeni kurallar eklendikçe otomatik güncellenir
Özel Profil Oluşturma
Yöntem 1: Sonar Way'den Miras Alma (Önerilen)
1. Quality Profiles → Dil seçin (ör. Java)
2. Sonar way profili → Copy
3. Yeni isim: "Kurumsal-Java-Profili"
4. İstenmeyen kuralları devre dışı bırakın
5. Ek kuralları aktifleştirin
Yöntem 2: Sıfırdan Oluşturma
1. Quality Profiles → Create
2. Dil seçin
3. İsim girin
4. Kuralları tek tek aktifleştirin
Yöntem 3: Miras (Inheritance) ile Hiyerarşik Profiller
Sonar Way (Temel)
└── Kurumsal-Temel (Extend)
├── Kurumsal-Backend (Extend)
└── Kurumsal-Frontend (Extend)
Kural Yönetimi
Kuralları Keşfetme:
Rules → Dil filtreleri → Tür filtreleri → Etiket filtreleri
Kural Türleri:
| Tür | Simge | Açıklama |
|---|---|---|
| Bug | Programlama hataları | |
| Vulnerability | Güvenlik açıkları | |
| Code Smell | Bakım sorunları | |
| Security Hotspot | Manuel güvenlik incelemesi gerektiren noktalar |
Kural Ciddiyet Seviyeleri:
| Seviye | Açıklama |
|---|---|
| Blocker | Uygulamayı çökertebilecek veya ciddi güvenlik açığı oluşturacak hatalar |
| Critical | Beklenmeyen davranışa yol açabilecek veya küçük güvenlik açığı olan hatalar |
| Major | Geliştirici verimliliğini ciddi ölçüde etkileyen kalite sorunları |
| Minor | Geliştirici verimliliğini az etkileyen kalite sorunları |
| Info | Hata veya kalite sorunu olmayan, bilgilendirme amaçlı kurallar |
Kural Özelleştirme Örnekleri
Örnek 1: Maksimum Metot Uzunluğu Kuralını Ayarlama
Rules → Java → "Methods should not have too many lines"
→ Profilde aktifleştir
→ Parametreyi düzenle: max = 30 (varsayılan 100)
Örnek 2: Paket İsimlendirme Kuralı
Rules → Java → "Package names should comply with a naming convention"
→ format parametresi: "com\.sirketiniz\.[a-z]+(\.[a-z]+)*"
Örnek 3: Güvenlik Kurallarını Güçlendirme
Rules → Type: Vulnerability → Tag: owasp-top10
→ Tüm OWASP Top 10 kurallarını aktifleştirin
→ Ciddiyet: Blocker veya Critical olarak ayarlayın
Önceliklendirilmiş Kurallar (Prioritized Rules) - Enterprise
Enterprise edisyonunda, belirli kurallar "önceliklendirilmiş" olarak işaretlenebilir. Bu kuralların ihlali kalite kapısında ayrı bir koşul olarak değerlendirilir.
Quality Profile → Kural seçin → "Set as prioritized"
Kullanım Senaryosu: "SQL Injection kuralı ihlal edilirse, test coverage ne olursa olsun kalite kapısı başarısız olsun"
Profil Karşılaştırma ve Değişiklik İzleme
İki Profili Karşılaştırma:
Quality Profiles → Compare (herhangi iki profili karşılaştırın)
Değişiklik Geçmişi:
Quality Profiles → Profil seçin → Changelog
→ Hangi kuralların ne zaman eklenip/çıkarıldığı görüntülenir
Profil Yedekleme ve Geri Yükleme
Quality Profiles → Profil seçin → Back up (XML olarak indir)
Quality Profiles → Restore (XML'den geri yükle)
Bu özellik, profillerin farklı SonarQube instance'ları arasında taşınmasını sağlar.
4. GELİŞMİŞ ANALİZLER VE TEDARİK ZİNCİRİ GÜVENLİĞİ (SCA)
4.1. Branch Tarama Yapısı ve Pull Request Decoration
Branch Analizi
SonarQube (Developer edisyon ve üstü), birden fazla branch'i ayrı ayrı analiz edebilir:
Desteklenen Branch Türleri:
| Branch Türü | Analiz Davranışı |
|---|---|
| Main (Ana) Branch | Tüm kod analiz edilir, genel metrikler hesaplanır |
| Feature/Development Branch | Ana branch ile karşılaştırılarak yeni kodun kalitesi ölçülür |
| Release Branch | Ana branch gibi tam analiz yapılabilir |
Branch Analizi Yapılandırması:
# Ana branch analizi
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.host.url=https://sonarqube.sirketiniz.com \
-Dsonar.token=$SONAR_TOKEN
# Feature branch analizi
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.branch.name=feature/login-refactor \
-Dsonar.host.url=https://sonarqube.sirketiniz.com \
-Dsonar.token=$SONAR_TOKEN
Pull Request (PR) Analizi
PR analizi, merge edilmek üzere olan kodun kalitesini değerlendirir. Yalnızca yeni kod koşulları uygulanır.
# PR analizi
sonar-scanner \
-Dsonar.projectKey=my-project \
-Dsonar.pullrequest.key=42 \
-Dsonar.pullrequest.branch=feature/user-auth \
-Dsonar.pullrequest.base=main \
-Dsonar.host.url=https://sonarqube.sirketiniz.com \
-Dsonar.token=$SONAR_TOKEN
Pull Request Decoration
PR Decoration, analiz sonuçlarını doğrudan DevOps platformundaki PR sayfasında görüntüler:
┌─────────────────────────────────────────────────────────────┐
│ Pull Request #42: Feature/user-auth │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SonarQube Quality Gate: PASSED │ │
│ │ │ │
│ │ 5 New Issues (0 Bugs, 0 Vulnerabilities, │ │
│ │ 5 Code Smells) │ │
│ │ Coverage on New Code: 85.2% │ │
│ │ Duplication on New Code: 1.3% │ │
│ │ │ │
│ │ [View in SonarQube →] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Satır bazında yorumlar: │
│ ├── src/auth/UserService.java:45 - Bug: ... │
│ └── src/auth/TokenUtil.java:78 - Code Smell: ... │
└─────────────────────────────────────────────────────────────┘
PR Decoration Yapılandırması
GitHub Entegrasyonu
1. Administration → Configuration → DevOps Platform Integrations → GitHub
2. GitHub App oluşturun veya mevcut olanı kullanın
3. Configuration:
- GitHub API URL: https://api.github.com (veya Enterprise URL)
- GitHub App ID: <app-id>
- Client ID: <client-id>
- Client Secret: <client-secret>
- Private Key: <.pem dosyası içeriği>
GitLab Entegrasyonu
1. Administration → Configuration → DevOps Platform Integrations → GitLab
2. GitLab Personal Access Token oluşturun (api scope ile)
3. Configuration:
- GitLab API URL: https://gitlab.com (veya Self-Managed URL)
- Personal Access Token: <token>
Azure DevOps Entegrasyonu
1. Administration → Configuration → DevOps Platform Integrations → Azure DevOps
2. Azure DevOps Personal Access Token oluşturun (Code: Read & Write scope)
3. Configuration:
- Azure DevOps URL: https://dev.azure.com/organization
- Personal Access Token: <token>
PR Merge Engelleme
Kalite kapısı başarısız olduğunda PR merge'inin engellenmesi için:
| Platform | Yapılandırma |
|---|---|
| GitHub | Branch Protection Rules → Require status checks → "SonarQube Quality Gate" seçin |
| GitLab | Settings → Merge Requests → "Pipelines must succeed" + External Status Check |
| Azure DevOps | Branch Policies → Build Validation |
| Bitbucket | Branch Permissions → Merge Checks |
4.2. Yazılım Bileşen Analizi (SCA)
SCA (Software Composition Analysis) Nedir?
SCA, projenizdeki üçüncü parti (3rd party) kütüphaneleri ve bağımlılıkları analiz ederek güvenlik açıklarını, lisans risklerini ve tedarik zinciri tehditlerini tespit eden bir güvenlik analiz yöntemidir.
Neden Önemli: Modern uygulamaların %80-90'ı açık kaynak bileşenlerden oluşur. Bu bileşenlerdeki güvenlik açıkları, uygulamanızı doğrudan etkiler.
SonarQube Advanced Security kapsamında sunulan SCA, Enterprise ve Data Center edisyonlarında kullanılabilir.
SCA Mimarisi
Proje Kaynak Kodu
│
├── pom.xml / build.gradle (Java)
├── package.json / package-lock.json (JavaScript)
├── requirements.txt / Pipfile.lock (Python)
├── *.csproj / packages.config (.NET)
├── go.mod (Go)
├── Cargo.toml (Rust)
└── conanfile.txt (C/C++)
│
▼
┌────────────────────────────────┐
│ SonarQube SCA Motoru │
│ │
│ 1. Bağımlılık dosyalarını │
│ parse et │
│ 2. Doğrudan ve geçişli │
│ (transitive) bağımlılıkları│
│ çöz │
│ 3. Güvenlik açığı │
│ veritabanlarıyla karşılaştır│
│ 4. Lisans bilgilerini kontrol │
│ et │
│ 5. SBOM oluştur │
│ 6. Kötü amaçlı paketleri │
│ tespit et │
└────────────┬───────────────────┘
│
▼
┌────────────────────┐
│ Sonuç Raporları │
│ • Güvenlik Açıkları│
│ • Lisans İhlalleri │
│ • SBOM │
│ • Risk Skorları │
└────────────────────┘
3. Parti Kütüphane Güvenlik Açıkları
Güvenlik Açığı Tespiti
SonarQube SCA, bağımlılıklarınızı şu veritabanlarına karşı kontrol eder:
- NVD (National Vulnerability Database)
- GitHub Advisory Database
- Sonar Vulnerability Database (Sonar'ın kendi veritabanı)
- Maintainer Network (Açık kaynak bakımcılarından alınan içgörüler)
Güvenlik Açığı Görüntüleme
Proje → Dependencies sekmesi → Bağımlılık listesi
Her bağımlılık için:
├── Versiyon bilgisi
├── Doğrudan (direct) mı, geçişli (transitive) mi?
├── Bilinen güvenlik açıkları (CVE numaraları)
├── CVSS skoru (0-10)
├── Exploit edilebilirlik değerlendirmesi
├── Önerilen güvenli versiyon
└── Bakımcı güvenilirlik skoru
Örnek Güvenlik Açığı Raporu:
| Bağımlılık | Mevcut Versiyon | CVE | CVSS | Öneri |
|---|---|---|---|---|
| log4j-core | 2.14.1 | CVE-2021-44228 | 10.0 (Critical) | ≥ 2.17.1'e güncelle |
| jackson-databind | 2.9.8 | CVE-2019-14540 | 9.8 (Critical) | ≥ 2.15.0'a güncelle |
| commons-text | 1.9 | CVE-2022-42889 | 9.8 (Critical) | ≥ 1.10.0'a güncelle |
Sürekli İzleme (Continuous Monitoring)
SonarQube 2025.4 ve sonrası sürümlerde, yeni bir güvenlik açığı keşfedildiğinde yeniden analiz yapmaya gerek kalmadan otomatik olarak bildirim yapılır.
Kötü Amaçlı Paket Tespiti (2026.1 Yenilik)
SonarQube 2026.1 LTA ile birlikte, typosquatting ve dependency confusion gibi saldırı vektörlerine karşı proaktif kötü amaçlı paket tespiti özelliği eklenmiştir.
Yazılım Lisansları Kontrolü
Lisans Profili Oluşturma
SonarQube SCA, üçüncü parti kütüphanelerin lisanslarını kontrol ederek uyumsuzlukları tespit eder.
Lisans Kategorileri:
| Kategori | Örnekler | Risk Seviyesi |
|---|---|---|
| Permissive | MIT, Apache 2.0, BSD | Düşük |
| Weak Copyleft | LGPL, MPL | Orta |
| Strong Copyleft | GPL v2, GPL v3, AGPL | Yüksek |
| Commercial | Ticari lisanslar | Değişken |
| Unknown | Lisans bilgisi bulunamayan | Yüksek |
Lisans Politikası Yapılandırması:
Administration → Configuration → SCA → License Profiles
Politika Seçenekleri:
├── Allowed (İzin Verilen): MIT, Apache 2.0, BSD
├── Prohibited (Yasaklanan): GPL v3, AGPL
└── Review Required (İnceleme Gerekli): LGPL, bilinmeyen lisanslar
Kurumsal Lisans Politikası Örneği:
İzin Verilen:
- MIT License
- Apache License 2.0
- BSD 2-Clause / 3-Clause
- ISC License
- CC0 1.0 Universal
İnceleme Gerekli:
- LGPL v2.1 / v3
- MPL 2.0
- EPL 2.0
- Bilinmeyen Lisanslar
Yasaklanan:
- GPL v2 / v3
- AGPL v3
- SSPL
- CC BY-SA (kod için)
SBOM (Software Bill of Materials)
SonarQube, projelerin bağımlılık haritasını SBOM formatında oluşturur:
Desteklenen Formatlar:
- CycloneDX
- SPDX
Kullanım Alanları:
- Denetim ve uyum (audit & compliance)
- Tedarik zinciri şeffaflığı
- Yeni bir CVE yayınlandığında etkilenen projelerin hızlıca tespit edilmesi
4.3. IDE Entegrasyonu (SonarLint / SonarQube for IDE)
SonarQube for IDE (Eski adıyla SonarLint) Nedir?
SonarQube for IDE, geliştiricilerin kodlama sırasında anlık geri bildirim almasını sağlayan ücretsiz bir IDE eklentisidir. Kod yazılırken hataları, güvenlik açıklarını ve kod kokularını tespit eder.
Desteklenen IDE'ler
| IDE | Desteklenen Diller |
|---|---|
| VS Code | JS, TS, Python, Java, C, C++, Go, PHP ve daha fazlası |
| IntelliJ IDEA | Java, Kotlin, Scala, Python ve JetBrains ekosistemi |
| Eclipse | Java, C/C++ |
| Visual Studio | C#, VB.NET, C, C++ |
| PyCharm | Python |
| WebStorm | JS, TS |
Kurulum
VS Code için:
1. Extensions → "SonarQube for IDE" arayın
2. Install
3. VS Code'u yeniden başlatın
IntelliJ IDEA için:
1. Settings → Plugins → Marketplace
2. "SonarQube" arayın
3. Install & Restart
Connected Mode (Bağlı Mod)
Connected Mode, IDE eklentisini SonarQube Server'a bağlayarak kuralların ve konfigürasyonun senkronize edilmesini sağlar.
Bağlı Mod Avantajları:
- Sunucudaki kalite profilleri IDE'ye indirilir
- Kural değişiklikleri otomatik senkronize edilir
- Sunucuda "Won't Fix" veya "False Positive" olarak işaretlenmiş sorunlar IDE'de gizlenir
- Sunucudaki taint analizi sonuçları IDE'de gösterilir (güvenlik açıkları)
- SCA bağımlılık riskleri IDE'de görüntülenir (2025.4+)
- Gizli bilgi (secret) tespiti
VS Code Connected Mode Yapılandırması:
// settings.json
{
"sonarlint.connectedMode.connections.sonarqube": [
{
"serverUrl": "https://sonarqube.sirketiniz.com",
"token": "<user-token>"
}
],
"sonarlint.connectedMode.project": {
"connectionId": "sonarqube.sirketiniz.com",
"projectKey": "my-java-project"
}
}
Geliştirici Deneyimi
Geliştirici Kod Yazar
│
▼
SonarQube for IDE Anlık Analiz Yapar
│
├── Bug: NullPointerException riski (satır 45)
├── Vulnerability: SQL Injection (satır 78)
├── Code Smell: Metot çok uzun (satır 12-95)
└── Secret: Hardcoded password (satır 33)
│
▼
Geliştirici Commit YAPMADAN Düzeltir
│
▼
Temiz kod push edilir → CI/CD'de Quality Gate geçer
Sonuç: SonarQube for IDE, sorunların en erken ve en ucuz aşamada (geliştirici masasında) tespit edilmesini sağlar. Bu, "Shift-Left" yaklaşımının en somut uygulamasıdır.
5. UYGULAMA VE RAPORLAMA (CI/CD ENTEGRASYONU)
5.1. CI/CD Entegrasyonları ve Analiz Akışı
Genel Analiz Akışı
┌──────────────────────────────────────────────────────────────────┐
│ CI/CD PIPELINE │
│ │
│ ┌────────┐ ┌──────────┐ ┌───────────┐ ┌────────────┐ │
│ │ Build │───│ Test │───│ SonarQube │───│ Quality │ │
│ │ │ │ & Cover │ │ Analysis │ │ Gate Check │ │
│ └────────┘ └──────────┘ └───────────┘ └──────┬─────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ PASSED? │ │
│ └────┬────┘ │
│ YES │ NO │
│ │ │ │ │
│ ▼ ▼ │
│ ┌──────────┐ FAIL │
│ │ Deploy │ │
│ └──────────┘ │
└──────────────────────────────────────────────────────────────────┘
SonarScanner Türleri
| Scanner | Kullanım Alanı |
|---|---|
| SonarScanner CLI | Genel amaçlı, herhangi bir dil |
| SonarScanner for Maven | Maven tabanlı Java projeleri |
| SonarScanner for Gradle | Gradle tabanlı Java/Kotlin projeleri |
| SonarScanner for .NET | .NET projeleri (MSBuild) |
| SonarScanner for npm | Node.js/JavaScript projeleri |
Proje Yapılandırma Dosyası
sonar-project.properties:
# Proje Tanımlama
sonar.projectKey=com.sirketiniz:my-service
sonar.projectName=My Microservice
sonar.projectVersion=2.1.0
# Kaynak Kod Yolları
sonar.sources=src/main
sonar.tests=src/test
sonar.java.binaries=target/classes
# Dahil Etme / Hariç Tutma
sonar.inclusions=**/*.java,**/*.xml
sonar.exclusions=**/generated/**,**/test/**
sonar.test.inclusions=**/*Test.java,**/*IT.java
# Kodlama
sonar.sourceEncoding=UTF-8
# Test Kapsama Raporu
sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml
# Bağlantı Bilgileri (CI/CD değişkenlerinden alınmalı)
# sonar.host.url=${SONAR_HOST_URL}
# sonar.token=${SONAR_TOKEN}
CI/CD Platform Entegrasyonları
1. Jenkins Entegrasyonu
Gereksinimler:
- SonarQube Scanner for Jenkins Plugin
- SonarQube sunucu tanımı (Manage Jenkins → Configure System)
Jenkinsfile (Declarative Pipeline):
pipeline {
agent any
environment {
SONAR_TOKEN = credentials('sonarqube-token')
}
stages {
stage('Build') {
steps {
sh 'mvn clean compile'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
jacoco execPattern: 'target/jacoco.exec'
}
}
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('SonarQube-Server') {
sh '''
mvn sonar:sonar \
-Dsonar.projectKey=my-service \
-Dsonar.host.url=${SONAR_HOST_URL} \
-Dsonar.token=${SONAR_TOKEN}
'''
}
}
}
stage('Quality Gate') {
steps {
timeout(time: 5, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'kubectl apply -f k8s/'
}
}
}
}
2. GitHub Actions Entegrasyonu
.github/workflows/sonarqube.yml:
name: SonarQube Analysis
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
sonarqube:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Tam git geçmişi (blame analizi için)
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Build & Test
run: mvn clean verify
- name: SonarQube Scan
uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
- name: Quality Gate Check
uses: sonarsource/sonarqube-quality-gate-action@master
timeout-minutes: 5
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
3. GitLab CI/CD Entegrasyonu
.gitlab-ci.yml:
stages:
- build
- test
- analysis
- deploy
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
build:
stage: build
image: maven:3.9-eclipse-temurin-17
script:
- mvn clean compile
artifacts:
paths:
- target/
test:
stage: test
image: maven:3.9-eclipse-temurin-17
script:
- mvn test
artifacts:
paths:
- target/
reports:
junit: target/surefire-reports/TEST-*.xml
sonarqube-analysis:
stage: analysis
image: sonarsource/sonar-scanner-cli:latest
variables:
SONAR_TOKEN: "${SONAR_TOKEN}"
SONAR_HOST_URL: "${SONAR_HOST_URL}"
script:
- sonar-scanner
-Dsonar.projectKey=${CI_PROJECT_NAME}
-Dsonar.qualitygate.wait=true
allow_failure: false
only:
- main
- merge_requests
4. Azure Pipelines Entegrasyonu
azure-pipelines.yml:
trigger:
branches:
include:
- main
- develop
pr:
branches:
include:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: SonarQubePrepare@6
inputs:
SonarQube: 'SonarQube-Connection'
scannerMode: 'MSBuild'
projectKey: 'my-dotnet-project'
projectName: 'My .NET Project'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
- task: DotNetCoreCLI@2
inputs:
command: 'test'
arguments: '--collect:"Code Coverage"'
- task: SonarQubeAnalyze@6
- task: SonarQubePublish@6
inputs:
pollingTimeoutSec: '300'
Webhook Yapılandırması
SonarQube, analiz tamamlandığında webhook ile bildirim gönderir:
Administration → Configuration → Webhooks → Create
URL: https://jenkins.sirketiniz.com/sonarqube-webhook/
Secret: <güvenli-anahtar>
Webhook Payload Örneği:
{
"serverUrl": "https://sonarqube.sirketiniz.com",
"taskId": "AXoR...",
"status": "SUCCESS",
"analysedAt": "2026-02-19T10:30:00+0300",
"project": {
"key": "my-service",
"name": "My Microservice"
},
"qualityGate": {
"status": "OK",
"conditions": [
{
"metric": "new_coverage",
"operator": "LESS_THAN",
"value": "85.3",
"status": "OK",
"errorThreshold": "80"
}
]
}
}
5.2. Kurumsal Yönetimsel Raporlama (Portföy ve PDF Raporları)
Portföy Yönetimi (Enterprise Edisyon)
Portföy, birden fazla projeyi mantıksal gruplar halinde organize ederek üst düzey bir görünüm sunar.
Hiyerarşi:
Portföy: "Kurumsal Yazılım Portföyü"
├── Alt Portföy: "Müşteri Uygulamaları"
│ ├── Proje: web-frontend
│ ├── Proje: mobile-app
│ └── Proje: customer-api
├── Alt Portföy: "İç Sistemler"
│ ├── Proje: erp-backend
│ ├── Proje: hr-system
│ └── Proje: reporting-service
└── Alt Portföy: "Altyapı"
├── Proje: api-gateway
├── Proje: config-server
└── Proje: logging-service
Portföy Oluşturma:
1. Administration → Projects → Portfolios → Create Portfolio
2. İsim ve açıklama girin
3. Proje ekleme yöntemi seçin:
a. Manuel: Projeleri tek tek seçin
b. Etiket tabanlı: Belirli etikete sahip projeleri otomatik ekle
c. Regex tabanlı: Proje adı kalıbıyla otomatik ekle
4. Alt portföyler oluşturun (gerekirse)
Portföy Dashboard Metrikleri
Portföy sayfasında görüntülenen özet metrikler:
| Metrik | Açıklama |
|---|---|
| Reliability Rating | Tüm projelerin güvenilirlik ortalaması (A-E) |
| Security Rating | Tüm projelerin güvenlik ortalaması (A-E) |
| Maintainability Rating | Tüm projelerin bakım yapılabilirlik ortalaması (A-E) |
| Security Review Rating | Güvenlik hotspot inceleme oranı |
| Coverage | Ortalama test kapsama oranı |
| Duplications | Ortalama kod tekrarı oranı |
| Lines of Code | Toplam kod satır sayısı |
| Quality Gate Status | Portföydeki projelerin kaçının kalite kapısını geçtiği |
Application (Uygulama) Görünümü
Birden fazla projeden oluşan tek bir uygulamayı (ör. microservice mimarisi) bir bütün olarak değerlendirmek için Application kullanılır:
Application: "E-Ticaret Platformu"
├── order-service (Java)
├── payment-service (Java)
├── product-catalog (Node.js)
├── user-service (Python)
└── web-frontend (TypeScript)
PDF Raporları (Enterprise Edisyon)
SonarQube Enterprise, yönetim sunumları için kullanılabilecek PDF raporları üretir:
Rapor Türleri:
| Rapor | İçerik | Hedef Kitle |
|---|---|---|
| Executive PDF Report | Portföy düzeyinde özet metrikler, trend grafikleri | CTO, VP of Engineering |
| Uyum Raporları | OWASP Top 10, CWE Top 25, PCI DSS, STIG uyum durumu | Güvenlik ekibi, denetçiler |
| OWASP Top 10 Report | OWASP kategorilerine göre güvenlik açıkları | Güvenlik mühendisleri |
| OWASP Top 10 for LLM | LLM/AI uygulamalarına özel güvenlik raporu | AI/ML ekipleri |
| OWASP MASVS | Mobil uygulama güvenlik doğrulama standardı | Mobil geliştirme ekibi |
| CWE Top 25 (2024) | En yaygın 25 yazılım zayıflığı | Geliştirme ekipleri |
| STIG V6R3 | DoD güvenlik teknik uygulama kılavuzu | Kamu/savunma projeleri |
| PCI DSS | Ödeme kartı endüstrisi veri güvenliği standardı | Finans/e-ticaret |
PDF Rapor Oluşturma:
Portföy veya Proje sayfası → "Download PDF Report" butonu
→ Rapor arka planda oluşturulur
→ Hazır olduğunda indirilir
Uyum (Compliance) Raporları
OWASP Top 10 (2025) Raporu Örnek İçeriği:
| # | Kategori | Proje Durumu | Bulgu Sayısı |
|---|---|---|---|
| A01 | Broken Access Control | 3 vulnerability | |
| A02 | Cryptographic Failures | 0 | |
| A03 | Injection | 1 hotspot | |
| A04 | Insecure Design | 0 | |
| A05 | Security Misconfiguration | 0 | |
| A06 | Vulnerable & Outdated Components | 5 (SCA) | |
| A07 | Identification & Authentication Failures | 0 | |
| A08 | Software & Data Integrity Failures | 0 | |
| A09 | Security Logging & Monitoring Failures | 2 hotspot | |
| A10 | Server-Side Request Forgery | 0 |
Bildirim ve Uyarı Yönetimi
Kişisel Bildirimler:
My Account → Notifications
├── Kalite kapısı durumu değişikliği
├── Yeni sorun atanması
├── "Won't Fix" veya "False Positive" olarak işaretlenen sorunlar
└── Proje durumu değişiklikleri
Webhook Tabanlı Entegrasyonlar:
| Hedef | Kullanım |
|---|---|
| Slack | Kalite kapısı durumlarını kanala bildir |
| Jira | Kritik sorunları otomatik ticket oluştur |
| Microsoft Teams | Webhook ile bildirim gönder |
| PagerDuty | Kritik güvenlik açıklarında alarm tetikle |
Slack Entegrasyonu (2025.6+)
SonarQube 2025.6 ve sonrası sürümlerde native Slack entegrasyonu:
Administration → Configuration → Slack
→ Slack Workspace bağlantısı kur
→ Kanal eşleştirmeleri tanımla
→ Bildirim türlerini seç (Quality Gate değişikliği vb.)
Jira Entegrasyonu
Administration → Configuration → Jira
→ Jira Cloud URL ve API token tanımla
→ Proje eşleştirmelerini yapılandır
→ Sorun türü ve öncelik eşleştirmelerini belirle
Jira Entegrasyonu ile:
- SonarQube sorunları otomatik Jira issue'larına dönüşür
- Teknik borç görünür ve takip edilebilir hale gelir
- Sprint planlama ile teknik borç azaltma çalışmaları koordine edilir
EK: HIZLI BAŞVURU KARTI
Önemli URL'ler ve Kaynaklar
| Kaynak | URL |
|---|---|
| SonarQube Server Dokümantasyonu | https://docs.sonarsource.com/sonarqube-server/latest/ |
| SonarQube Kural Kataloğu | https://rules.sonarsource.com/ |
| SonarSource Community | https://community.sonarsource.com/ |
| SonarQube for IDE (VS Code) Dokümantasyonu | https://docs.sonarsource.com/sonarqube-for-ide/vs-code/ |
| SonarQube Güvenlik Açığı Veritabanı | https://www.sonarsource.com/products/sonarqube/advanced-security/ |
| SonarQube MCP Server | https://docs.sonarsource.com/sonarqube-mcp-server |
Sık Kullanılan sonar-scanner Parametreleri
# Temel Parametreler
-Dsonar.projectKey=proje-anahtari
-Dsonar.projectName="Proje Adı"
-Dsonar.host.url=https://sonarqube.sirketiniz.com
-Dsonar.token=xxx
# Branch / PR
-Dsonar.branch.name=feature/xxx
-Dsonar.pullrequest.key=42
-Dsonar.pullrequest.branch=feature/xxx
-Dsonar.pullrequest.base=main
# Kaynak ve Test
-Dsonar.sources=src/main
-Dsonar.tests=src/test
-Dsonar.exclusions=**/generated/**
# Kalite Kapısı
-Dsonar.qualitygate.wait=true
-Dsonar.qualitygate.timeout=300
Sorun Giderme Kontrol Listesi
- SonarQube sunucusu erişilebilir mi? (
curl https://sonarqube.sirketiniz.com/api/system/status) - Token geçerli mi ve süresi dolmamış mı?
-
sonar-project.propertiesdosyası proje kök dizininde mi? -
sonar.sourcesdoğru yolu gösteriyor mu? - Java projeleri için
sonar.java.binariestanımlı mı? - Coverage raporu doğru yolda mı?
- Compute Engine'de pending task birikmiş mi?
- Yeterli disk alanı ve bellek var mı?
Not: Bu doküman SonarQube Server 2026.1 LTA sürümü temel alınarak hazırlanmıştır. Bazı özellikler edisyona göre değişiklik gösterebilir.