.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:
-
Bu çözümleyiciler Visual Studio'da yerleşik olarak bulunur. Çözümleyicinin tanılama kimliği veya kod biçimi IDExxxx,örneğin IDE0001. Tercihleri metin düzenleyicisi seçenekleri sayfasında veya EditorConfig dosyasında yapılandırabilirsiniz. .NET 5.0'dan başlayarak, kod stili çözümleyicileri .NET SDK'sı ile birlikte sunulur ve derleme uyarıları veya hataları olarak kesinlikle zorunlu kılınabilir. Daha fazla bilgi için bkz . .NET kaynak kodu analizine genel bakış.
-
Bu çözümleyiciler .NET 5.0 ve üzeri SDK'ya dahil edilir ve varsayılan olarak etkinleştirilir. Çözümleyicinin tanılama kimliği veya kod biçimi CAxxxx,örneğin CA1822'dir. Daha fazla bilgi için bkz . .NET kod kalitesi analizine genel bakış.
Dış çözümleyiciler
Dış çözümleyicilere örnek olarak StyleCop, Roslynator, xUnit Analyzers ve Sonar Analyzer verilebilir. Bu çözümleyicileri NuGet paketi veya Visual Studio uzantısı olarak yükleyebilirsiniz.
Çö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:
Çö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ü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.
Çö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.NetAnalyzers
paketi 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
true
ayarlayı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:
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.