🔍 SonarQubeSetting Nedir? .csproj Üzerinden Nasıl Kullanılır?

C# projelerinde SonarQube analizini yapılandırmanın en güncel ve pratik yolu .csproj dosyası üzerinden yapılır. Eskiden SonarQube.Analysis.xml dosyası ile yapılan bu işlemler, artık doğrudan proje dosyasına eklenen SonarQubeSetting öğeleri ile tanımlanabiliyor.

Bu yazıda, SonarQubeSetting nedir, ne işe yarar ve .csproj dosyasında nasıl doğru şekilde kullanılır, tüm detaylarıyla ele alacağız.

🧩 SonarQubeSetting Nedir?

SonarQubeSetting, C# .csproj dosyasında yer alan özel bir XML öğesidir. MSBuild tabanlı projelerde SonarScanner kullanırken, analiz davranışını özelleştirmek için bu öğeyle belirli ayarlar tanımlayabilirsiniz.

Her bir SonarQubeSetting, Include özelliği ile hangi ayarın yapılacağını belirtir ve Value etiketi ile değeri tanımlanır.

🛠️ .csproj Üzerinden Kullanımı

Aşağıda tipik bir .csproj içinde kullanılan SonarQubeSetting yapılandırma örneği bulunmaktadır:

<ItemGroup>
  <!-- Test coverage analizinden hariç tutulacak klasör ve dosyalar -->
  <SonarQubeSetting Include="sonar.coverage.exclusions">
    <Value>**/Tests/**, **/Migrations/**</Value>
  </SonarQubeSetting>

  <!-- Duplicate code (kod tekrarları) analizinden hariç tutulacak alanlar -->
  <SonarQubeSetting Include="sonar.cpd.exclusions">
    <Value>**/Migrations/**</Value>
  </SonarQubeSetting>

  <!-- Tüm analizlerden (Maintainability, Reliability, Code Smell vs.) hariç tutulacak yollar -->
  <SonarQubeSetting Include="sonar.exclusions">
    <Value>**/Migrations/**, **/Database/**</Value>
  </SonarQubeSetting>
</ItemGroup>

🧠 Açıklamalar

AyarAçıklama
sonar.coverage.exclusionsTest kapsamı dışına alınacak yollar. Kod coverage metriklerinden çıkarır.
sonar.cpd.exclusionsKod tekrarlarını tespit eden analizden çıkarılacak yollar.
sonar.exclusionsTüm SonarQube analizlerinden hariç tutulacak yollar (Maintainability dahil).

Özellikle **/Migrations/** ve **/Database/** gibi EF Core tarafından üretilmiş ya da analiz sonucu yanıltabilecek klasörler için oldukça faydalıdır.

🎯 Ne Zaman Kullanılmalı?

  • EF Core Migrations gibi otomatik üretilen dosyalar kalite analizini gereksiz yere etkiliyorsa
  • Maintainability veya Code Smell metriklerinin gerçek kod kalitenizi temsil etmesini istiyorsanız
  • Test kapsamını sadece iş mantığını içeren sınıflarla sınırlamak istiyorsanız

Bu ayarları kullanmak analizlerin doğruluğunu ciddi şekilde artıracaktır.

✅ Sonuç

.csproj üzerinden SonarQubeSetting kullanmak, projelerinize SonarQube entegrasyonu yaparken esnek ve modern bir yaklaşım sunar. Kod kalitesi metriklerinin sadece ilgili alanları kapsamasını sağlayarak, daha anlamlı ve temiz analiz raporları elde edebilirsiniz.

Bunlar da hoşunuza gidebilir...