All writing

SonarQube Arayüz Adım Adım Rehberi

1. İLK GİRİŞ VE DASHBOARD TURU

1.1. İlk Giriş

1. Tarayıcıda SonarQube URL'ini açın
   → https://sonarqube.sirketiniz.com

2. Varsayılan kimlik bilgileri ile giriş yapın
   → Kullanıcı: admin
   → Şifre: admin

3. Şifre değiştirme ekranı gelecektir
   → Yeni güçlü şifre belirleyin
   → "Update" butonuna tıklayın

1.2. Ana Sayfa (Projects) Turu

Giriş yapıldığında "Projects" sayfası açılır.

Gösterilecekler:
├── Sol üst: SonarQube logosu (ana sayfaya dönüş)
├── Üst menü çubuğu:
│   ├── "Projects"      → Tüm projelerin listesi
│   ├── "Issues"         → Tüm sorunlar (projeler arası)
│   ├── "Rules"          → Kural kataloğu
│   ├── "Quality Profiles" → Kalite profilleri
│   ├── "Quality Gates"  → Kalite kapıları
│   └── "Administration" → Sistem yönetimi (admin yetkisi gerekli)
├── Sağ üst:
│   ├── Arama ikonu (proje/sorun arama)
│   ├── "+" butonu (yeni proje oluşturma)
│   └── Kullanıcı avatarı → My Account, Log Out
└── Proje listesi:
    ├── Her proje kartında: Quality Gate durumu (Passed/Failed)
    ├── Filtreler: dil, kalite kapısı durumu, etiket
    └── Sıralama: isim, son analiz tarihi, kod satır sayısı

1.3. Proje Detay Sayfası Turu

Projects → Herhangi bir projeye tıklayın

Proje sayfası sekmeleri:
├── "Overview"        → Özet dashboard (Quality Gate, metrikler)
├── "Issues"          → Bu projedeki tüm sorunlar
├── "Security Hotspots" → Güvenlik hotspot'ları
├── "Measures"        → Detaylı metrikler ve grafikler
├── "Code"            → Kaynak kod görüntüleme
├── "Activity"        → Analiz geçmişi ve trend grafikleri
├── "Dependencies"    → Bağımlılık listesi (SCA, Enterprise)
└── "Project Settings" → Proje ayarları (yetki gerekli)

Overview sayfasında gösterilecekler:
├── Quality Gate durumu (büyük Passed/Failed etiketi)
├── Yeni Kod / Genel Kod geçişi (iki sekme)
├── Yeni Kod metrikleri:
│   ├── Yeni sorun sayısı
│   ├── Coverage on New Code (%)
│   ├── Duplications on New Code (%)
│   └── Security Hotspots Reviewed (%)
└── Genel Kod metrikleri:
    ├── Bugs / Vulnerabilities / Code Smells sayıları
    ├── Reliability / Security / Maintainability Rating (A-E)
    ├── Coverage (%)
    ├── Duplications (%)
    └── Lines of Code

1.4. Sistem Durumu Kontrolü

Administration → System

Gösterilecekler:
├── System Info: Versiyon, edisyon, uptime
├── Compute Engine: Bekleyen/çalışan analiz görevleri
├── Search Engine: Elasticsearch durumu
├── Database: Bağlantı durumu
└── Plugins: Yüklü eklentiler

2. KULLANICI VE YETKİLENDİRME YÖNETİMİ

2.1. Force Authentication Açma

1. Administration → Configuration → General Settings
2. Sol menüden "Security" seçin
3. "Force user authentication" → ON yapın
4. "Save" butonuna tıklayın

 Demo: Farklı bir tarayıcıda (veya gizli sekmede) giriş yapmadan
   SonarQube URL'ine gidin → Login ekranına yönlendirildiğini gösterin

2.2. Yerel Kullanıcı Oluşturma

1. Administration → Security → Users
2. Sağ üstteki "Create User" butonuna tıklayın
3. Formu doldurun:
   ├── Login: demo.developer
   ├── Name: Demo Geliştirici
   ├── Email: demo@sirketiniz.com
   └── Password: güçlü bir şifre girin
4. "Create" butonuna tıklayın

5. Oluşturulan kullanıcıyı listede gösterin:
   ├── Kullanıcı adı ve e-posta
   ├── Grupları (varsayılan: sonar-users)
   ├── Son giriş tarihi
   ├── Token sayısı
   └── SCM hesapları

2.3. Grup Oluşturma

1. Administration → Security → Groups
2. Mevcut grupları gösterin:
   ├── sonar-users (herkes otomatik eklenir)
   └── sonar-administrators (sistem yöneticileri)

3. Sağ üstteki "Create Group" butonuna tıklayın
4. Grup bilgilerini girin:
   ├── Name: backend-developers
   └── Description: Backend geliştirme ekibi
5. "Create" butonuna tıklayın

6. Aynı şekilde ek gruplar oluşturun:
   ├── frontend-developers
   ├── security-team
   ├── quality-managers
   └── ci-cd-accounts

7. Gruba kullanıcı ekleme:
   ├── Grup satırındaki üye sayısına tıklayın
   ├── "Select user" alanına kullanıcı adını yazın
   ├── Kullanıcıyı seçin → otomatik eklenir
   └── Eklenen kullanıcıların listesini gösterin

2.4. Global İzinler Yapılandırma

1. Administration → Security → Global Permissions

2. İzin matrisini gösterin (satırlar: gruplar/kullanıcılar, sütunlar: izinler)

3. Örnek yapılandırma yapın:
   ├── quality-managers grubuna:
   │   ├── "Administer Quality Profiles" →  işaretle
   │   └── "Administer Quality Gates"    →  işaretle
   │
   ├── ci-cd-accounts grubuna:
   │   └── "Execute Analysis"            →  işaretle
   │
   └── security-team grubuna:
       └── (global izin vermeyin, proje bazında verilecek)

4. Her bir checkbox tıklandığında anında kaydedildiğini belirtin

2.5. Proje Bazında İzin Verme

1. Projects → Bir proje seçin → Project Settings → Permissions

2. İzin matrisini gösterin:
   ├── Browse
   ├── See Source Code
   ├── Administer Issues
   ├── Administer Security Hotspots
   ├── Execute Analysis
   └── Administer

3. Grup bazında izin verin:
   ├── backend-developers:
   │   ├── Browse             → 
   │   ├── See Source Code    → 
   │   └── Administer Issues  → 
   │
   ├── ci-cd-accounts:
   │   └── Execute Analysis   → 
   │
   └── security-team:
       ├── Browse             → 
       ├── See Source Code    → 
       └── Administer Security Hotspots → 

4. Tek bir kullanıcıya özel izin vermek için:
   └── Alt kısımda "Search for users" alanına kullanıcı adı yazın
       → Kullanıcıyı ekleyin ve izinlerini işaretleyin

2.6. İzin Şablonu (Permission Template) Oluşturma

1. Administration → Security → Permission Templates

2. Mevcut "Default template" şablonunu gösterin

3. "Create" butonuna tıklayın:
   ├── Name: Microservice-Template
   └── Description: Microservice projeleri için standart izin şablonu
   └── Project Key Pattern: .*-service
       (opsiyonel: bu kalıba uyan projelere otomatik uygulanır)

4. "Create" butonuna tıklayın

5. Oluşturulan şablonun izin matrisini yapılandırın:
   ├── sonar-users:        Browse 
   ├── backend-developers: Browse , See Source , Admin Issues 
   ├── ci-cd-accounts:     Execute Analysis 
   └── quality-managers:   Tüm izinler 

6. Şablonu varsayılan yapmak için:
   └── Şablon satırındaki "" → "Set Default" tıklayın

 Demo: Yeni bir proje oluşturun ve izinlerinin şablondan
   otomatik geldiğini gösterin

2.7. SAML SSO Yapılandırması

1. Administration → Configuration → Authentication → SAML

2. Aşağıdaki alanları doldurun (veya doldurulmuş halde gösterin):
   ├── Enabled: (henüz OFF bırakın)
   ├── Application ID: sonarqube
   ├── Provider Name: Okta (veya Azure AD)
   ├── Provider ID: IdP'den kopyalanan Entity ID
   ├── SAML login url: IdP'den kopyalanan SSO URL
   ├── Identity provider certificate: IdP sertifikası (Base64)
   ├── SAML user login attribute: login
   ├── SAML user name attribute: name
   ├── SAML user email attribute: email
   └── SAML group attribute: groups

3. "Test Configuration" butonuna tıklayın
   → Yeni pencerede test sonucu gösterilir
   → Başarılıysa kullanıcı bilgileri listelenir

4. Test başarılıysa:
   └── Enabled: ON yapın → "Save"

 Not: SAML yapılandırması için önce IdP tarafında
   (Okta/Azure AD) uygulama oluşturulmuş olmalıdır.
   Demo ortamında önceden hazırlanmalıdır.

2.8. Token Oluşturma

1. Sağ üst köşe → Kullanıcı avatarı → "My Account"

2. "Security" sekmesine tıklayın

3. "Generate Tokens" bölümünde:
   ├── Name: demo-ci-token
   ├── Type: Project Analysis Token (açılır menüden seçin)
   ├── Project: my-project (açılır menüden seçin)
   └── Expires in: 90 days (açılır menüden seçin)

4. "Generate" butonuna tıklayın

5. Token gösterilir → "Copy" butonu ile kopyalayın

 Bu token bir daha gösterilmeyecektir!
   → CI/CD aracınızın secret/credential deposuna kaydedin

6. Oluşturulan tokenlar aşağıda listelenir:
   ├── Token adı
   ├── Tür
   ├── Son kullanma tarihi
   └── "Revoke" butonu (iptal etmek için)

3. KALİTE KAPISI (QUALITY GATE) OLUŞTURMA

3.1. Mevcut Kalite Kapılarını İnceleme

1. Üst menüden "Quality Gates" sekmesine tıklayın

2. Sol panelde mevcut kalite kapılarını gösterin:
   ├── "Sonar way" → (DEFAULT etiketi, kilit ikonu = salt okunur)
   └── "Sonar way for AI Code" → (AI ikonu)

3. "Sonar way" kalite kapısına tıklayın

4. Koşulları gösterin:
   ├── "On New Code" başlığı altında:
   │   ├── Issues is greater than 0                    → FAIL
   │   ├── Security Hotspots Reviewed is less than 100% → FAIL
   │   ├── Coverage is less than 80.0%                  → FAIL
   │   └── Duplicated Lines (%) is greater than 3.0%    → FAIL
   │
   └── Koşulların salt okunur olduğunu belirtin
       (yerleşik kalite kapıları düzenlenemez)

5. "Sonar way for AI Code" kapısını da gösterin:
   └── AI Code Assurance koşullarını işaret edin

3.2. Yeni Kalite Kapısı Oluşturma

1. Quality Gates sayfasında sağ üstteki "Create" butonuna tıklayın

2. İsim girin: "Kurumsal-QualityGate"
   → "Save" tıklayın

3. Yeni kalite kapısı oluşturulur ve koşul ekleme alanı görünür

4. "Add Condition" (veya "Unlock editing" sonrası) butonuna tıklayın:

   ── İlk Koşul ──
   ├── "On New Code" sekmesini seçin
   ├── Metric açılır menüsünden: "Issues" seçin
   ├── Operator: "is greater than"
   ├── Value: 0
   └── "Add Condition" tıklayın
   
   ── İkinci Koşul ──
   ├── "On New Code" seçili kalsın
   ├── Metric: "Security Hotspots Reviewed"
   ├── Operator: "is less than"
   ├── Value: 100
   └── "Add Condition" tıklayın

   ── Üçüncü Koşul ──
   ├── Metric: "Coverage"
   ├── Operator: "is less than"
   ├── Value: 80
   └── "Add Condition" tıklayın

   ── Dördüncü Koşul ──
   ├── Metric: "Duplicated Lines (%)"
   ├── Operator: "is greater than"
   ├── Value: 3
   └── "Add Condition" tıklayın

   ── Beşinci Koşul (Genel Kod) ──
   ├── "On Overall Code" sekmesine geçin
   ├── Metric: "Coverage"
   ├── Operator: "is less than"
   ├── Value: 60
   └── "Add Condition" tıklayın

5. Tüm koşulları gözden geçirin
   → Koşul değerini düzenlemek için değere tıklayın
   → Koşul silmek için sağdaki çöp kutusu ikonuna tıklayın

3.3. Kalite Kapısını Varsayılan Yapma

1. Oluşturduğunuz "Kurumsal-QualityGate" kalite kapısında
2. Sağ üstte "Set as Default" butonuna tıklayın
3. Artık yeni oluşturulan tüm projelere bu kalite kapısı atanır
4. "DEFAULT" etiketi kalite kapısı adının yanında görünür

 Not: Varsayılan kalite kapısını değiştirmek mevcut projelerin
   atamasını değiştirmez, sadece yeni projeleri etkiler.

3.4. Kalite Kapısını Projeye Atama

Yöntem 1: Quality Gate sayfasından
──────────────────────────────────
1. Quality Gates → "Kurumsal-QualityGate" seçin
2. Sayfanın alt kısmında "Projects" bölümüne gidin
3. "Without" sekmesinde atanmamış projeleri görün
4. Proje adının yanındaki "Associate" butonuna tıklayın
5. Proje "With" sekmesine taşınır

Yöntem 2: Proje ayarlarından
─────────────────────────────
1. Projects → Proje seçin → Project Settings → Quality Gate
2. Mevcut kalite kapısı gösterilir (varsayılan veya özel)
3. "Always use a specific Quality Gate" seçin
4. Açılır menüden "Kurumsal-QualityGate" seçin
5. Otomatik kaydedilir

3.5. Yeni Kod Tanımı (New Code Definition) Ayarlama

Global ayar:
1. Administration → Configuration → General Settings
2. Sol menüden "New Code" seçin
3. Yöntemlerden birini seçin:
   ├── "Previous version" (önerilen)
   ├── "Number of days" → gün sayısı girin (ör. 30)
   └── "Reference branch" → branch adı girin
4. "Save" tıklayın

Proje bazında ayar:
1. Projects → Proje seçin → Project Settings → New Code
2. "Define a specific setting for this project" seçin
3. Branch bazında farklı tanımlar yapılabilir:
   ├── main branch: "Previous version"
   └── develop branch: "Reference branch" → main
4. "Save" tıklayın

 Demo: "Number of days = 30" seçin, proje Overview sayfasında
   "New Code" sekmesinin son 30 günü kapsadığını gösterin

4. KALİTE PROFİLİ (QUALITY PROFILE) YÖNETİMİ

4.1. Mevcut Profilleri İnceleme

1. Üst menüden "Quality Profiles" sekmesine tıklayın

2. Dil listesi gösterilir, her dil altında profiller listelenir:
   ├── Java
   │   └── Sonar way (BUILT-IN, DEFAULT)
   ├── JavaScript
   │   └── Sonar way (BUILT-IN, DEFAULT)
   ├── Python
   │   └── Sonar way (BUILT-IN, DEFAULT)
   └── ... (diğer diller)

3. "Java" altındaki "Sonar way" profiline tıklayın

4. Profil detay sayfasını gösterin:
   ├── Üst bölüm: Aktif kural sayısı, dil, kullanılan proje sayısı
   ├── "Rules" bölümü:
   │   ├── Türe göre dağılım (Bug, Vulnerability, Code Smell)
   │   ├── Ciddiyete göre dağılım (Blocker, Critical, Major...)
   │   └── Etiketlere göre dağılım
   ├── "Changelog" sekmesi: Kural değişiklik geçmişi
   ├── "Compare" sekmesi: Başka profillerle karşılaştırma
   └── "Back up" butonu: XML olarak dışa aktarma

4.2. Özel Profil Oluşturma (Kopyalama Yöntemi)

1. Quality Profiles → Java → "Sonar way" profilini seçin

2. Sağ üstteki "" (ayarlar) → "Copy" seçin

3. Yeni profil adını girin:
   → "Kurumsal-Java-Profili"
   → "Copy" butonuna tıklayın

4. Yeni profil oluşturulur ve profil sayfası açılır
   → "Sonar way" ile aynı kuralları içerir
   → Ancak düzenlenebilir durumdadır

5. Profili gösterin:
   ├── Üstte "(parent: none)" yazar → bağımsız kopya
   ├── Aktif kural sayısı Sonar way ile aynıdır
   └── "BUILT-IN" etiketi yoktur → düzenlenebilir

4.3. Miras (Inheritance) ile Profil Oluşturma

1. Quality Profiles → Java → sağ üstteki "Create" butonuna tıklayın

2. Formu doldurun:
   ├── Name: Kurumsal-Java-Extend
   └── Parent: "Sonar way" seçin (açılır menü)

3. "Create" butonuna tıklayın

4. Oluşturulan profili gösterin:
   ├── "(inherits from: Sonar way)" yazısı görünür
   ├── Sonar way'deki tüm kurallar miras alınmıştır
   ├── Miras alınan kurallar devre dışı bırakılamaz
   └── Sadece EK kurallar aktifleştirilebilir veya parametreler değiştirilebilir

 Avantaj: Sonar way güncellendiğinde yeni kurallar otomatik
   miras alınan profile de yansır

4.4. Profilde Kural Ekleme / Çıkarma

Kural ekleme:
1. Profil sayfasında "Activate More" butonuna tıklayın
   (veya sağ üst "" → "Activate More Rules")

2. Kural arama sayfası açılır (deaktif kurallar gösterilir)

3. Filtreleri kullanın:
   ├── Type: "Vulnerability" seçin
   ├── Tag: "owasp-top10" yazın
   └── Sonuçlar filtrelenir

4. Bir kural seçin, örneğin:
   → "SQL Injection should not be possible"
   
5. "Activate" butonuna tıklayın
   ├── Ciddiyet seçin: "Blocker"
   └── "Activate" onaylayın

6. Kural artık profilde aktif

Kural çıkarma:
1. Profil sayfasına dönün
2. Aktif kurallar listesinde kaldırmak istediğiniz kuralı bulun
3. Kuralın sağındaki "Deactivate" butonuna tıklayın
4. Onaylayın → Kural deaktif olur

 BUILT-IN profillerde kural eklenemez/çıkarılamaz
   Sadece kopyalanan veya oluşturulan profillerde yapılabilir

4.5. Kural Parametresi Düzenleme

1. Profil sayfasında kural listesinden bir kural seçin
   → Örnek: "Methods should not have too many lines of code"

2. Kuralın yanındaki "Change" butonuna tıklayın

3. Parametre düzenleme penceresi açılır:
   ├── Severity: Major → "Critical" olarak değiştirin
   └── Parameter "max": 100 → 30 olarak değiştirin

4. "Save" butonuna tıklayın

5. Kuralın yanında "(modified)" veya farklı ciddiyet gösterilir

 Demo: Başka bir parametre örneği:
   → "Package names should comply with a naming convention"
   → format: "com\.sirketiniz\.[a-z]+(\.[a-z]+)*"

4.6. Profili Varsayılan Yapma ve Projeye Atama

Varsayılan yapma:
1. Quality Profiles → Java → "Kurumsal-Java-Profili"
2. Sağ üstteki "" → "Set as Default" seçin
3. Profil adının yanında "DEFAULT" etiketi belirir
4. Artık yeni Java projeleri bu profili kullanır

Belirli projeye atama:
1. Projects → Proje seçin → Project Settings → Quality Profiles
2. Dil listesinde "Java" satırını bulun
3. "Always use a specific Quality Profile" seçin
4. Açılır menüden "Kurumsal-Java-Profili" seçin
5. Otomatik kaydedilir

 Demo: Farklı projelere farklı profiller atanabileceğini gösterin

4.7. İki Profili Karşılaştırma

1. Quality Profiles → Java → "Kurumsal-Java-Profili" seçin
2. "Compare" sekmesine tıklayın
3. Karşılaştırma profili seçin: "Sonar way"
4. Karşılaştırma tablosu gösterilir:
   ├── "In Kurumsal-Java-Profili only" → Sadece bu profilde olan kurallar
   ├── "In Sonar way only"             → Sadece Sonar way'de olan kurallar
   └── "Modified"                      → Her ikisinde olan ama farklı parametrelerle

 Bu özellik profil geçişlerinde eksik/fazla kuralları tespit etmeye yarar

4.8. Profil Yedekleme ve Geri Yükleme

Yedekleme (Export):
1. Quality Profiles → Profil seçin
2. Sağ üstteki "" → "Back up" seçin
3. XML dosyası otomatik indirilir
4. Dosya adı: profil_adi.xml

Geri Yükleme (Import):
1. Quality Profiles → Sağ üstteki "Restore" butonuna tıklayın
2. İndirilen XML dosyasını seçin
3. "Restore" butonuna tıklayın
4. Profil içe aktarılır

 Kullanım senaryosu: Test ortamından üretim ortamına
   profil taşıma veya farklı SonarQube instance'ları
   arasında kural seti paylaşma

4.9. Changelog İnceleme

1. Quality Profiles → Profil seçin
2. "Changelog" sekmesine tıklayın
3. Değişiklik geçmişi gösterilir:
   ├── Tarih
   ├── Değişikliği yapan kullanıcı
   ├── Değişiklik türü (ACTIVATED, DEACTIVATED, UPDATED)
   └── Etkilenen kural
4. Tarih aralığı filtresi ile belirli dönemdeki değişiklikleri görün

5. BRANCH VE PULL REQUEST ANALİZİ

5.1. Branch Analiz Sonuçlarını Görüntüleme

1. Projects → Bir proje seçin

2. Proje adının yanındaki branch seçici açılır menüyü tıklayın
   (genellikle "main" veya "master" yazar)

3. Açılır menüde mevcut branch'ler listelenir:
   ├── main (ana branch, yıldız ikonu)
   ├── develop
   ├── feature/user-auth
   └── release/2.0

4. Farklı bir branch seçin (ör. "feature/user-auth")
   → Branch'e özel metrikler ve sorunlar gösterilir
   → "New Code" ana branch ile karşılaştırılarak hesaplanır

5. Branch bazında gösterilecekler:
   ├── Quality Gate durumu (bu branch için)
   ├── Yeni kodda bulunan sorunlar
   ├── Coverage ve duplication metrikleri
   └── Issues sekmesinde branch'e özel sorun listesi

5.2. Pull Request Sonuçlarını Görüntüleme

1. Projects → Proje seçin

2. Branch seçicinin yanındaki "Pull Requests" sekmesine tıklayın
   (veya branch açılır menüsünde "Pull Requests" bölümü)

3. Açık PR'lar listelenir:
   ├── PR #42: feature/login-refactor
   ├── PR #45: bugfix/null-pointer
   └── PR #48: feature/payment-gateway

4. Bir PR seçin (ör. PR #42)

5. PR analiz sonuçları gösterilir:
   ├── Quality Gate: PASSED / FAILED
   ├── Yeni Sorunlar: X bug, Y vulnerability, Z code smell
   ├── Coverage on New Code: %85.2
   ├── Duplication on New Code: %1.3
   └── Issues listesi (sadece PR'daki yeni sorunlar)

6. Issues sekmesine geçin:
   → Sadece bu PR'da eklenen/değiştirilen satırlardaki
     sorunlar listelenir
   → Her sorunun hangi dosya ve satırda olduğunu gösterin

5.3. PR Decoration Yapılandırması (GitHub Örneği)

1. Administration → Configuration → DevOps Platform Integrations

2. Sol menüden "GitHub" seçin

3. "Configuration" bölümünde:
   ├── GitHub URL: https://github.com (veya Enterprise URL)
   ├── GitHub App ID: <önceden oluşturulmuş>
   ├── Client ID: <GitHub App'ten kopyalanmış>
   ├── Client Secret: <GitHub App'ten kopyalanmış>
   └── Private Key: <.pem dosyası içeriği yapıştırılır>

4. "Save" tıklayın → "Check configuration" tıklayın
   → Bağlantı durumu gösterilir 

5. Proje bazında bağlantı:
   ├── Projects → Proje seçin → Project Settings → General Settings
   ├── "DevOps Platform Integration" bölümü
   ├── GitHub repository: organization/repo-name
   └── "Save"

6. GitHub tarafını gösterin:
   └── PR sayfasında SonarQube Quality Gate check sonucu
       ├──  "SonarQube Quality Gate passed"
       └── Satır bazında yorum örnekleri (inline comments)

5.4. PR Merge Engelleme Kuralı (GitHub Branch Protection)

GitHub tarafında (demo için gösterin):
1. GitHub Repo → Settings → Branches → Branch protection rules
2. "main" branch için kural ekleyin
3. "Require status checks to pass before merging" → 
4. Status check arayın: "SonarQube Quality Gate"
5. Bu check'i zorunlu yapın
6. "Save changes"

Sonuç:
→ PR'da Quality Gate FAILED ise "Merge" butonu devre dışı kalır
→ Geliştirici sorunları düzeltmeden merge edemez

6. SCA VE BAĞIMLILIK YÖNETİMİ

6.1. Bağımlılıkları Görüntüleme (Dependencies Sekmesi)

1. Projects → Bir proje seçin (Enterprise edisyon gerekli)

2. "Dependencies" sekmesine tıklayın

3. Bağımlılık listesi gösterilir:
   ├── Her bağımlılık için:
   │   ├── Paket adı ve versiyonu
   │   ├── Tür: Direct / Transitive
   │   ├── Güvenlik açığı sayısı (kırmızı badge)
   │   ├── Lisans bilgisi
   │   └── Bakımcı güvenilirlik skoru
   │
   ├── Filtreleme seçenekleri:
   │   ├── "With issues" → Sadece sorunlu bağımlılıklar
   │   ├── "Direct only" → Sadece doğrudan bağımlılıklar
   │   └── Arama kutusu → İsme göre arama
   │
   └── Sıralama: İsim, güvenlik açığı sayısı, risk skoru

4. Sorunlu bir bağımlılığa tıklayın (ör. jackson-databind)
   → Detay sayfası açılır:
     ├── CVE listesi ve CVSS skorları
     ├── Etkilenen versiyonlar
     ├── Önerilen güvenli versiyon
     ├── Bu bağımlılığı kullanan dosyalar
     └── Güvenlik açığı açıklaması ve çözüm önerisi

6.2. Güvenlik Açığı Detayını İnceleme

1. Dependencies → Sorunlu bağımlılığa tıklayın

2. Güvenlik açığı kartında:
   ├── CVE numarası: CVE-2024-XXXXX
   ├── CVSS skoru: 9.8 (Critical) → kırmızı etiket
   ├── Açıklama: "Remote Code Execution via..."
   ├── Fix Version: ≥ 2.15.0
   ├── Exploit edilebilirlik: HIGH
   └── Yayınlanma tarihi: 2024-XX-XX

3. "How to fix" bölümünü gösterin:
   → Hangi dosyada hangi satırda versiyon güncellenmeli
   → Örnek: pom.xml'de <version>2.15.0</version> yapın

 Demo: Birden fazla CVE'si olan bir bağımlılığı gösterin
   → Önceliklendirmenin CVSS skoruna göre yapıldığını vurgulayın

6.3. Lisans Politikası Yapılandırma

1. Administration → Configuration → SCA (veya Advanced Security)

2. "License Profiles" bölümüne gidin

3. Mevcut profili gösterin veya yeni profil oluşturun:
   ├── "Create License Profile" tıklayın
   ├── Name: Kurumsal-Lisans-Politikasi
   └── "Create"

4. Lisans kurallarını yapılandırın:
   ├── Allowed (İzin verilen) sekmesi:
   │   → "Add License" → MIT License → 
   │   → "Add License" → Apache License 2.0 → 
   │   → "Add License" → BSD 3-Clause → 
   │
   ├── Prohibited (Yasaklanan) sekmesi:
   │   → "Add License" → GPL v3 → 
   │   → "Add License" → AGPL v3 → 
   │
   └── Review Required (İnceleme gerekli) sekmesi:
       → "Add License" → LGPL v2.1 → 
       → "Add License" → Unknown → 

5. Profili projelere atayın

 Demo: Lisans ihlali olan bir bağımlılık gösterin
   → Projenin Quality Gate'inde nasıl göründüğünü gösterin

6.4. SBOM Görüntüleme

1. Projects → Proje seçin → Dependencies

2. Sağ üstteki "Export SBOM" (veya "Download") butonuna tıklayın

3. Format seçin:
   ├── CycloneDX (JSON)
   └── SPDX (JSON)

4. Dosya indirilir

5. İndirilen dosyayı açıp içeriğini gösterin:
   → Tüm bağımlılıkların listesi
   → Versiyon bilgileri
   → Lisans bilgileri
   → Paket URL'leri (purl)

 Kullanım senaryosu: Denetim (audit) sırasında
   "Uygulamanızda hangi açık kaynak bileşenler var?"
   sorusuna hızlıca yanıt verebilirsiniz

7. SONARLINT (SONARQUBE FOR IDE) KURULUMU

7.1. VS Code'da Kurulum

1. VS Code'u açın

2. Sol kenar çubuğunda "Extensions" ikonuna tıklayın (veya Ctrl+Shift+X)

3. Arama kutusuna "SonarQube for IDE" yazın

4. "SonarQube for IDE" eklentisini bulun (SonarSource tarafından)
   → Yayıncının doğrulanmış olduğunu gösterin 

5. "Install" butonuna tıklayın

6. Kurulum tamamlanınca VS Code'u yeniden başlatın

7. Sol kenar çubuğunda yeni "SONARQUBE" ikonu belirir
   → Tıklayın → Karşılama ekranı gösterilir

7.2. Connected Mode Yapılandırması (VS Code)

1. VS Code'da Ctrl+Shift+P → "SonarQube: Add SonarQube Connection"

   VEYA

   Settings (Ctrl+,) → "sonarlint" arayın → 
   "Sonarlint: Connected Mode: Connections: Sonarqube" → "Edit in settings.json"

2. settings.json'a ekleyin:
   {
     "sonarlint.connectedMode.connections.sonarqube": [
       {
         "serverUrl": "https://sonarqube.sirketiniz.com",
         "token": "<oluşturduğunuz-token>"
       }
     ]
   }

3. Kaydedin → VS Code sağ alt köşede bağlantı durumunu gösterir

4. Proje bağlantısı:
   ├── Ctrl+Shift+P → "SonarQube: Bind to SonarQube project"
   ├── Bağlantıyı seçin
   ├── Proje listesinden projenizi seçin
   └── Bağlantı kurulur

   VEYA .vscode/settings.json'a ekleyin:
   {
     "sonarlint.connectedMode.project": {
       "projectKey": "my-project-key"
     }
   }

5. Bağlantı başarılıysa:
   ├── Durum çubuğunda "SonarQube Connected" yazısı
   ├── Sunucudaki kurallar ve profiller indirilir
   └── "Won't Fix" / "False Positive" sorunlar gizlenir

7.3. SonarLint Çalışma Demonstrasyonu

1. Bir Java dosyası açın (veya yeni oluşturun)

2. Kasıtlı olarak sorunlu kod yazın:

   // Örnek 1: SQL Injection
   String query = "SELECT * FROM users WHERE id = " + userId;
   
   // Örnek 2: NullPointer riski
   String name = null;
   int length = name.length();
   
   // Örnek 3: Hardcoded password
   String password = "admin123";

3. SonarLint anında altını çizer:
   ├──  Kırmızı: SQL Injection (Vulnerability)
   ├──  Kırmızı: NullPointerException (Bug)
   └──  Sarı: Hardcoded credential (Security Hotspot)

4. Sorunun üzerine gelin (hover):
   → Sorun açıklaması tooltip olarak gösterilir
   → "Quick Fix" önerisi varsa gösterilir

5. "Problems" panelini açın (Ctrl+Shift+M):
   → Tüm SonarLint sorunları listelenir
   → Tıklandığında ilgili satıra gidilir

6. Sol kenar çubuğunda SONARQUBE ikonuna tıklayın:
   → Tüm açık dosyalardaki sorunların özeti
   → Taint analysis sonuçları (Connected Mode'da)
   → Bağımlılık riskleri (Connected Mode'da)

7.4. IntelliJ IDEA'da Kurulum (Kısaca)

1. IntelliJ IDEA → Settings (Ctrl+Alt+S) → Plugins → Marketplace

2. "SonarQube" arayın → "SonarQube for IntelliJ" yükleyin → Restart

3. Settings → Tools → SonarQube for IDE:
   ├── "+" ile bağlantı ekleyin
   ├── Connection Name: SonarQube-Sirket
   ├── SonarQube URL: https://sonarqube.sirketiniz.com
   ├── Token: <token>
   └── "Test Connection" → başarılı 

4. Proje bazında bağlantı:
   ├── Settings → Tools → SonarQube for IDE → Project Settings
   ├── "Bind to SonarQube" → 
   ├── Connection: SonarQube-Sirket
   └── Project: my-project-key

5. Sorunlar "SonarQube" tool window'unda gösterilir (alt panel)

8. CI/CD ENTEGRASYONU

8.1. Proje Analiz Token'ı Oluşturma (Tekrar)

1. My Account → Security → Generate Tokens

2. Oluşturma:
   ├── Name: jenkins-my-project
   ├── Type: Project Analysis Token
   ├── Project: my-project
   └── Expires in: 365 days

3. "Generate" → Token'ı kopyalayın

4. Token'ı CI/CD aracına kaydedin:
   ├── Jenkins: Manage Jenkins → Credentials → Add
   ├── GitHub: Repo Settings → Secrets → SONAR_TOKEN
   ├── GitLab: Settings → CI/CD → Variables → SONAR_TOKEN
   └── Azure DevOps: Pipelines → Library → Variable Groups

8.2. Proje Oluşturma ve İlk Analiz

1. Projects sayfasında sağ üstteki "+" → "Create Project"

2. Platform seçimi:
   ├── "From GitHub"      → GitHub repo'dan otomatik
   ├── "From GitLab"      → GitLab repo'dan otomatik
   ├── "From Azure DevOps" → Azure repo'dan otomatik
   ├── "From Bitbucket"   → Bitbucket repo'dan otomatik
   └── "Manually"         → Manuel oluşturma

3. Manuel oluşturma seçin:
   ├── Project display name: My Java Service
   ├── Project key: my-java-service
   └── Main branch name: main
   → "Set Up" tıklayın

4. Analiz yöntemi seçin:
   ├── "With Jenkins"
   ├── "With GitHub Actions"
   ├── "With GitLab CI/CD"
   ├── "With Azure Pipelines"
   ├── "With Bitbucket Pipelines"
   └── "Locally"

5. "Locally" seçin (demo için):
   ├── Token oluşturma ekranı → Token oluşturun
   ├── Proje teknolojisini seçin (ör. Maven)
   └── Çalıştırma komutu gösterilir:

   mvn clean verify sonar:sonar \
     -Dsonar.projectKey=my-java-service \
     -Dsonar.host.url=https://sonarqube.sirketiniz.com \
     -Dsonar.token=sqp_xxxxxxxxxxxxx

6. Komutu terminalde çalıştırın

7. Analiz tamamlanınca proje sayfasına dönün:
   → Sonuçlar birkaç saniye içinde görünür
   → Quality Gate durumu, metrikler ve sorunlar gösterilir

8.3. Webhook Yapılandırma

Global webhook:
1. Administration → Configuration → Webhooks

2. "Create" butonuna tıklayın:
   ├── Name: Jenkins-Webhook
   ├── URL: https://jenkins.sirketiniz.com/sonarqube-webhook/
   ├── Secret: <güvenli-bir-anahtar-girin>
   └── "Create" tıklayın

3. Webhook listesinde gösterilir:
   ├── Son gönderim durumu ( / )
   ├── Son gönderim tarihi
   └── "Deliveries" → gönderim geçmişi ve payload'lar

Proje bazında webhook:
1. Projects → Proje seçin → Project Settings → Webhooks
2. Aynı şekilde "Create" ile ekleyin
   → Bu webhook sadece bu projenin analizi bittiğinde tetiklenir

 Demo: Webhook oluşturduktan sonra bir analiz çalıştırın
   → "Deliveries" altında gönderilen payload'u gösterin
   → Response status: 200 OK olduğunu gösterin

8.4. sonar-project.properties Dosyasını Gösterme

1. Proje kök dizinindeki sonar-project.properties dosyasını açın

2. İçeriğini gösterin ve her satırı açıklayın:

   # Proje kimliği (SonarQube'daki key ile eşleşmeli)
   sonar.projectKey=my-java-service

   # Dashboard'da görünen isim
   sonar.projectName=My Java Service

   # Kaynak kod dizini
   sonar.sources=src/main/java

   # Test dizini
   sonar.tests=src/test/java

   # Derleme çıktısı (Java için zorunlu)
   sonar.java.binaries=target/classes

   # Hariç tutulacak dosyalar
   sonar.exclusions=**/generated/**,**/dto/**

   # Coverage raporu yolu
   sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

   # Karakter kodlaması
   sonar.sourceEncoding=UTF-8

3. Parametreleri değiştirerek etkilerini gösterin:
   → sonar.exclusions'a bir klasör ekleyin
   → Analizi yeniden çalıştırın
   → O klasördeki dosyaların artık analiz edilmediğini gösterin

8.5. Analiz Sırasında Compute Engine İzleme

1. Bir analiz başlatın (terminal veya CI/CD'den)

2. SonarQube UI'da:
   ├── Administration → System → Compute Engine (yeni sekmede açın)
   │
   │   VEYA
   │
   └── Üst menüde "Background Tasks" linkine gidin
       (Administration → Projects → Background Tasks)

3. Çalışan ve bekleyen görevleri gösterin:
   ├── Durum: In Progress / Pending / Success / Failed
   ├── Proje adı
   ├── Gönderilme zamanı
   ├── Başlangıç zamanı
   ├── Süre
   └── Detay (logs) → tıklayarak analiz loglarını görün

4. Başarısız bir görev varsa:
   → Görev satırında "Details" tıklayın
   → Hata loglarını gösterin
   → Yaygın hatalar: bellek yetersizliği, geçersiz token, disk dolu

 Büyük projelerde analiz birkaç dakika sürebilir
   → Compute Engine kuyruğunu izlemek sorun gidermede kritiktir

9. PORTFÖY VE RAPORLAMA

9.1. Portföy Oluşturma (Enterprise)

1. Administration → Projects → Portfolios

2. Sağ üstteki "Create Portfolio" butonuna tıklayın

3. Formu doldurun:
   ├── Name: Kurumsal Yazılım Portföyü
   ├── Key: kurumsal-portfolyo (otomatik oluşturulur)
   └── Description: Tüm kurumsal projelerin toplu görünümü
   → "Create" tıklayın

4. Portföye proje ekleme:
   ├── "Edit Definition" butonuna tıklayın
   ├── Ekleme yöntemi seçin:
   │   ├── "None" → Manuel ekleme yapılmaz
   │   ├── "Manual" → Tek tek proje seçimi
   │   ├── "Tags" → Belirli etikete sahip projeler otomatik
   │   └── "Regular Expression" → Proje key pattern ile
   │
   ├── "Manual" seçin:
   │   → Proje listesinden projeleri seçin (checkbox)
   │   →  my-java-service
   │   →  my-frontend-app
   │   →  my-python-api
   │
   └── "Save" tıklayın

5. Alt portföy ekleme:
   ├── "Add Sub-portfolio" butonuna tıklayın
   ├── Name: Backend Servisleri
   ├── İçine backend projelerini ekleyin
   └── "Save"

9.2. Portföy Dashboard İnceleme

1. Portfolios → "Kurumsal Yazılım Portföyü" tıklayın

2. Portföy Dashboard'u gösterilir:

   Üst Bölüm - Özet Rating'ler:
   ├── Reliability: A (yeşil) → "0 Bugs across X projects"
   ├── Security: B (turuncu) → "5 Vulnerabilities..."
   ├── Security Review: A (yeşil) → "%95 reviewed"
   ├── Maintainability: A (yeşil) → "Tech debt: 5d 3h"
   └── Coverage / Duplications: %78 / %2.1

   Alt Bölüm - Proje Listesi:
   ├── Her projenin bireysel rating'leri
   ├── Lines of Code
   ├── Quality Gate durumu
   └── Son analiz tarihi

3. Alt portföye tıklayın:
   → Alt portföy kendi rating'lerini gösterir
   → Drill-down yaparak proje detayına gidilebilir

4. Trend grafiklerini gösterin:
   → "Activity" veya tarih seçici ile geçmiş dönemleri karşılaştırın

9.3. Application (Uygulama) Oluşturma

1. Projects → sağ üstteki "+" → "Create Application"

2. Formu doldurun:
   ├── Name: E-Ticaret Platformu
   ├── Key: e-commerce-platform
   └── Description: Tüm e-ticaret microservice'leri
   → "Create" tıklayın

3. Projeleri ekleyin:
   ├── "Edit Definition" → "Add Project"
   ├──  order-service → Branch: main
   ├──  payment-service → Branch: main
   ├──  product-catalog → Branch: main
   └── "Save"

4. Application Dashboard:
   → Tüm seçili projelerin birleşik metrikleri gösterilir
   → Tek bir uygulama gibi Quality Gate değerlendirmesi yapılır

 Portföy vs Application farkı:
   → Portföy: Yönetimsel gruplandırma (üst düzey görünüm)
   → Application: Teknik gruplandırma (bir uygulamanın parçaları)

9.4. PDF Rapor İndirme

1. Portfolios → Portföyü seçin

2. Sağ üstte "Download PDF" veya "" (PDF ikonu) butonuna tıklayın

3. Rapor arka planda oluşturulur:
   → "Report is being generated..." mesajı
   → Birkaç saniye-dakika sürebilir
   → Hazır olduğunda otomatik indirilir

4. PDF raporun içeriğini gösterin:
   ├── Kapak sayfası: Portföy adı, tarih, logo
   ├── Yönetici Özeti: Rating'ler ve trend
   ├── Proje bazında detaylar:
   │   ├── Her projenin Quality Gate durumu
   │   ├── Bug/Vulnerability/Code Smell sayıları
   │   ├── Coverage ve Duplication oranları
   │   └── Trend grafikleri (son X analiz)
   └── Genel değerlendirme

 Bu rapor CTO/VP sunumlarında kullanılabilir

9.5. Güvenlik Uyum Raporları

1. Projects → Proje seçin (veya Portfolios → Portföy seçin)

2. Sol menüden veya "More" altından güvenlik raporlarına erişin:
   (Bazı sürümlerde: Project → Security Reports)

3. Rapor türünü seçin:
   ├── OWASP Top 10 (2025)
   ├── CWE Top 25 (2024)
   ├── OWASP Top 10 for LLM
   ├── OWASP MASVS
   ├── OWASP Mobile Top 10
   ├── PCI DSS
   └── STIG V6R3

4. "OWASP Top 10 (2025)" raporunu açın:
   ├── Her OWASP kategorisi listelenir (A01-A10)
   ├── Her kategori için bulunan vulnerability sayısı
   ├── Rating (A-E)
   └── Detaya tıklanarak ilgili sorunlar listelenir

5. PDF olarak indirin:
   → Sağ üstteki "Download" veya "Export" butonu
   → Denetçilere veya yönetime sunulabilir

6. Kategoriye tıklayın (ör. A03: Injection):
   → Bu kategorideki tüm sorunlar listelenir
   → Dosya, satır, açıklama gösterilir
   → Her birinin düzeltme önerisi incelenebilir

9.6. Bildirim Yapılandırma

Kişisel bildirimler:
1. Sağ üst → Kullanıcı avatarı → "My Account"
2. "Notifications" sekmesine tıklayın
3. Global bildirimler:
   ├── "Quality Gate changes on all available projects" → 
   └── "New issues assigned to me" → 

4. Proje bazında bildirimler:
   ├── "Add a project" alanına proje adını yazın
   ├── Projeyi seçin
   └── Bildirim türlerini işaretleyin:
       ├── Quality Gate changes → 
       ├── New issues → 
       └── My new issues → 

 E-posta bildirimleri için SMTP ayarlarının yapılandırılmış
   olması gerekir:
   Administration → Configuration → Email

9.7. Proje Etiketleme (Tags)

1. Projects → Proje seçin → Project Settings → Tags

   VEYA

   Projects sayfasında proje kartındaki etiket alanına tıklayın

2. Etiket ekleyin:
   ├── "backend" yazın → Enter
   ├── "java" yazın → Enter
   ├── "microservice" yazın → Enter
   └── "team-alpha" yazın → Enter

3. Projects sayfasına dönün:
   ├── Sol filtrelerde "Tags" bölümü
   ├── "backend" etiketine tıklayın
   └── Sadece "backend" etiketli projeler filtrelenir

 Etiketler portföy oluşturmada da kullanılır:
   → Portföy tanımında "Tags" yöntemiyle otomatik proje ekleme
   → Örn: "backend" etiketli tüm projeler otomatik portföye eklenir

9.8. Activity ve Trend Grafikleri

1. Projects → Proje seçin → "Activity" sekmesi

2. Analiz geçmişi gösterilir:
   ├── Zaman çizelgesi üzerinde her analiz bir nokta
   ├── Grafik türleri (üstte seçim):
   │   ├── Issues (sorun sayısı trendi)
   │   ├── Coverage (kapsama oranı trendi)
   │   ├── Duplications (kod tekrarı trendi)
   │   └── Custom (özel metrik seçimi)
   │
   ├── Her analiz noktasına tıklayın:
   │   → Analiz tarihi ve süresi
   │   → O analizin metrikleri
   │   → Versiyonu veya olayı (Quality Gate değişikliği vb.)
   │
   └── Tarih aralığı seçici ile filtreleme yapın

3. "Events" filtresini gösterin:
   ├── Quality Gate değişiklikleri
   ├── Quality Profile değişiklikleri
   └── Versiyon değişiklikleri

 Bu grafikler eğitim kapanışında "zamanla iyileşme"
   hikayesini anlatmak için çok etkilidir

EK: DEMO HAZIRLIK KONTROL LİSTESİ

Eğitimden Önce Hazırlanması Gerekenler

□ SonarQube instance'ı çalışır durumda
□ En az 2-3 proje analiz edilmiş (farklı dillerde ideal)
□ Kasıtlı olarak sorunlu bir proje (bug, vulnerability içeren)
□ Kasıtlı olarak Quality Gate'i FAILED olan bir proje
□ Birden fazla branch içeren bir proje
□ Açık PR'ı olan bir proje (PR Decoration gösterimi için)
□ Sorunlu bağımlılıkları olan bir proje (SCA demo için - Enterprise)
□ Admin yetkili demo hesabı
□ Developer yetkili demo hesabı (kısıtlı izinleri göstermek için)
□ VS Code veya IntelliJ yüklü (SonarLint demo için)
□ sonar-scanner CLI yüklü (canlı analiz demo için)
□ Terminal / komut satırı hazır (analiz çalıştırmak için)
□ LDAP/SAML yapılandırması (gerçek veya simüle edilmiş)
□ GitHub/GitLab repo'su (PR Decoration demo için)
□ Webhook test endpoint'i (webhook.site gibi)
□ PDF rapor önceden oluşturulmuş (yavaş oluşursa diye yedek)

Demo Sırası Önerisi

Sıra  | Bölüm                              | Süre (dk)
──────┼──────────────────────────────────────┼──────────
1     │ Dashboard turu ve proje inceleme     │ 10
2     │ Kullanıcı/grup oluşturma            │ 15
3     │ İzin yapılandırma                    │ 10
4     │ SAML/Token yapılandırma              │ 10
5     │ Quality Gate oluşturma               │ 15
6     │ Quality Profile yönetimi             │ 15
7     │ Branch/PR analiz sonuçları           │ 10
8     │ PR Decoration gösterimi              │ 10
9     │ SCA / Bağımlılık inceleme            │ 15
10    │ SonarLint demo (VS Code)             │ 10
11    │ CI/CD entegrasyonu (canlı analiz)    │ 15
12    │ Portföy ve raporlama                 │ 15
13    │ S&C (Soru ve Cevap)                  │ 10
──────┼──────────────────────────────────────┼──────────
      │ TOPLAM                               │ ~160 dk
      │                                      │ (~2.5 saat)

Not: Bu rehber SonarQube Server 2026.1 LTA arayüzünü baz almaktadır. Farklı sürümlerde menü yapısı ve buton isimleri değişiklik gösterebilir. Demo öncesinde güncel arayüzü kontrol ediniz.