🔍 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
| Ayar | Açıklama |
|---|---|
sonar.coverage.exclusions | Test kapsamı dışına alınacak yollar. Kod coverage metriklerinden çıkarır. |
sonar.cpd.exclusions | Kod tekrarlarını tespit eden analizden çıkarılacak yollar. |
sonar.exclusions | Tü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
Migrationsgibi 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.