.NET derleyici platformu (Roslyn) çözümleyicilerini kullanarak kod analizi

.NET derleyici platformu (Roslyn) çözümleyicileri C# veya Visual Basic kodunuzu stil, kalite, bakım, tasarım ve diğer sorunlar açısından inceler. Bu inceleme veya analiz, tüm açık dosyalarda tasarım zamanında gerçekleşir.

Çözümleyiciler aşağıdaki gruplara ayrılır:

Çözümleyicilerin önem derecesi düzeyleri

Her Roslyn çözümleyici kuralının veya tanılamanın, projeniz için özelleştirebileceğiniz varsayılan önem derecesi ve gizleme durumu vardır.

Önem derecesi düzeyleri şunlardır: Hata, Uyarı, Öneri, Sessiz, Yok ve Varsayılan. Ayrıntılı bilgi ve davranış için bkz . Önem derecesi düzeylerini yapılandırma.

Kural ihlalleri

Çözümleyici herhangi bir çözümleyici kuralı ihlali bulursa, bunları Hata Listesi penceresinde ve kod düzenleyicisinde raporlar.

Aşağıdaki ekran görüntüsünde Hata Listesi penceresinde bildirilen kural ihlalleri gösterilmektedir. Hata listesinde bildirilen çözümleyici ihlalleri kuralın önem düzeyi ayarıyla eşleşmektedir:

Hata Listesi penceresinde çözümleyici ihlallerini gösteren ekran görüntüsü.

Çözümleyici kuralı ihlalleri de kod düzenleyicisinde sorunlu kodun altında dalgalı çizgiler olarak görünür. Örneğin, aşağıdaki ekran görüntüsünde üç ihlal gösterilmektedir: bir hata (kırmızı dalgalı çizgi), bir uyarı (yeşil dalgalı çizgi) ve bir öneri (üç gri nokta):

Kod düzenleyicisinde hata, uyarı ve öneri işaretlerini gösteren ekran görüntüsü.

Kod düzeltmeleri

Birçok tanılamada kural ihlalini düzeltmek için uygulayabileceğiniz bir veya daha fazla ilişkili kod düzeltmesi vardır. Kod düzeltmeleri ampul simgesi menüsünde diğer Hızlı İşlem türleriyle birlikte gösterilir. Kod düzeltmeleri hakkında daha fazla bilgi için bkz . Yaygın Hızlı Eylemler.

Kod düzenleyicisinde çözümleyici ihlalini ve Hızlı İşlem kod düzeltmesini gösteren ekran görüntüsü.

Çözümleyici önem düzeylerini yapılandırma

Çözümleyici kurallarının önem derecesini bir EditorConfig dosyasında veya ampul menüsünden yapılandırabilirsiniz.

Ayrıca derleme zamanında ve yazarken kodu incelemek için çözümleyicileri yapılandırabilirsiniz. Canlı kod analizinin kapsamını yalnızca geçerli belge, tüm açık belgeler veya çözümün tamamı için yürütülecek şekilde yapılandırabilirsiniz. Daha fazla bilgi için bkz . .NET için canlı kod analizini yapılandırma.

İpucu

Kod çözümleyicilerinden gelen derleme zamanı hataları ve uyarıları yalnızca çözümleyiciler NuGet paketi olarak yüklüyse gösterilir. Yerleşik çözümleyiciler (örneğin, IDE0067 ve IDE0068) derleme sırasında hiçbir zaman çalışmaz.

Dış kod çözümleyicilerini yükleme

Visual Studio, her zaman etkin olan bir dizi Roslyn çözümleyicisi içerir. Daha fazla kod çözümleyicisi gerekiyorsa, nuget paketi aracılığıyla her proje için dış çözümleyiciler yükleyebilirsiniz. Bazı çözümleyiciler visual studio .vsix uzantısı olarak da kullanılabilir ve bu durumda Visual Studio'da açtığınız tüm çözümlere uygulanır. Bu iki farklı çözümleyici türünü yükleme hakkında bilgi için bkz . Kod çözümleyicilerini yükleme.

Kapsam

NuGet paketi olarak bir çözümleyici yüklerseniz, tercih edilen yöntem yalnızca NuGet paketinin yüklü olduğu projeye uygulanır. Aksi takdirde, visual studio uzantısı olarak bir çözümleyici yüklerseniz, çözüm düzeyinde ve Visual Studio'nun tüm örneklerine uygulanır. Ekip ortamlarında NuGet paketi olarak yüklediğiniz bir çözümleyici, bu projede çalışan tüm geliştiriciler için kapsam dahilindedir.

Not

Birinci taraf çözümleyiciler .NET SDK'sı içinde gönderilir. Bu çözümleyicileri NuGet Microsoft.CodeAnalysis.NetAnalyzerspaketi olarak yüklemek yerine .NET SDK'sından etkinleştirmeniz tercih edilir. .NET SDK'sından çözümleyicilerin etkinleştirilmesi, SDK'yi güncelleştirir güncelleştirmez çözümleyici hata düzeltmelerini ve yeni çözümleyicileri otomatik olarak almanıza olanak tanır. Çözümleyiciler hakkında daha fazla bilgi için bkz . Birinci taraf .NET çözümleyicilerini etkinleştirme veya yükleme.

Derleme hataları

Kuralları derleme zamanında zorunlu kılmak için, komut satırı veya sürekli tümleştirme (CI) derlemelerini kullanarak aşağıdaki seçeneklerden birini belirleyin:

  • Varsayılan olarak kod analizini etkinleştiren bir .NET 5.0 veya üzeri proje oluşturun. Önceki .NET sürümlerini hedefleyen projelerde kod analizini etkinleştirmek için EnableNETAnalyzers özelliğini olarak trueayarlayın.

  • Çözümleyicileri NuGet paketi olarak yükleyin. Çözümleyicileri Visual Studio uzantısı olarak yüklerseniz, çözümleyici uyarıları ve hataları derleme raporunda görünmez.

Aşağıdaki ekran görüntüsünde, çözümleyici kuralı ihlali içeren bir proje oluşturma işleminin komut satırı derleme çıkışı gösterilmektedir:

Geliştirici Komut İsteminde kural ihlali olan msbuild çıkışını gösteren ekran görüntüsü.

Kural önem derecesi

Çözümleyici kuralı önem derecesini yapılandırmak istiyorsanız çözümleyiciyi NuGet paketi olarak yüklemeniz gerekir. Visual Studio uzantısı olarak yüklenen çözümleyicilerden kural önem derecesini yapılandıramazsınız.

Sonraki adımlar