Merhaba,
Bu makalede yazılımcıların ve Devops mühendislerinin en çok kullandığı uygulamalardan biri olan sonarqube uygulamasını inceleyeceğiz.
Sonarqube, yazılım geliştirme sürecinde kullanılan bir açık kaynaklı platformdur. Kod kalitesini analiz etmek, hataları ve kötü uygulama uygulamalarını belirlemek için kullanılır. Hem community hem de enterprise sürümleri bulunmaktadır.
Sonarqube uygulamasını ister direk sunucu üzerine istersek docker veya kubernetes üzerine veya sonarcloud üzerinde çalıştırabiliriz.
Sonarqube Özellikler
Statik Kod Analizi: SonarQube kaynak kodunu çalıştırmadan analiz eder. Hatalar, güvenlik açıkları, kod çoğaltma ve daha fazlası gibi sorunları kontrol eder.
Kalite Kapıları: SonarQube, analizi geçmek için kodunuzun karşılaması gereken standartları tanımlamak için kalite kapılarını kullanır. Yeni kod değişikliklerinin yeni kalite sorunları yaratmamasını sağlamaya yardımcı olur.
CI/CD ile entegrasyon: SonarQube, Jenkins, GitLab CI ve Travis CI gibi sürekli entegrasyon (CI) araçlarıyla iyi bir şekilde entegre olur. Bu, ekiplerin CI/CD hattının bir parçası olarak kod analizini otomatikleştirmesine olanak tanır.
Birden Çok Dil Desteği: SonarQube, 27'den fazla programlama dilini destekleyerek birden fazla teknolojiyle çalışan ekipler için mükemmel bir uyum sağlar.
Sonarqube Neyi Analiz Eder
Sonarqube bir yazılımı test ederken aşağıdaki noktaları ele alır ve analiz eder.
Bugs: Kod içerisinde problem meydana getilebilecek hatalardır.
Vulnerability: Güvenlik açıklarını tespit eder.
Code Smell: Gereksiz yere yazılmış olan kodları tespit eder. Daha temiz ve anlaşılabilir kod yazılmasını belirtir. Çünkü bu kodlar ileride bakım zorlaştırabilir ve problem meydana getirebilir.
Duplicated Code: Aynı veya benzer kod bloklarını analiz eder.
Sonarqube Bileşenleri
Sonar Scanner: Asıl kod analizini yapan araçtır.
Sonarqube GUI: Sonar scanner tarafından analiz edilen kodu GUI aracılığıyla kullanıcıya sunar.
Veritabanı: Analiz edilen kodun saklandığı bileşendir.
Kurallar: Sonarqube bir kodu analiz ederken daha önce sağlayıcı ve topluluklar tarafından belirlenen kurallarla karşılaştırarak analiz eder.
Qaulity Profiles
Kuralları içeren profillerdir. Sonarqube tarafından varsayılan olarak desteklediği diller için profiller mevcuttur. Örneğin; C# dili için yazılmış kurallar C# için oluşturulmuş profilin içerisinde bulunur. İstenirse kendi profilimizi yazıp istenilen kuralları atayabilir ve oluşturulan projede bu profili kullan diyebiliriz.
Quality Gates
Bir projenin uyması gereken kurallar bütünü ya da bir güvenlik kapısı diyebiliriz. Örneğin; bir proje de en fazla 3 tane bugs , en fazla 2 vulnerability ya da coverage oranı %75 üzerinde ise kod geçerli olsun diyebiliyoruz. Bu değerle uymayanlar failed duruma düşmektedir.
New Code ve Overall Code Nedir ?
Sonarqube geliştiricilerin yoluna temiz kod ile ilerleyin (Clean as You Code ) felsefisini ele alır. Bundan dolayı New Code ve Overall Code kavramları bulunmaktadır.
New Code: Bir referans noktasından sonra yazılan kodlardır. Referans noktaları önceki sürüm, belirli bir tarih, belirli bir analiz ya da branch olabilir. Amaç geliştiricilerin bundan sonra ki işlemlerinde bugs, vulnerability, code smell'in ortaya çıkmamasını sağlamaktadır.
Overall Code: Eski kod + yeni code ' nın birleşimi ile oluşur ve projeye genel bir bakış yapar. Aslında overall code projenin tamamıdır. Tabi ki sadece new code ' ye bakmak yeterli değil overall code içerisinde bulunan bugs, vulnerability ... zamanla iyileştirmek gerekir.
Qaulity Gates New Code'ye bakarak analiz yapar ve kodu değerlendirir. Bu yüzden bir proje oluştururken ilk analizin passed geçecektir. Çünkü ilk analiz bir referans noktası olur. Bu analizden sonra yazılan kodlar new code olur ve eğer quality gates'e takılırsa failed olur.
Eğer sonarqube new code yaklaşımı ile çalışmasaydı eski projeler sürekli failed verirdi ve bunları düzeltmek aylar sürebilirdi. Sonarqube eski koda bakmaz yeni kodlara odaklan felsefesi ile çalışır.
Sonarqube ile Python Kodu Analiz Etmek
İstesek projemizi git repositorylerinden alabiliriz fakat ben burada test amaçlı local kullanacağım.
Burada istersek CI/CD tooluna entegre edebiliriz ama yine test olduğu için local olarak ilerliyorum.
Bundan sonra Continue diyoruz ve bizden hangi yazılım dili için işlem yapacağımızı soruyor.

Ardından bize aşağıdaki gibi bir komut verecektir.
pip install pysonar, ile uygulamayı kuracağız ve komutu çalıştırdıktan sonra GUI de sonuçları gösterecek.
pysonar \
--sonar-host-url=http://172.35.28.154:9000 \
--sonar-token=sqp_3adb3f55fe5d9239d5a2adb5cc53b8915d8754a7 \
--sonar-project-key=python-project
Tabi bu şekilde kullanmak yerine Jenkins, Gitlab CI vb. uygulamalara entegre edilerek kullanılıyor. Bir sonra ki makalede Gitlab CI ile entegre etme işlemini göreceğiz.
İyi günler.






Top comments (0)