Günümüzde yazılım geliştirme süreçlerinin karmaşıklığı arttıkça, yazılım kalitesini ve sürdürülebilirliğini sağlamak daha da önem kazandı. Özellikle ekiplerin büyümesi, projelerin ölçeklenmesi ve teslim sürelerinin kısalması, kod kalitesine daha fazla odaklanmayı gerektiriyor. İşte bu noktada, kod kalitesini izlemek, analiz etmek ve iyileştirmek için SonarQube gibi araçlar devreye giriyor. Bu yazımda, SonarQube’un ne olduğu, nasıl çalıştığı ve neden bu kadar önemli olduğu gibi temel konulara odaklanacağız.
SonarQube Nedir?
SonarQube, açık kaynaklı bir statik kod analizi aracıdır ve yazılım projelerinde kod kalitesini artırmak amacıyla kullanılır. C#, Java, Python, JavaScript, TypeScript, Go gibi birçok farklı programlama dilini destekler ve bu dillerde yazılmış kodları kalite, güvenlik ve performans açısından analiz eder. SonarSource tarafından geliştirilen bu araç, hem bireysel geliştiriciler hem de büyük ekipler için uygundur.
SonarQube, yazılım geliştiricilerin kod kalitesini artırmasına yardımcı olmakla kalmaz, aynı zamanda projelerin güvenliğini artırır, teknik borcu azaltır ve geliştirme süreçlerinin daha verimli hale gelmesini sağlar.
Neden SonarQube Kullanmalıyız?
SonarQube, bir yazılım geliştirme projesinde kalite kontrolünü bir üst seviyeye taşımak için kritik bir araçtır.
İşte SonarQube’un sağladığı temel avantajlar:
Kod Kalitesini Artırır
SonarQube, kodunuzu kalite açısından analiz ederek yazım hatalarını, karmaşık kod bloklarını ve potansiyel sorunları belirler. Bu analizler sayesinde temiz, anlaşılır ve sürdürülebilir kod yazmak mümkün hale gelir.
Güvenlik Açıklarını Belirler
Yazılım projelerinde güvenlik açıkları büyük bir tehdit oluşturabilir. SonarQube, kodunuzu güvenlik açıkları açısından tarayarak olası tehditleri önceden tespit etmenizi sağlar.
Teknik Borcu Azaltır
SonarQube, teknik borçlarınızı belirlemenize ve bu borçları azaltmanıza yardımcı olur. Teknik borç, yazılım projelerinde ileride sorun yaratabilecek kalitesiz kod parçalarını ifade eder.
Hataları Erken Aşamada Tespit Eder
Kod inceleme süreçlerinde genellikle gözden kaçabilecek hatalar, SonarQube’un statik kod analizi sayesinde daha erken aşamalarda fark edilir.
Ekip İşbirliğini Geliştirir
SonarQube, birden fazla geliştiricinin üzerinde çalıştığı projelerde ekip üyeleri arasında ortak bir kalite standardı oluşturur.
CI/CD Entegrasyonu ile Kesintisiz Çalışma
SonarQube, Jenkins, GitLab, GitHub Actions gibi CI/CD araçlarıyla entegre çalışarak kod kalitesini sürekli olarak izleme ve raporlama imkanı sunar.
SonarQube Nasıl Çalışır?
SonarQube’un temel çalışma prensibi oldukça basittir. Araç, kaynak kodunu analiz eder, kalite metrikleri oluşturur ve bu metrikleri görselleştirir. Aşağıdaki adımlar, SonarQube’un çalışma mantığını açıklar:
Kod Taraması
SonarQube, kaynak kodunuzu tarar ve kod hatalarını, güvenlik açıklarını, stil sorunlarını ve diğer kalite kriterlerini tespit eder. Analiz sırasında aşağıdaki kategoriler incelenir:
- Kod Kokuları (Code Smells): Karmaşıklık, uzun fonksiyonlar, gereksiz kod tekrarları gibi sorunlar.
- Güvenlik Açıkları: SQL enjeksiyon(injection), XSS gibi güvenlik tehditleri.
- Hatalar (Bugs): Çalışma zamanı hatalarına neden olabilecek sorunlar.
Kurallara Dayalı Analiz
SonarQube, önceden tanımlanmış kalite ve güvenlik kurallarına dayalı olarak kodu değerlendirir. Kullanıcılar, projede özel ihtiyaçlara göre bu kuralları özelleştirebilir.
Kod Kalitesi Metriği
SonarQube, kalite durumunu ölçmek için çeşitli metrikler sunar:
- Kod Kapsamı (Code Coverage): Testlerin, kodun ne kadarını kapsadığını ölçer.
- Teknik Borç (Technical Debt): Kod kalitesini artırmak için gereken zamanı tahmin eder.
- Karmaşıklık (Complexity): Kodun ne kadar karmaşık olduğunu gösterir.
Sonuçların Görselleştirilmesi
SonarQube, analiz sonuçlarını görselleştirerek kullanıcıya anlaşılır bir rapor sunar. Bu raporlar sayesinde geliştiriciler ve ekipler, hangi alanlara öncelik vereceklerini kolayca belirleyebilir.
SonarQube’un Temel Bileşenleri
SonarQube’u daha iyi anlamak için temel bileşenlerine göz atalım:
- SonarQube Sunucusu: SonarQube, merkezi bir sunucu üzerinde çalışır. Bu sunucu, tüm analiz sonuçlarını saklar ve kullanıcıların bu sonuçlara erişmesini sağlar.
- SonarScanner: SonarScanner, kod analizi yapmak için kullanılan bir araçtır. SonarQube’un bir projenin kaynak kodunu taramasını sağlar. Farklı diller ve projeler için özelleştirilmiş versiyonları mevcuttur.
- Kural Motoru: Kural motoru, kodun kalite ve güvenlik kurallarına uygunluğunu değerlendirir. Bu motor, kullanıcıların projeye özel kurallar tanımlamasına da olanak tanır.
- Veritabanı: SonarQube, analiz sonuçlarını ve yapılandırma ayarlarını saklamak için bir veritabanı kullanır. PostgreSQL, MySQL ve Oracle gibi veritabanlarını destekler.
Kod Analizi Raporunda Yer Alan Metrikler
SonarQube’un raporları, bir yazılım projesinin durumu hakkında kapsamlı bilgiler sağlar. Bu raporlarda yer alan temel metrikler şunlardır:
- Kalite Kapısı (Quality Gate): Kalite kapısı, bir projenin belirli kalite standartlarını karşılayıp karşılamadığını belirleyen kriterlerdir.
Örneğin;
Yeni eklenen kodun %80’inin test edilmesi gerektiği bir kalite kapısı kriteri olabilir. - Hatalar ve Kod Kokuları: SonarQube, hataları ve kod kokularını detaylı bir şekilde listeler. Bu liste, geliştirme sürecinde iyileştirme yapılması gereken alanları gösterir.
- Kod Kapsamı: Testlerin kodu ne kadar kapsadığını gösterir. Yüksek kod kapsamı, testlerin daha etkili olduğunu gösterir.
- Kodun Karmaşıklığı: Kodun karmaşıklık derecesi, yazılımın bakım maliyetlerini doğrudan etkiler. SonarQube, karmaşık kod parçalarını tespit ederek basitleştirme önerilerinde bulunur.
SonarQube’u Verimli Kullanma İpuçları
SonarQube’u maksimum verimle kullanmak için aşağıdaki ipuçlarını dikkate alabilirsiniz:
- Sık Analiz Yapın: Kod analizini sık sık yaparak sorunları erken tespit edin.
- Kuralları Özelleştirin: Projenize özel kalite ve güvenlik kuralları belirleyin.
- CI/CD ile Entegrasyon: CI/CD araçlarıyla entegrasyon sağlayarak sürekli analiz yapın.
- Ekibe Eğitim Verin: Tüm ekip üyelerinin SonarQube’u etkin bir şekilde kullanabilmesi için eğitim sağlayın.
- Hedefler Belirleyin: Kod kalitesi hedefleri belirleyerek iyileştirme sürecine yön verin.
SonarQube ile İlgili Örnek Senaryolar
SonarQube’un pratikte nasıl kullanıldığını daha iyi anlamak için bazı senaryolara bakalım:
Senaryo 1: Bir Güvenlik Açığının Tespiti
Bir e-ticaret platformu geliştiriyorsunuz ve SonarQube, ödeme sistemiyle ilgili bir SQL enjeksiyonu açığı tespit etti. Bu sorunu çözmek, ileride büyük güvenlik ihlallerini önleyebilir.
Senaryo 2: Teknik Borcun Azaltılması
Bir bankacılık uygulamasında kod tekrarlarını azaltarak bakım maliyetlerini düşürdünüz. Bu, hem zaman kazandırır hem de kodun sürdürülebilirliğini artırır.
Senaryo 3: CI/CD Sürecine Entegrasyon
Bir oyun geliştirme ekibi olarak, SonarQube’u Jenkins ile entegre ettiniz. Yeni kod eklendiğinde otomatik analiz yapılıyor ve hatalar anında raporlanıyor.
SonarQube Kurulumu
Windows platformunda SonarQube Community Build 25.2 sürümünü kuracağız. Bu kurulumda SonarQube’un embedded database (dahili veritabanı) özelliğini kullanacağız. Kuruluma başlamadan önce, sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun.
- Java 17
- Minimum 2 GB RAM ve 1 GB boş disk alanı
Kurulum Adımları
Kurulum adımlarını olabildiğince basit ve anlaşılır bir şekilde aktarmaya çalıştım. Adımları dikkatlice takip ederseniz, SonarQube’u sorunsuz bir şekilde çalıştırabilirsiniz.
1) Java Kurulumu
İlk adım olarak sisteminizde Java yüklü olduğundan emin olun. Eğer Java yüklü değilse aşağıdaki adımları izleyerek kurulumu gerçekleştirebilirsiniz:
- Java JDK 17 sürümünü indirin. Bu sürümden daha yüksek sürümlerde çalışmamaktadır.
- Kurulumu tamamladıktan sonra command prompt’da
java -version
komutunu çalıştırarak doğru Java sürümünün yüklü olduğunu doğrulayın.
2) SonarQube’u İndirme ve Hazırlama
- SonarQube Resmi Sitesi üzerinden Community Edition’ı indirin.
- Dosyayı indirdikten sonra ZIP arşivini çıkarın. Örneğin, Windows’da C: dizini altında C:\sonarqube klasörünü kullanabilirsiniz.

3) SonarQube’u Çalıştırma
SonarQube’u çalıştırmanın iki temel yolu vardır: StartSonar.bat
dosyasını kullanarak elle başlatmak veya SonarService.bat
dosyasıyla Windows servisi olarak kaydedip otomatik başlatılmasını sağlamak.
StartSonar.bat
StartSonar.bat
, SonarQube’u manuel olarak başlatan bir betik dosyasıdır. Bu komut çalıştırıldığında, SonarQube’un web servisi ve Elasticsearch motoru arka planda başlatılır. Ancak bu yöntemde:
- SonarQube sadece komut penceresi açık olduğu sürece çalışır.
- Bilgisayar yeniden başlatıldığınızda ya da komut penceresini kapattığınızda SonarQube’u tekrar elle başlatmanız gerekir. Bu yöntem, sadece kısa süreli testler veya denemeler için uygundur.
SonarService.bat
SonarService.bat
, SonarQube’u bir Windows servisi olarak kaydetmenizi sağlar.
Bu sayede:
- Bilgisayar her açıldığında SonarQube otomatik olarak başlatılır.
- Arka planda bir servis olarak çalıştığı için, komut penceresine bağlı kalmadan sürekli erişilebilir olur.
SonarQube’u Servis Olarak Kurma ve Başlatma
İşte adım adım izlemeniz gereken süreç:
1) Komut İstemcisi (CMD) veya PowerShell’i Yönetici olarak çalıştırın.
2) SonarQube’un bin klasöründe windows dizinine gidin.
cd C:\sonarqube\bin\windows-x86-64

3) SonarQube’u servis olarak kaydetmek için şu komutu çalıştırın:
SonarService.bat install

Bu işlem, SonarQube’u Windows servislerine ekleyecektir.

4) SonarQube servisini başlatmak için şu komutu kullanın:
SonarService.bat start

Başlatma işlemi ile birlikte SonarQube servisi üzerinde şu işlemleri de kolayca yapabilirsiniz:
- Servisi durdurmak:
SonarService.bat stop
- Servisi tekrar başlatmak:
SonarService.bat restart
- Servisi kaldırmak:
SonarService.bat uninstall
6) Servisin düzgün çalıştığını kontrol etmek için tarayıcınızı açın ve şu adrese gidin:
http://localhost:9000
Eğer SonarQube giriş ekranını görüyorsanız, kurulum ve servis başlatma işlemleri başarılı olmuştur.

SonarQube Nasıl Kullanılır?
Tarayıcınızı açın ve SonarQube arayüzüne bağlanmak için aşağıdaki URL’ye gidin:
http://localhost:9000
Karşınıza giriş ekranı çıkacak. Varsayılan kullanıcı adı ve şifre şu şekildedir:
- Kullanıcı adı:
admin
- Şifre:
admin
İlk girişte güvenlik amacıyla şifrenizi değiştirmeniz istenecektir. Yeni bir şifre belirleyin ve kaydedin.

Genel Arayüzü Keşfetme
SonarQube’un kullanıcı arayüzünde yer alan menüler, projelerinizi yönetmenize, kod kalitesini takip etmenize ve sistem ayarlarını yapılandırmanıza olanak tanır.
- Projects: Tüm projelerinizi listeleyip analiz sonuçlarını görebileceğiniz bölümdür.
- Issues: Kodunuzdaki hatalar, güvenlik açıkları ve iyileştirme önerilerinin listelendiği alandır.
- Rules: Kod kalitesi ve güvenlik için kullanılan kuralların yönetildiği bölümdür.
- Quality Profiles: Farklı programlama dilleri için kuralların toplandığı ve özelleştirildiği profillerdir.
- Quality Gates: Kod kalitesini belirlenen kriterlere göre değerlendiren geçiş noktalarıdır.
- Administration: Kullanıcı yönetimi, sistem ayarları ve güvenlik yapılandırmalarını yapabileceğiniz yönetim panelidir.

İlk Projenizi Tarayın
SonarQube’da ilk projenizi taramak oldukça basit! Bu adımda, SonarQube arayüzünde yeni bir proje oluşturacak ve kodlarınızı yerel olarak tarayarak sonuçları inceleyeceksiniz. İşte adımlar:
1) Yeni Proje Oluşturma
- SonarQube Dashboard (Gösterge Paneli) üzerinde sağ üst köşede bulunan “Create Project” butonuna tıklayın ve “Local Project” seçeneğini seçin.
- Proje Adı ve Anahtarını belirleyin:
- Project display name (Proje Adı): Örneğin,
İlk Projem
. - Project key (Proje Anahtarı): Proje adını temel alarak otomatik oluşturulacaktır.
- Project display name (Proje Adı): Örneğin,


2) Set up project for Clean as You Code
Bu adımda SonarQube, projenizi Clean as You Code yaklaşımına göre yapılandırmanızı isteyecektir. Bu özellik, yeni eklenen veya değiştirilen kodları sürekli temiz ve hatasız tutmaya odaklanır.
İki seçenekle karşılaşacaksınız:
- Use the global setting (global ayarı kullan): Bu seçeneği tercih ederseniz, proje taramalarında SonarQube’un genel ayarlarını uygular. Bu, tüm projelerde ortak kalite kriterleri kullanmak için uygundur.
- Define a specific setting for this project (bu proje için özel ayar tanımla): Eğer projeniz için özel kalite kriterleri veya daha farklı kurallar uygulamak istiyorsanız bu seçeneği seçin.
Tavsiye: İlk projelerinizde Use the global setting seçeneğini kullanabilirsiniz. Daha sonra ihtiyacınıza göre projeye özel ayarlar tanımlayabilirsiniz.

3) How do you want to analyze your repository?
Bu adımda SonarQube, kodlarınızı analiz etmek için tercih edeceğiniz yöntemi seçmenizi isteyecektir. Analiz ortamınıza göre farklı seçenekler sunulacaktır. Bu bölümde, Locally (Yerel Tarama) yöntemini anlatacağım.

4) Provide a Token
Bu adımda SonarQube, projenizi analiz etmek için kimlik doğrulama amacıyla bir Authentication Token (Kimlik Doğrulama Anahtarı) oluşturmanızı ister. Bu token, projenizi tararken SonarScanner tarafından kullanılacak ve SonarQube sunucusuna güvenli bir şekilde bağlanmanızı sağlayacaktır.
Önemli: Bu token’ı bir yere not alın. Token, güvenlik nedeniyle SonarQube üzerinde tekrar görüntülenemez.

5) Run analysis on your project
Bu adımda SonarQube, projenizi taramak için kullanılacak en uygun tarama yöntemini belirlemenizi ister. Projenizin yapısına ve ortamınıza bağlı olarak uygun olanı seçmeniz gerekir.
Görselde de görüldüğü gibi, SonarQube seçilen proje türüne ve platforma göre tarama komutunu otomatik olarak oluşturuyor.

6) SonarScanner Kurulumu
Yukardaki kodu çalıştırabilmek için SonarScanner aracını indirmeniz ve ortam değişkenlerinize eklemeniz gerekiyor.
- SonarScanner İndirme Sayfası üzerinden Windows sürümünü indirin.
- ZIP dosyasını C dizini altına çıkarın ve SonarScanner’ın bin klasör yolunu ortam değişkenlerinde PATH değişkenine ekleyin.


7) Tarama İşlemini Başlatma
Artık SonarScanner ile tarama yapmaya hazırsınız. Komut satırını açın, taramak istediğiniz kodun kök dizinine gidin ve SonarQube’da proje oluştururken verilen komutu çalıştırın:
sonar-scanner.bat -D"sonar.projectKey=IlkProjem" -D"sonar.sources=." -D"sonar.host.url=http://localhost:9000" -D"sonar.token=sqp_4870a7e0a962d3b73b36f9fbdd4bb4504c422124"
Bu komut, projenizdeki kodları analiz ederek sonuçları SonarQube sunucusuna gönderir. İşlem tamamlandığında, SonarQube arayüzü üzerinden analiz sonuçlarını görüntüleyebilirsiniz.
Örnek olarak, bir Node.js projesini SonarScanner ile tarayacak ve kod kalitesi analiz sonuçlarını SonarQube arayüzünde inceleyeceğiz.

8) Sonuçları İnceleme
Tarama işlemi tamamlandıktan sonra tarayıcınızı açın ve SonarQube arayüzüne gidin.
SonarQube Dashboard’ında projenizi göreceksiniz. Projeye tıklayarak detaylı analiz sonuçlarına ulaşabilirsiniz:
- Overview: Projenizin genel durumu, metrikler ve tarama özetini gösteren ana ekrandır.
- Issues: Kodunuzdaki hatalar, güvenlik açıkları ve kod kokularının (code smells) detaylı listelendiği bölümdür.
- Security: Projenizde tespit edilen güvenlik açıklarını ve riskleri gösterir.
- Hotspots: Güvenlik açısından dikkat gerektiren kod parçalarını ve olası zafiyetleri analiz eder.
- Measures: Kod kapsamı, kod tekrar oranı, karmaşıklık gibi metriklerin detaylarını sağlar.
- Code: Kaynak kodlarınızı SonarQube arayüzünde görüntüleyebilir ve kod sorunlarını satır bazında inceleyebilirsiniz.
- Activity: Projenin tarama geçmişi ve kod kalitesindeki değişimleri zamana bağlı olarak takip edebileceğiniz bölümdür.


Sonuç
Yazılım dünyasında başarı, sadece çalışan kod yazmakla değil; sürdürülebilir, okunabilir ve güvenli kodlar yazmakla mümkündür. Bu yazıda, SonarQube’un kod kalitesi ve yazılım güvenliği konularındaki kritik rolüne odaklandım. Kod analizine dair sunduğu kapsamlı metrikler, geliştiricilere daha bilinçli kararlar alma ve projelerini bir üst seviyeye taşıma imkânı sunuyor. SonarQube, yalnızca bir araç değil; doğru kullanıldığında ekip kültürünü dönüştüren ve kaliteyi merkeze alan bir rehberdir.
Kod tabanınızı düzenli olarak analiz ederek teknik borcu azaltabilir, ekip verimliliğini artırabilir ve yazılım yaşam döngüsünde uzun vadeli başarı elde edebilirsiniz.
Unutmayın, yazılım bir yolculuktur ve bu yolculukta her adım, öğrenmeye ve öğrendiklerimizi sürekli geliştirmeye açık olmayı gerektirir.
Okuduğunuz için teşekkürler, İyi kodlamalar 😉