SonarQube Kullanımı

SonarQube Kullanımı

SonarQube Nedir?

SonarQube, yazılım projelerinin kod kalitesini ve güvenliğini analiz etmek için kullanılan açık kaynaklı bir platformdur. 30'dan fazla programlama dili, framework ve IaC (Infrastructure as Code) platformunda kodlama sorunlarını tespit etmek amacıyla tasarlanmış on-premise analiz aracıdır.

SonarQube Ne İçin Kullanılır?

SonarQube, yazılım geliştirme süreçlerinize entegre edilerek, kodunuzu birleştirme (merge) veya çekme (pull) işlemlerinde otomatik olarak analiz eder. Bu analiz sırasında kodun sürdürülebilirliği, güvenilirliği ve güvenliği gibi önemli kriterlere odaklanılır. Kodunuz, kapsamlı bir kural setine göre değerlendirilerek olası hatalar veya iyileştirme alanları belirlenir.

SonarQube Nasıl Çalışır?

  1. GitHub Entegrasyonu: SonarQube, GitHub gibi kaynak kodu yönetim platformlarına entegre edilir.

  2. Pull Request Gönderme: Bir pull request (PR) gönderildiğinde, GitHub Actions pipeline’ı otomatik olarak çalıştırılır.

  3. Kod Analizi: SonarQube, gönderilen kodu alır, inceler ve analiz eder.

  4. Sonuçların İncelenmesi: İlgili ekip, analiz sonuçlarını SonarQube Web UI üzerinden gözden geçirir ve kod üzerinde gerekli düzenlemeleri yapar ya da yapılması konusunda yönlendirir.

SonarQube Nasıl Kullanılır ve Verilen Değerlerin Anlamları

SonarQube web arayüzüne giriş yaparak kendi projelerinizi ve kod sahipliğini üstlendiğiniz bölümleri görüntüleyebilirsiniz. Proje sayfasında bulunan ana sekmeler ve metrikler aşağıdaki şekildedir:

  1. OverviewSekmesi: Projenin genel sağlık durumunu, kod kalitesini ve güvenliğini özetleyen en önemli metrikleri gösterir. Analiz sonuçlarını takip etmeye yardımcı olur.

  • Quality Gate Status: Projenin belirlenen kalite kriterlerini geçip geçmediğini gösterir.

    • Passed: Tanımlanan kalite kriterlerini karşılıyor.

    • Failed: En az bir kalite kriterini karşılamıyor.

  • Coverage: Kodun test kapsamını ölçer.

    • Yüzdelik Değer: Kodun ne kadarının otomatik testler tarafından kapsandığını gösterir.

    • Hedef: Genellikle %80 veya daha üzeri bir kapsama oranı hedeflenir.

  • Duplication: Kodun yüzde kaçının tekrarlanan yapılar içerdiğini gösterir.

  • Reliability: Kodun hata oranını ve hataların ciddiyetini değerlendirir.

    • A (Çok Güvenilir): Kritik hata yok.

    • B-D (Orta Düzeyde Hata): Orta düzeyde hata var.

    • E (Çok Düşük Güvenilirlik): Çok düşük güvenilirlik, kritik hatalar mevcut.

  • Security: Kodun bilinen güvenlik açıklarına karşı ne kadar güvenli olduğunu ölçer.

    • A (Hiçbir Güvenlik Açığı Yok): Hiçbir güvenlik açığı yok.

    • E (Çok Ciddi Güvenlik Açıkları Var): Çok ciddi güvenlik açıkları var, derhal düzeltme gerektirir.

  • Maintainability: Kodun bakım yapılabilirlik seviyesini değerlendirir.

    • A (Çok İyi Durumda): Kod iyi durumda, kolayca bakım yapılabilir.

    • E (Ciddi Problemler Var): Kod tabanında ciddi problemler var, büyük iyileştirmeler gerekebilir.

  1. "Issues" Sekmesi: Kodla ilgili kalite, güvenlik ve sürdürülebilirlik sorunlarını gösterir. Bu sekme, geliştiricilerin projede bulunan potansiyel problemleri takip etmelerine ve bu sorunları düzeltmelerine yardımcı olur.

  2. “Security Hotspots“ Sekmesi: Güvenlik risklerini belirlemek ve bu risklerin derinlemesine incelenmesini sağlamak için kullanılır. Bu sekme, güvenlik açığı olmayan ancak potansiyel güvenlik riski taşıyan kod parçalarını gösterir.

  3. “Measures“ Sekmesi: Kod kalitesi ölçümlerini sunar. Kodun uzun vadede sürdürülebilirliğini ve bakımını etkileyen faktörler hakkında bilgi verir.

  4. "Code" Sekmesi: Sahip olduğunuz kod parçalarının genel durumunu ve metriklerini gösterir.

  5. “Activity“ Sekmesi: Projedeki tüm faaliyetleri, güvenlik ve diğer kalite sorunlarını takip eder. Bu sekme, proje üzerindeki tüm değişikliklerin ve geliştirici aktivitelerinin geçmişini gösterir.

Kimler Sorumlu ?

SonarQube içerisinde Front-End, Back-End ve DevOps ekipleri için farklı gruplar ve kullanıcılar oluşturulmuştur. Her ekip, kendi sorumluluk alanındaki kod analiz sonuçlarıyla ilgilenir:

  • Front-End ve Back-End Ekipleri: Kod analizlerinin sonuçlarına göre, yazılım geliştirme süreçlerinin kalite kontrolü ve iyileştirilmesi konusunda sorumludur. Bu ekipler, kodun sürdürülebilirliğini, güvenilirliğini ve güvenliğini değerlendirir ve düzeltmeler yapar.

  • DevOps Ekibi: SonarQube yönetimi ve entegrasyonu ile ilgilenir. Bu ekip, SonarQube’un düzgün çalışmasını sağlamak, yapılandırma sorunlarını çözmek ve analiz pipeline’larının düzgün çalışmasını temin etmekten sorumludur.

Herhangi bir sorun ile karşılaşıldığında, DevOps ekibiyle iletişime geçebilirsiniz.

Kaynaklar

https://afetyonetimsistemi.atlassian.net/wiki/spaces/AYS/pages/151748609/AYS+SonarQube

https://docs.sonarsource.com/sonarqube-server/latest/?_gl=1*1dmwwt5*_up*MQ..*_gs*MQ..&gclid=CjwKCAiAmrS7BhBJEiwAei59i9VucxxR-g88QRArFKMDvCHM1kuSz_12sasp8Qp6_IJqBf75lFENsRoCZQMQAvD_BwE

https://docs.sonarsource.com/sonarqube-server/latest/instance-administration/analysis-functions/quality-gates/

https://docs.sonarsource.com/sonarqube-server/latest/user-guide/code-metrics/introduction/