20, Nis 2023
SonarQube Nedir?

Bu yazımda SonarQube kullanımı ve kavramları üzerine değinmek istiyorum. SonarQube statik kod analiz aracı ve clean code gibi unsurları içinde barındıran open source güvenlik aracıdır. Peki statik kod analizi ve dinamik kod analizi arasındaki temel fark nedir? Statik kod analizi kodun derlemeden yapılan analizdir. Dinamik kod analizi ise run time esnasında yapılan analizidir.

Resim 1: SonarQube Pipeline (google.com)

SonarQube ci/cd pipeline’larını bağlayarak kod kalitesini arttırabilirsiniz. Ci akışında mevcut kod, bir önceki yada geçmiş gün kodla statik kod karşılaştırmasını yaparak production ortama giden kodun kalitesinin artması noktasında yardımcı olacaktır. SonarQube üzerinde projelerin değerlendirmesi harf dereceleri ile yapılır. Yazılım kalitesi dediğimizde; performans, güvenlik, sağlamlık ve bakım olarak düşünebiliriz. Sonar uygulaması kendi içerisinde ön tanımlı kural setleri ile birlikte geliyor. Kural setleri yazılım dillerine göre gruplara ayrılıyor. Uygulama versiyonu güncellediğinizde bu kural setlerinde azalma yada çoğalma olabilir. Kural setlerinin referans alındığı kurumlar;

SonarQube kaynak kodu analiz etme aşamasında kullandığı yöntemler;

Community versiyonun desteklediği diller başında Java, C#, JavaScript, TypeScript, CloudFormation, Terraform, Kotlin, Ruby, Go, Scala, Flex, Python, PHP, HTML, CSS, XML ve VB.NET gelmektedir. Eğer mobil teknolojiler için kullanmak istiyorsanız IOS, Swift vs ürünün develop yada daha üst seviyelerdeki lisansı satın almanız gerekiyor. Sonar community tarafında plugin desteği oldukça fazla olduğunu söyleyebiliriz. Kullandığınız versiyona bağlı olarak dillerin kural setleri ön tanımlı olarak gelmektedir. Uygulamanın versiyonlarına bağlı olarak bu sayılar da değişiklik olabilir.

Resim 2: Kural Setleri

Sonar uygulamasının en güzel yanı size hatanızı göstermede yardımcı olurken aynı zamanda size çözüm yada yaklaşımda göstermektedir. Aşağıdaki örnekte Atomic sınıflarda değer karşılaştırmada .equals kullanmanın doğru olmadığını bizlere söylüyor.

Resim 3: Çözüm Önerisi

Sonar uygulaması üzerinde kendinize ait profile bilgileri tanımlayıp şirket kültürünüze bağlı olarak taramalar da yapabilirsiniz. Aynı zamanda tarama esnasında pas geçilmesini istediğiniz özel yada crypto dosyalar varsa bunlar için exclude yaklaşımını kullanabiliriz. Gate’ler üzerinden test coverage değerlerine bağlı olarak pipeline akışı sağlayabilirsiniz.

Resim 4: Proje Ekranı

Yukarıdaki proje ekranında yer alan bazı kavramları biz ING Türkiye DevOps takımı olarak aşağıdaki gibi tanımladık;

Bugs: taranan kod içerisinde düzeltilmesi gereken, ileri zamanlarda soruna yol açabilecek noktaları işaretler.

Code Smells: Kodun sürdürülebilirliği için düzeltmeleri işaret eder. İlerleyen zamanlarda kodda bakım ve okunabilirlik maliyetlerini düşürmek için çözümlenmesi gereken, temiz kod için gerekn noktaları işaretler.

Debt: Code smell’lerin düzeltilmesi için yaklaşık zaman maliyetini gösterir.

Security Hotspot: Göz geçirilmesi gereken varsayımsal güvenlik bulgularını gösterir. Güvenlik açığı oluşmasını engellemek için review şartı koşar.

Vulnerability: Best practise güvenlik kurallarına göre arka kapı oluşturabilecek bulguları gösterir.

Coverage: Kodun yüzde kaçının unit test ile test edildiğini gösterir.

Dublication: kaynak kodda ne kadar bloğun birebir kopyalanmış olduğunu gösterir.

Maintainbility: bu projeyi rahat bir şekilde güncelleyebilir ve yeni teknolojiler ile kullanabilirim.

Birazda daha Quality Gate kavramına bakacak olursak projelerimizin sonar taraması sonucunda başarılı mı yoksa başarısız mı olduğuna karar vermek için Gated yaklaşımına başvurabiliriz. SonarQube ilk kurulumda best practise olan Sonar Way Gate ile gelmektedir. Buradan clone alarak proje bazlı yada dil bazlı yeni Quality Gate’ler tanımlayabiliriz.

Resim 5: Sonar Way

Son olarak SonarQube ile en çok karıştırılan SonarLint ise IDE ile birlikte kullanabileceğimiz kalite sorunlarını tespit etme ve öneride bulunan yazılımcı seven plugin dir. Desteklediği IDE’ler arasında Visual Studio, Intellij, VsCode ve Eclipse olduğunu belirtebiliriz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir