Azure DevOps’ta SonarQube Entegrasyonu: .NET Projeleri İçin Tam Parametre Rehberi
Kod kalitesini ve güvenliğini sürekli olarak ölçmek, modern yazılım geliştirme süreçlerinin vazgeçilmez bir parçası. SonarQube, bu noktada en güçlü araçlardan biri. Azure DevOps ile entegre edildiğinde, her build veya pull request’te otomatik analiz yaparak ekibinize anında geri bildirim sağlar.
Bu yazıda, .NET projeleri için Azure DevOps pipeline’ında kullanılan üç temel SonarQube görevi olan SonarQubePrepare@7, SonarQubeAnalyze@7 ve SonarQubePublish@7 görevlerini, tüm parametreleriyle birlikte detaylıca inceleyeceğiz.
1️⃣ SonarQubePrepare@7 – Analiz Yapılandırmasını Hazırlama
Bu görev, SonarQube sunucusuna bağlanır ve analiz için gerekli ortamı hazırlar.
Temel Parametreler
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
SonarQube | string | ✔ | Azure DevOps’ta tanımlı Service Connection adı. |
scannerMode | string | ✔ | Analiz modu: dotnet, cli, other. |
projectKey | string | ✔ (.NET/CLI) | SonarQube’deki proje anahtarı. |
projectName | string | Opsiyonel | Projenin görünen adı. |
projectVersion | string | Opsiyonel | Proje versiyonu. Varsayılan: 1.0. |
.NET Moduna Özel Parametreler (scannerMode: dotnet)
| Parametre | Açıklama |
|---|---|
msBuildVersion (alias: dotnetScannerVersion) | Kullanılacak SonarScanner for .NET versiyonu. |
CLI Moduna Özel Parametreler (scannerMode: cli)
| Parametre | Açıklama |
|---|---|
cliVersion (alias: cliScannerVersion) | Kullanılacak CLI versiyonu. |
configMode | file veya manual. |
configFile | file modunda kullanılacak ayar dosyası. |
cliProjectKey | manual modda zorunlu. |
cliProjectName | manual modda opsiyonel. |
cliProjectVersion | manual modda opsiyonel. |
cliSources | manual modda zorunlu. |
Advanced Parametreler
| Parametre | Açıklama |
|---|---|
extraProperties | Ek SonarQube özellikleri. Her satıra anahtar=değer şeklinde yazılır. |
💡 Örnek Kullanım (.NET)
yaml
- task: SonarQubePrepare@7
inputs:
SonarQube: 'SonarQubeServiceConnection'
scannerMode: 'dotnet'
projectKey: 'my-dotnet-project'
projectName: 'My .NET Project'
projectVersion: '1.0'
msBuildVersion: '5.14.0'
extraProperties: |
sonar.exclusions=**/*.Designer.cs
sonar.coverage.exclusions=**/Migrations/**
2️⃣ SonarQubeAnalyze@7 – Kod Analizini Gerçekleştirme
Bu görev, kodun statik analizini yapar ve sonuçları SonarQube sunucusuna gönderir.
Parametreler
| Parametre | Açıklama |
|---|---|
jdkversion | Analiz için kullanılacak JDK versiyonu. Varsayılan: JAVA_HOME_17_X64. |
💡 Örnek Kullanım
yaml
- task: SonarQubeAnalyze@7
inputs:
jdkversion: 'JAVA_HOME_17_X64'
3️⃣ SonarQubePublish@7 – Quality Gate Sonucunu Yayınlama
Bu görev, analiz tamamlandıktan sonra Quality Gate sonucunu alır ve Azure DevOps pipeline’ına entegre eder.
Parametreler
| Parametre | Açıklama |
|---|---|
pollingTimeoutSec | Quality Gate sonucunu bekleme süresi (saniye). Varsayılan: 300. |
💡 Örnek Kullanım
yaml
- task: SonarQubePublish@7
inputs:
pollingTimeoutSec: '300'
📌 Tam .NET Pipeline Örneği
yaml
trigger:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: SonarQubePrepare@7
inputs:
SonarQube: 'SonarQubeServiceConnection'
scannerMode: 'dotnet'
projectKey: 'my-dotnet-project'
projectName: 'My .NET Project'
projectVersion: '1.0'
msBuildVersion: '5.14.0'
extraProperties: |
sonar.exclusions=**/*.Designer.cs
sonar.coverage.exclusions=**/Migrations/**
- script: dotnet build MyProject.sln
- task: SonarQubeAnalyze@7
inputs:
jdkversion: 'JAVA_HOME_17_X64'
- task: SonarQubePublish@7
inputs:
pollingTimeoutSec: '300'
🎯 Sonuç
Bu üç görev sayesinde Azure DevOps pipeline’ınızda SonarQube analizini tam entegre şekilde çalıştırabilir, kod kalitesini ve güvenliğini sürekli olarak izleyebilirsiniz. Özellikle extraProperties parametresi ile proje bazlı özelleştirmeler yaparak analiz kapsamını dilediğiniz gibi şekillendirebilirsiniz.