Kod çözümleme kuralları için yapılandırma dosyaları
Kod çözümleme kurallarının çeşitli yapılandırma seçenekleri vardır. Bu seçenekleri aşağıdaki çözümleyici yapılandırma dosyalarından birinde anahtar-değer çiftleri olarak belirtirsiniz:
- EditorConfig file: Dosya tabanlı veya klasör tabanlı yapılandırma seçenekleri.
- Global AnalyzerConfig dosyası: Proje düzeyinde yapılandırma seçenekleri. Bazı proje dosyaları proje klasörünün dışında bulunduğunda kullanışlıdır.
İpucu
Proje dosyanızda kod analizi yapılandırma özelliklerini de ayarlayabilirsiniz. Bu özellikler, kod analizini tamamen açıp kapatmaktan kategori düzeyinde kural yapılandırmasına kadar toplu düzeyde yapılandırır. Daha fazla bilgi için bkz . EnableNETAnalyzers, AnalysisLevel, AnalysisLevel<Category> ve AnalysisMode.
EditorConfig
EditorConfigdosyalar, belirli kaynak dosyalara veya klasörlere uygulanan seçenekler sağlamak için kullanılır. Seçenekler, ilgili dosya ve klasörleri tanımlamak için bölüm üst bilgilerinin altına yerleştirilir. Yapılandırmak istediğiniz her kural için bir girdi ekleyin ve bunu ilgili dosya uzantısı bölümünün altına (örneğin, [*.cs]
) yerleştirin.
[*.cs]
<option_name> = <option_value>
Yukarıdaki örnekte, [*.cs]
alt klasörler de dahil olmak üzere geçerli klasörde dosya uzantısı olan .cs
tüm C# dosyalarını seçen bir editorconfig bölüm üst bilgisidir. Sonraki girdi olan <option_name> = <option_value>
, tüm C# dosyalarına uygulanacak bir çözümleyici seçeneğidir.
Dosyayı ilgili dizine yerleştirerek bir klasöre, projeye veya deponun tamamına dosya kuralları uygulayabilirsiniz EditorConfig . Bu seçenekler, derleme zamanında ve Visual Studio'da kodu düzenlerken çözümleme yürütülürken uygulanır.
Not
EditorConfigseçenekler yalnızca proje veya dizindeki kaynak dosyalar için geçerlidir. Bir projeye AdditionalFiles olarak eklenen dosyalar kaynak dosyalar olarak kabul edilmez ve EditorConfig seçenekler bu dosyalara uygulanmaz. Kaynak olmayan dosyalara kural seçeneği uygulamak için genel yapılandırma dosyasında seçeneğini belirtin.
Girinti boyutu veya sondaki boşluğun kırpılıp kırpılmayacağı gibi düzenleyici ayarları için mevcut bir .editorconfig dosyanız varsa, kod çözümleme yapılandırma seçeneklerinizi aynı dosyaya yerleştirebilirsiniz.
İpucu
Visual Studio, projenize bu dosyalardan birini eklemeyi kolaylaştıran bir .editorconfig öğe şablonu sağlar. Daha fazla bilgi için bkz. Projeye dosya eklemeEditorConfig.
Örnek
Aşağıda seçenekleri ve kural önem derecesini yapılandırmak için örnek EditorConfig bir dosya verilmiştir:
# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true
# C# files
[*.cs]
#### Core EditorConfig Options ####
# Indentation and spacing
indent_size = 4
indent_style = space
tab_width = 4
#### .NET Coding Conventions ####
# this. and Me. preferences
dotnet_style_qualification_for_method = true
#### Diagnostic configuration ####
# CA1000: Do not declare static members on generic types
dotnet_diagnostic.CA1000.severity = warning
Global AnalyzerConfig
Çözümleyici seçeneklerini genel AnalyzerConfig dosyalarıyla da yapılandırabilirsiniz. Bu dosyalar, dosya adlarından veya dosya yollarından bağımsız olarak projedeki tüm kaynak dosyalara uygulanan seçenekler sağlamak için kullanılır.
Dosyaların aksine EditorConfig , genel yapılandırma dosyaları girinti boyutu veya sondaki boşluğun kırpılıp kırpılmayacağı gibi IDE'ler için düzenleyici stili ayarlarını yapılandırmak için kullanılamaz. Bunun yerine, bunlar yalnızca proje düzeyinde çözümleyici yapılandırma seçeneklerini belirtmek için tasarlanmıştır.
Biçimlendir
Geçerli dosya ve klasörleri tanımlamak için gibi bölüm üst bilgilerine sahip olması gereken dosyalardan farklı EditorConfig olarak [*.cs]
, genel AnalyzerConfig dosyalarında bölüm üst bilgileri yoktur. Bunun yerine, normal EditorConfig dosyalardan ayırt etmek için formun is_global = true
en üst düzey girdisine ihtiyaç duyarlar. Bu, dosyadaki tüm seçeneklerin projenin tamamı için geçerli olduğunu gösterir. Örneğin:
is_global = true
<option_name> = <option_value>
Adlandırma
adından .editorconfig
farklı EditorConfig olarak, genel yapılandırma dosyalarının belirli bir ada veya uzantıya sahip olması gerekmez. Ancak, bu dosyaları olarak .globalconfig
adlandırdığınızda, bunlar alt klasörler de dahil olmak üzere geçerli klasördeki tüm C# ve Visual Basic projelerine örtük olarak uygulanır. Aksi takdirde, öğeyi GlobalAnalyzerConfigFiles
AÇıKÇA MSBuild proje dosyanıza eklemeniz gerekir:
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="<path_to_global_analyzer_config>" />
</ItemGroup>
Aşağıdaki adlandırma önerilerini göz önünde bulundurun:
- Son kullanıcılar genel yapılandırma dosyalarını .globalconfig olarak adlandırmalıdır.
- NuGet paket oluşturucuları genel yapılandırma dosyalarını <%Package_Name%>.globalconfig olarak adlandırmalıdır.
- MSBuild araç tarafından oluşturulan genel yapılandırma dosyaları %Target_Name%_Generated.globalconfig veya benzeri olarak adlandırılmalıdır.<>
Not
Dosya olarak adlandırıldığında .globalconfig
en üst düzey girdi is_global = true
gerekli değildir, ancak netlik için önerilir.
Koşullu ekleme
Farklı ortamlarda belirli kod çözümleme kurallarını devre dışı bırakmak veya etkinleştirmek için genel yapılandırma dosyası kullanabilirsiniz. Örneğin, birim testi projeleri için bazı kod analizi kurallarını devre dışı bırakmak isteyebilirsiniz. Bunu yapmak için yapılandırma dosyasında geçerli kuralların none
önem derecesini ayarlayabilirsiniz, örneğin:
# CA1861: Prefer 'static readonly' fields over constant array arguments
dotnet_diagnostic.CA1861.severity = none
Daha sonra derlemenizi yalnızca derlemenize özgü koşullara göre test projelerine yapılandırma dosyasını içerecek şekilde özelleştirebilirsiniz. Örneğin:
<ItemGroup Condition="'$(IsShipping)' == 'false'">
<!-- Include CodeAnalysis.test.globalconfig to override (relax) some rules from the primary configuration. -->
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)CodeAnalysis.test.globalconfig" />
</ItemGroup>
NuGet paketlerinde dağıtım
Global AnalyzerConfig dosyaları NuGet paketleriyle dağıtılabilir. Bunu yapmak için NuGet paketine bir .props dosyası ekleyin. .props dosyasında düğümün Project
altına bir GlobalAnalyzerConfigFiles
öğe ekleyin:
<Project>
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="Relative/Path/to/PackageName.globalconfig" />
</ItemGroup>
</Project>
Örnek
Aşağıda, proje düzeyinde seçenekleri ve kural önem derecesini yapılandırmak için örnek bir genel AnalyzerConfig dosyası verilmiştir:
# Top level entry required to mark this as a global AnalyzerConfig file
is_global = true
# NOTE: No section headers for configuration entries
#### .NET Coding Conventions ####
# this. and Me. preferences
dotnet_style_qualification_for_method = true:warning
#### Diagnostic configuration ####
# CA1000: Do not declare static members on generic types
dotnet_diagnostic.CA1000.severity = warning
Öncelik
Hem dosyalar hem de EditorConfig global AnalyzerConfig dosyaları her seçenek için bir anahtar-değer çifti belirtir. Çakışmalar, aynı anahtara ancak farklı değerlere sahip birden çok girdi olduğunda ortaya çıkar. Çakışmaları çözmek için aşağıdaki öncelik kuralları kullanılır.
Çakışan giriş konumları | Öncelik kuralı |
---|---|
Aynı yapılandırma dosyasında | Dosyada daha sonra görüntülenen girdi kazanır. Bu, tek bir dosyadaki ve aynı zamanda tek EditorConfig bir genel AnalyzerConfig dosyasındaki çakışan girdiler için geçerlidir. |
İki EditorConfig dosyada | Dosya sisteminde EditorConfig daha derin olan ve dolayısıyla daha uzun bir dosya yoluna sahip olan dosyadaki girdi kazanır. |
İki genel AnalyzerConfig dosyasında | .NET 5: Derleyici uyarısı bildirilir ve her iki girdi de yoksayılır. .NET 6 ve sonraki sürümleri: için daha yüksek bir değere global_level sahip dosyadan giriş önceliklidir. Açıkça tanımlanmamışsa ve dosya .globalconfig olarak adlandırılmışsaglobal_level , global_level değeri varsayılan olarak 100 ; diğer tüm global AnalyzerConfig dosyaları global_level için varsayılan olarak olur0 . global_level Çakışan girişlere sahip yapılandırma dosyalarının değerleri eşitse, derleyici uyarısı bildirilir ve her iki girdi de yoksayılır. |
Bir EditorConfig dosyada ve Global AnalyzerConfig dosyasında | Dosyadaki EditorConfig girdi kazanır. |
Önem derecesi seçenekleri
Önem derecesi yapılandırma seçenekleri için aşağıdaki ek öncelik kuralları geçerlidir:
Komut satırında derleyici seçenekleri (
-nowarn
veya-warnaserror
) olarak belirtilen önem derecesi seçenekleri, ve genel AnalyzerConfig dosyalarında EditorConfig belirtilen önem derecesi yapılandırma seçeneklerini her zaman geçersiz kılar.Bir kural kümesi dosyasından ve veya genel AnalyzerConfig dosyasından çakışan önem derecesi girdileriyle ilgili öncelik kuralları tanımlanmamıştır.EditorConfig
Kural kümesi dosyaları ve genel AnalyzerConfig dosyaları için EditorConfig kullanım dışı bırakılmıştır. Kural kümesi dosyalarını eşdeğer EditorConfig bir dosyaya dönüştürmenizi öneririz.
Farklı anahtarlara sahip ilgili önem derecesi seçeneklerinin öncelik kuralları hakkında bilgi için, örneğin, tek bir kural için farklı önem dereceleri belirtildiğinde ve kuralın altında yer alan kategori için bkz . Kod analizi için yapılandırma seçenekleri.