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

ParametreTipZorunluAçıklama
SonarQubestringAzure DevOps’ta tanımlı Service Connection adı.
scannerModestringAnaliz modu: dotnet, cli, other.
projectKeystring✔ (.NET/CLI)SonarQube’deki proje anahtarı.
projectNamestringOpsiyonelProjenin görünen adı.
projectVersionstringOpsiyonelProje versiyonu. Varsayılan: 1.0.

.NET Moduna Özel Parametreler (scannerMode: dotnet)

ParametreAçıklama
msBuildVersion (alias: dotnetScannerVersion)Kullanılacak SonarScanner for .NET versiyonu.

CLI Moduna Özel Parametreler (scannerMode: cli)

ParametreAçıklama
cliVersion (alias: cliScannerVersion)Kullanılacak CLI versiyonu.
configModefile veya manual.
configFilefile modunda kullanılacak ayar dosyası.
cliProjectKeymanual modda zorunlu.
cliProjectNamemanual modda opsiyonel.
cliProjectVersionmanual modda opsiyonel.
cliSourcesmanual modda zorunlu.

Advanced Parametreler

ParametreAçıklama
extraPropertiesEk 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

ParametreAçıklama
jdkversionAnaliz 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

ParametreAçıklama
pollingTimeoutSecQuality 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.

Bunlar da hoşunuza gidebilir...