- Statik kod analizi neyi çözer?
- SonarQube ne yapar ve hangi bulguları üretir?
- Kurulum ve ilk analiz nasıl yürür?
- Kural setini yönetmek ve kalibre etmek
- Test kapsamı ve güvenlik bulguları
- Kalite kapıları ve CI entegrasyonu
- Sık yapılan hatalar ve yol haritası
- Bu beceriyi Mindset programlarında nerede çalışırsınız?
- Sık sorulan sorular
Statik kod analizi: SonarQube ile kodu çalıştırmadan denetlemek
Statik kod analizi nedir, SonarQube ile nasıl kurulur ve yapılandırılır? Kural seti, kapsam, güvenlik bulguları, kalite kapısı ve CI entegrasyonu.
Statik kod analizi neyi çözer?
Statik kod analizi, kodu çalıştırmadan kaynak metni inceleyerek olası hataları, güvenlik açıklarını ve bakım sorunlarını bulma yöntemidir. Bir aracın kuralları kodunuza uygulaması, her satırı bir insanın okumasından çok daha hızlıdır ve tutarlıdır: aynı kural her dosyada, her gün aynı biçimde denetlenir.
Bu yöntem testin yerini almaz, onu tamamlar. Test, kodun çalıştığında ne yaptığını sınar; statik analiz ise çalıştırılmayan yolları da dahil olmak üzere yapısal sorunları görür: kullanılmayan değişkenler, boş referans riski, kaynak sızıntıları, tekrar eden kod blokları, aşırı karmaşık yöntemler ve bilinen güvensiz kod desenleri. Böylece kod gözden geçirmede insanın zamanı biçim tartışmalarına değil tasarım ve iş mantığına kalır.
SonarQube ne yapar ve hangi bulguları üretir?
SonarQube, kod kalitesini ve güvenliğini sürekli denetleyen bir platformdur. Birçok programlama dilini destekler, bir sunucu olarak çalışır ve analiz sonuçlarını web arayüzünde projelere göre sunar. Bulguları genellikle birkaç sınıfa ayırır: gerçek hata olma ihtimali yüksek kod desenleri, güvenlik açığı olabilecek yapılar, güvenlik gözden geçirmesi gerektiren noktalar ve bakım yükü yaratan kod kokuları.
Platform bulguların yanında ölçümler de verir: kodun test kapsamı, tekrar eden kod oranı, karmaşıklık ve borç göstergeleri. Teknik borç, sorunların giderilmesi için gereken tahmini çabayı ifade eder ve önceliklendirmede yardımcı olur. En önemli özelliklerinden biri, analizi yeni yazılan koda odaklayabilmesidir; eski koddaki birikmiş sorunlar yüzünden ekip bunalmadan, yeni eklenen kodun temiz olması sağlanır.
Kurulum ve ilk analiz nasıl yürür?
Kurulum akışı genellikle şöyledir:
- SonarQube sunucusunu ayağa kaldırın ve bir veritabanıyla yapılandırın; ekip kullanımı için ayrı bir sunucu ya da konteyner ortamı tercih edilir.
- Arayüzde projeyi oluşturun ve bir erişim anahtarı üretin.
- Derleme aracınıza ya da komut satırına uygun tarayıcıyı (scanner) ekleyin; proje anahtarı, kaynak dizin ve sunucu adresi ile çalıştırın.
- İlk analiz bittiğinde arayüzde bulguları ve ölçümleri gözden geçirin.
İlk analizde çok sayıda bulgu görmek normaldir. Bu aşamada hepsini hemen düzeltmeye çalışmak yerine, hangi kuralların ekibiniz için anlamlı olduğuna karar verin. Eski koddaki bulguları bir başlangıç çizgisi olarak kabul edip yeni kod için sıkı bir standart koymak, sürdürülebilir bir başlangıç yöntemidir.
Kural setini yönetmek ve kalibre etmek
SonarQube'daki kural koleksiyonuna kalite profili denir ve her dil için ayrı yönetilir. Hazır profil iyi bir başlangıçtır, ancak olduğu gibi bırakıldığında gürültü üretebilir. Gürültü, ekibin araca olan güvenini ve bulgulara olan dikkatini aşındırır; bu yüzden kalibrasyon gerekir.
Kalibrasyon pratikte şunları içerir: ekip için anlamsız ya da projeye uymayan kuralları kapatmak; önemli kuralların önem düzeyini yükseltmek; yanlış pozitif olduğu kanıtlanmış bulguları gerekçeyle işaretlemek; kurum standartlarına özgü kurallar eklemek. Önemli olan, bu kararların kayıtlı ve gerekçeli olmasıdır. "Bu kural bizim mimarimizde şu nedenle geçerli değil" demek meşrudur; "sıkıcı geldiği için kapattık" değildir. Kural değişiklikleri ekip adına paylaşılan bir karar olarak yönetilmelidir.
Test kapsamı ve güvenlik bulguları
SonarQube kendi başına test çalıştırmaz; test araçlarınızın ürettiği kapsam raporlarını içe alır ve gösterir. Bu nedenle kapsam ölçümü, testlerin derleme hattında çalıştırılıp raporun tarayıcıya iletilmesiyle kurulur. Kapsamı yorumlarken dikkat gerekir: yüksek kapsam, kodun iyi sınandığı anlamına gelmez; yalnızca satırların çalıştırıldığını gösterir. Bu yüzden kapsamı hedef yapmak yerine, özellikle yeni kodda anlamlı bir alt sınır belirlemek ve riskli modüllere dikkat etmek daha sağlıklıdır.
Güvenlik bulgularında bir ayrım özellikle önemlidir. Açık olarak sınıflanan bulgular doğrudan düzeltilmesi gereken sorunlardır. Güvenlik gözden geçirmesi gerektiren noktalar ise tek başına açık demek değildir; bir insanın bağlama bakıp güvenli mi değil mi karar vermesi istenir. Gizli anahtarların kod içinde bırakılması, güvensiz rastgele sayı kullanımı ve girdi doğrulama eksikleri bu tür bulgulardan örneklerdir.
Kalite kapıları ve CI entegrasyonu
Kalite kapısı (quality gate), bir kod değişikliğinin kabul edilebilir olması için geçmesi gereken koşullar kümesidir. Örneğin yeni kodda yeni güvenlik açığı bulunmaması, belirli bir test kapsamının altına düşülmemesi ve tekrar eden kodun sınırın üstüne çıkmaması gibi koşullar tanımlanabilir. Kapı geçilemezse sonuç başarısız sayılır.
En etkili kullanım, kalite kapısını sürekli entegrasyon hattına bağlamaktır. Akış şöyle işler: geliştirici bir çekme isteği açar, hat testleri çalıştırır, tarayıcı analizi sunucuya gönderir, sunucu kapı sonucunu hatta bildirir ve başarısızsa birleştirme engellenir. Böylece kalite kararı insanın hatırlamasına değil otomasyona bırakılır. Başlangıçta kapıyı gevşek tutup zamanla sıkılaştırmak, ekibi bir anda bloke etmenin önüne geçer. Kapıda yalnızca yeni kodu denetlemek de eski borçla yarışmadan ilerlemeyi sağlar.
Sık yapılan hatalar ve yol haritası
- Hepsini bir anda düzeltmeye çalışmak: Eski koddaki birikmiş bulgular ekibi yorar. Yeni koda odaklanın, eskiyi planlı biçimde azaltın.
- Bulguları saymak: Önem düzeyi ve bağlam olmadan bulgu sayısı yanıltır.
- Araca körü körüne güvenmek: Yanlış pozitifler vardır; her bulgu bir insan yargısı ister.
- Kalite kapısını bayrak yapmak: Kapının amacı ceza kesmek değil, kaliteyi korumaktır.
- Kural setini hiç gözden geçirmemek: Kurallar ve dil sürümleri değişir.
- Güvenlik taramasını yalnızca bu araca bırakmak: Statik analiz, bağımlılık taraması ve dinamik testlerle birlikte anlam kazanır.
Önerilen yol: önce bir projede temel analizi çalıştırın, bulguları sınıflayın ve kalite profilini kalibre edin; sonra kapsam raporlarını bağlayın; en sonda kalite kapısını hatta zorunlu hâle getirin ve ekipler arasında yaygınlaştırın.
Bu beceriyi Mindset programlarında nerede çalışırsınız?
Statik Kod Analizi ve Kalite Kapıları (SonarQube) programı modül başlıklarıyla bu sayfadaki akışa denk gelir: Statik Analiz Temelleri ve Kurulum, Kural Seti Yönetimi ve Kalibrasyon, Kapsama Entegrasyonu ve Güvenlik Bulguları, Kalite Kapıları ve CI Entegrasyonu.
İlgili Mindset programı
Statik Kod Analizi ve Kalite Kapıları (SonarQube)
Sık sorulan sorular
Statik analiz ile birim testi arasındaki fark nedir?
Birim testi kodu çalıştırıp beklenen çıktıyı doğrular. Statik analiz kodu çalıştırmadan inceler ve yapısal ya da güvenlik sorunlarını bulur. Test çalışan davranışı, analiz ise kodun yapısını denetler. Biri diğerinin yerine geçmez; birlikte kullanıldıklarında farklı hata sınıflarını yakalarlar.
SonarQube yalnızca belirli dillerde mi çalışır?
SonarQube pek çok popüler programlama dilini destekler, ancak desteklenen dil listesi ve bazı özellikler sürüme ve lisans türüne göre değişir. Kullanacağınız dil için kural kapsamını ve sunduğu güvenlik denetimlerini kurulumdan önce resmî dokümantasyondan kontrol etmeniz doğru olur.
Kalite kapısı geçilemezse ne olur?
Kapı geçilemezse analiz sonucu başarısız işaretlenir. Sürekli entegrasyon hattına bağlıysa derleme ya da çekme isteği engellenir ve geliştirici, hangi koşulun aşıldığını arayüzde görerek düzeltme yapar. Düzeltme sonrası yeniden analiz çalışır ve kapı geçildiğinde değişiklik kabul edilir.
Yanlış pozitif bulguyla ne yapmalıyım?
Bulguyu gerekçesiyle yanlış pozitif olarak işaretleyin; böylece kayıt altında kalır ve tekrar sorun çıkarmaz. Aynı kural ekibinizde sürekli yanlış pozitif üretiyorsa kuralı kalite profilinde ayarlamak ya da kapatmak daha doğrudur. Her seferinde gerekçe yazmak, kararın sonradan anlaşılmasını sağlar.
Yüksek test kapsamı kod kalitesinin kanıtı mıdır?
Hayır. Kapsam yalnızca testler sırasında hangi satırların çalıştığını gösterir; testin doğru şeyi doğrulayıp doğrulamadığını söylemez. Zayıf doğrulamalı testlerle de yüksek kapsam elde edilebilir. Kapsamı anlamlı bir alt sınır olarak kullanıp test niteliğini gözden geçirmek gerekir.