Kod Kalitesi ve Kod Analizi yazı dizimizin bu haftaki sayısında Statik Kod Analizi konusunu ele alacağız. Önceki haftalarda yayınlanmış yazılarımıza ulaşmak için linkleri takip edebilirsiniz: X-Driven Development, Clean Code.
Statik Test / Statik Analiz Nedir, Ne İşe Yarar?
Oldukça temel ancak bir o kadar da gerekli bir soru. En özet tanımlama ile “Statik Testin”, yazılımın çalıştırılmadan (execute) kontrol edilmesi olduğu söylenebilir. Bu sayede yazılım geliştirme sürecinin erken aşamalarında hataların bulunarak, çözüme kavuşturulması hedeflenmektedir. Zira proje içerisindeki hatalar ne kadar geç bulunursa, düzeltmek maliyeti o kadar yüksek olmaktadır. İtibar, para kaybı gibi yan etkileri düşünmeden sadece re-work’e baktığımızda dahi böyle bir sonuca varmamız oldukça kolay.
Statik Test vs. Statik Analiz
Statik Testi iki alt kırılıma indirgeyebiliriz, “Gözden Geçirme (Review)” ve “Statik Analiz”. Review’lar direkt olarak bu yazının odağı olmadığı için değinmeden geçeceğim.
Statik Analiz ise yazılımı oluşturan parçaların, kod veya veri, çoğunlukla çeşitli araçlar kullanılarak test edilmesi olarak ifade edilebilir. Statik Kod Analizi, temiz (clean) kod yazmanın en önemli bacağı olarak değerlendirilmelidir. Bu araçları kullanarak clean kod yazmak için gerekli olan,
- Kodlama standartlarına uygunluk
- Tekrardan kaçınma
- Birim testlerinin yeterliliği
- Karmaşıklığın doğru dağılımı
- Spagetti olmayan tasarım
- Yeterli yorum frekansı
gibi kriterleri sağlamak çok daha kolay olmakta.
Kullanılabilir Araçlar
Bu araçların bir kısmı halihazırda kullanılan Visual Studio, IntelliJ Idea gibi popüler IDE’ler ile entegre iken, bir kısmı da bağımsız olarak yer almakta. PMD, Checksytle ve Findbugs bu araçlardan Java ekosistemi içinde en fazla kullanılanlardan.
Checkstyle
Kısaca yazılan kodun, kodlama standartlarına uygunluğunu kontrol eden bir araçtır. Belirlediğiniz kod konvansiyonuna göre, isimlendirme, kütüphane kullanımı, boşluklandırma ve yorum frekansı gibi kodun okunabilirliğini ve bakım yapılabilirliği arttıracak nitelikleri kontrol eder.
FindBugs
Bu araç diğerlerinden farklı olarak direkt bytecode üzerinden analiz işlemi yapmaktadır. PDM’ye benzer özelliklere sahip olmasının yanında concurrency sorunları ve bazı zafiyetlerin bulunması yardımcı olmaktadır.
PMD
En temel anlamı ile yazılan koddan üretilen Abstract Syntax Tree (AST) üzerinden kodu çalıştırmadan analiz işlemi yapan bir araçtır. Erişilemeyen veya tekrar eden kod parçacıklarını, aşırı karmaşıklığı, olası hataları ve optimize edilmemiş alanları belirleyen etkili bir open-source yazılımdır.
Daha fazlası için https://www.keytorc.com/uluslararasi-kod-kalitesi-ve-kod-analizi-egitimi/
Berk Dülger
Danışman, Keytorc