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 yapılandırmaya 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ör içinde dosya uzantısına sahip .cs tüm C# dosyalarını seçmek için 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 dahil edilen 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 gibi düzenleyici ayarları için mevcut bir .editorconfig dosyanız varsa veya sondaki boşluğun kırpılıp kırpılmayacağı, 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

.NET 5 SDK'sı (Visual Studio 2019 ve sonraki sürümlerde desteklenir) ile başlayarak çö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, 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 .editorconfigfarklı EditorConfig olarak, genel yapılandırma dosyalarının belirli bir ada veya uzantıya sahip olması gerekmez. Ancak, bu dosyaları olarak .globalconfigadlandı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 .globalconfigen üst düzey giriş is_global = true gerekli değildir, ancak netlik için önerilir.

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.

Ayrıca bkz.