Kod analizi için yapılandırma seçenekleri

Kod çözümleme kurallarının çeşitli yapılandırma seçenekleri vardır. Bu seçeneklerden bazıları, söz dizimi <option key> = <option value>kullanılarak bir çözümleyici yapılandırma dosyasında anahtar-değer çiftleri olarak belirtilir. Kod analizini bir bütün olarak yapılandıran diğer seçenekler, proje dosyanızda MSBuild özellikleri olarak kullanılabilir.

Yapılandırabileceğiniz en yaygın seçenek bir kuralın önem derecesidir. Kod kalitesi kuralları ve kod stili kuralları dahil olmak üzere herhangi bir kural için önem düzeyini yapılandırabilirsiniz. Örneğin, bir kuralı uyarı olarak etkinleştirmek için çözümleyici yapılandırma dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_diagnostic.<rule ID>.severity = warning

Kural davranışını özelleştirmek için ek seçenekler de yapılandırabilirsiniz:

  • Kod kalitesi kuralları, bir kuralın hangi yöntem adları için geçerli olması gerektiği gibi davranış seçeneklerine sahiptir.
  • Kod stili kuralları, yeni satırların istendiği yerler gibi stil tercihi seçeneklerine sahiptir.
  • Üçüncü taraf çözümleyici kuralları, özel anahtar adları ve değer biçimleriyle kendi yapılandırma seçeneklerini tanımlayabilir.

Genel seçenekler

Bu seçenekler bir bütün olarak kod analizi için geçerlidir. Bunlar yalnızca belirli bir kurala uygulanamaz.

Ek seçenekler için bkz . Kod analizi özellikleri.

Analiz modu

.NET SDK'sı tüm kod çözümleme kurallarını içerse de, yalnızca bazıları varsayılan olarak etkinleştirilir. Çözümleme modu , varsa hangi kural kümesinin etkinleştirileceğini belirler. Kuralların çoğunun veya tümünün etkinleştirildiği daha agresif bir analiz modu seçebilirsiniz. Ya da kuralların çoğunun veya tümünün devre dışı bırakıldığı daha muhafazakar bir analiz modu seçebilir ve ardından gerektiğinde belirli kuralları kabul edebilirsiniz. AnalysisMode> MSBuild özelliğini proje dosyanıza ekleyerek <analiz modunuzu ayarlayın.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

.NET 6'dan başlayarak, AnalysisMode<Category>> MSBuild özelliğini kullanarak bir kural kategorisini <toplu olarak etkinleştirebilirsiniz.

Not

gibi AnalysisModeMSBuild özelliklerini kullanarak kod analizini yapılandırıyorsanız, yapılandırma dosyanızda ayarladığınız tüm toplu yapılandırma seçenekleri yoksayılır. Örneğin, bir dosyasındaeditorconfig tüm kuralları veya bir kural kategorisini toplu olarak etkinleştirdiyseniz, bu yapılandırma yoksayılır.

Kod analizini etkinleştirme

.NET 5 ve sonraki sürümleri hedefleyen projeler için kod analizi varsayılan olarak etkindir. .NET 5+ SDK'nız varsa ancak projeniz farklı bir .NET uygulamasını hedeflerse, proje dosyanızdaki EnableNETAnalyzers özelliğini olarak ayarlayarak kod analizini trueel ile etkinleştirebilirsiniz.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Oluşturulan kodu dışla

.NET kod çözümleyicisi uyarıları, kullanıcıların herhangi bir ihlali düzeltmek için düzenleyebildiği tasarımcı tarafından oluşturulan dosyalar gibi oluşturulan kod dosyalarında kullanışlı değildir. Çoğu durumda, kod çözümleyicileri oluşturulan kod dosyalarını atlar ve bu dosyalardaki ihlalleri bildirmez.

Varsayılan olarak, belirli dosya uzantılarına veya otomatik olarak oluşturulan dosya üst bilgilerine sahip dosyalar, oluşturulan kod dosyaları olarak değerlendirilir. Örneğin, veya .generated.cs ile .designer.cs biten bir dosya adı, oluşturulan kod olarak kabul edilir. Bu yapılandırma seçeneği, oluşturulan kod olarak işlenecek ek adlandırma desenleri belirtmenize olanak tanır. Yapılandırma dosyanıza bir generated_code = true | false girdi ekleyerek ek dosya ve klasörleri yapılandırabilirsiniz. Örneğin, adı ile biten .MyGenerated.cs tüm dosyaları oluşturulan kod olarak işlemek için aşağıdaki girdiyi ekleyin:

[*.MyGenerated.cs]
generated_code = true

Kurala özgü seçenekler

Kurala özgü seçenekler tek bir kurala, bir kural kümesine veya tüm kurallara uygulanabilir. Kurala özgü seçenekler şunlardır:

Önem derecesi

Aşağıdaki tabloda, kod kalitesi ve kod stili kuralları dahil olmak üzere tüm çözümleyici kuralları için yapılandırabileceğiniz farklı kural önem dereceleri gösterilmektedir.

Önem derecesi yapılandırma değeri Derleme zamanı davranışı
error İhlaller derleme hataları olarak görünür ve derlemelerin başarısız olmasına neden olur.
warning İhlaller derleme uyarıları olarak görünür ancak derlemelerin başarısız olmasına neden olmaz (uyarıları hata olarak ele almak için ayarlanmış bir seçeneğiniz olmadığı sürece).
suggestion İhlaller, Visual Studio IDE'de derleme iletileri ve öneriler olarak görünür. (Visual Studio'da öneriler, ilk iki karakterin altında üç gri nokta olarak görünür.)
silent İhlaller kullanıcı tarafından görülemez.

Ancak, kod stili kuralları için Visual Studio kod oluşturma özellikleri yine de bu stilde kod oluşturur. Bu kurallar temizlemeye de katılır ve Visual Studio'daki Hızlı Eylemler ve Yeniden Düzenlemeler menüsünde görünür.
none Kural tamamen gizlendi.

Ancak, kod stili kuralları için Visual Studio kod oluşturma özellikleri yine de bu stilde kod oluşturur.
default Kuralın varsayılan önem derecesi kullanılır. Her .NET sürümü için varsayılan önem dereceleri roslyn-analyzers deposunda listelenir. Bu tabloda , "Devre Dışı" öğesine karşılık gelir none, "Gizli" öğesine karşılık gelir silentve "Bilgi" öğesine karşılık gelir suggestion.

Kapsam

  • Tek kural

    Tek bir kuralın kural önem derecesini ayarlamak için aşağıdaki söz dizimini kullanın.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Kural kategorisi

    Kural kategorisi için varsayılan kural önem derecesini ayarlamak için aşağıdaki söz dizimini kullanın. Ancak, bu önem derecesi ayarı yalnızca söz konusu kategorideki varsayılan olarak etkinleştirilen kuralları etkiler.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    Farklı kategoriler, Kural kategorileri bölümünde listelenir ve açıklanır. Buna ek olarak, belirli bir kuralın kategorisini başvuru sayfasında (örneğin, CA1000) bulabilirsiniz.

  • Tüm kurallar

    Tüm çözümleyici kuralları için varsayılan kural önem derecesini ayarlamak için aşağıdaki söz dizimini kullanın. Ancak, bu önem derecesi ayarı yalnızca varsayılan olarak etkinleştirilen kuralları etkiler.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Önemli

Birden çok kural için önem düzeyini bir kural kategorisi veya tüm kurallar için tek bir girişle yapılandırdığınızda, önem derecesi yalnızca varsayılan olarak etkinleştirilen kurallar için geçerlidir. Ayrıca AnalysisMode> veya< AnalysisLevel> MSBuild özelliklerini <kullanarak tüm kuralları etkinleştirirseniz, tüm toplu dotnet_analyzer_diagnostic seçenekler yoksayılır. Bu nedenle, AnalysisMode Kategorisini olarak ayarlayarak <bir kural kategorisini>> Alletkinleştirmek daha iyidir.<

Not

Tek bir kural için önem derecesini ayarlama ön eki, dotnet_diagnostickategori aracılığıyla veya tüm kurallar dotnet_analyzer_diagnosticiçin önem derecesini yapılandırma ön ekinden biraz farklıdır.

Öncelik

Aynı kural kimliğine uygulanabilecek birden çok önem derecesi yapılandırma girdiniz varsa öncelik aşağıdaki sırayla seçilir:

  • Bir kategori girdisi, tüm çözümleyici kuralları için bir girdiden önceliklidir.
  • Kimliğine göre tek bir kuralın girdisi, kategoriye ilişkin bir girdiden önceliklidir.

CA1822'nin "Performans" kategorisine sahip olduğu aşağıdaki örneği göz önünde bulundurun:

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

Yukarıdaki örnekte, üç önem derecesi girdisi de CA1822 için geçerlidir. Ancak, belirtilen öncelik kurallarını kullanarak, kimlik tabanlı ilk kural girdisi sonraki girdilere karşı kazanır. Bu örnekte, CA1822'nin geçerli önem derecesi errorolacaktır. "Performans" kategorisindeki diğer tüm kuralların warningönem derecesi olacaktır.

Dosyalar arası önceliğe nasıl karar verildiğinden bilgi için Yapılandırma dosyaları makalesinin Öncelik bölümüne bakın.