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 AnalysisMode
MSBuild ö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 true
el 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 silent ve "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>> All
etkinleştirmek daha iyidir.<
Not
Tek bir kural için önem derecesini ayarlama ön eki, dotnet_diagnostic
kategori aracılığıyla veya tüm kurallar dotnet_analyzer_diagnostic
iç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 error
olacaktı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.