Megosztás a következőn keresztül:


Konfigurációs fájlok kódelemzési szabályokhoz

A kódelemzési szabályok különböző konfigurációs lehetőségeket tartalmaznak. Ezeket a beállításokat kulcs-érték párokként adja meg az alábbi elemző konfigurációs fájlok egyikében:

  • EditorConfig fájl: Fájlalapú vagy mappaalapú konfigurációs beállítások.
  • Global AnalyzerConfig fájl: Projektszintű konfigurációs beállítások. Akkor hasznos, ha egyes projektfájlok a projektmappán kívül találhatók.

Tipp.

A kódelemzés konfigurációs tulajdonságait a projektfájlban is beállíthatja. Ezek a tulajdonságok tömeges szinten konfigurálják a kódelemzést a teljes be- vagy kikapcsolástól a kategóriaszintű konfigurációig. További információ: EnableNETAnalyzers, AnalysisLevel, AnalysisLevel<Category> és AnalysisMode.

EditorConfig

EditorConfiga fájlok adott forrásfájlokra vagy mappákra vonatkozó beállítások megadására szolgálnak. A beállítások a szakaszfejlécek alá kerülnek a vonatkozó fájlok és mappák azonosításához. Adjon hozzá egy bejegyzést minden konfigurálni kívánt szabályhoz, és helyezze a megfelelő fájlkiterjesztési szakasz alá, [*.cs]például.

[*.cs]
<option_name> = <option_value>

A fenti példában egy szerkesztőkonfigurációs szakasz fejléce látható, [*.cs] amely az aktuális mappán belüli fájlkiterjesztéssel rendelkező .cs összes C#-fájlt kijelöli, beleértve az almappákat is. A következő bejegyzés egy elemzőbeállítás, <option_name> = <option_value>amely az összes C#-fájlra lesz alkalmazva.

Fájlkonvenciákat alkalmazhat EditorConfig egy mappára, projektre vagy egy teljes adattárra úgy, hogy a fájlt a megfelelő könyvtárba helyezi. Ezeket a beállításokat akkor alkalmazza a rendszer, ha az elemzést a buildeléskor és a Visual Studióban szerkessze.

Feljegyzés

EditorConfig beállítások csak a projektben vagy könyvtárban lévő forrásfájlokra vonatkoznak. A projektben Kiegészítő fájlokként szereplő fájlok nem minősülnek forrásfájloknak, és EditorConfig a beállítások nem vonatkoznak ezekre a fájlokra. Ha szabálybeállítást szeretne alkalmazni a nem forrásfájlokra, adja meg a beállítást egy globális konfigurációs fájlban.

Ha már rendelkezik .editorconfig fájllal a szerkesztő beállításaihoz, például a behúzás méretéhez vagy a záró szóköz kivágásához, a kódelemzési konfigurációs beállításokat ugyanabba a fájlba helyezheti.

Tipp.

A Visual Studio egy .editorconfig elemsablont biztosít, amely megkönnyíti a fájlok egyikének hozzáadását a projekthez. További információ: Fájl hozzáadása EditorConfig projekthez.

Példa

Az alábbiakban egy példafájlt EditorConfig láthat a beállítások és a szabály súlyosságának konfigurálásához:

# 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

A .NET 5 SDK-tól kezdve (amelyet a Visual Studio 2019-ben és újabb verziókban is támogatnak) a globális AnalyzerConfig-fájlokkal is konfigurálhatja az elemzői beállításokat. Ezek a fájlok olyan beállítások megadására szolgálnak, amelyek a projekt összes forrásfájljára vonatkoznak, függetlenül a fájlnevektől vagy a fájl elérési útjaitól.

A fájloktól eltérően EditorConfig a globális konfigurációs fájlok nem használhatók az azonosítók szerkesztőstílus-beállításainak konfigurálására, például a behúzás méretére vagy a záró szóköz levágására. Ehelyett kizárólag projektszintű elemzők konfigurációs beállításainak megadására szolgálnak.

Formátum

Ellentétben EditorConfig a fájlokkal, amelyeknek szakaszfejlécekkel kell rendelkezniük, például [*.cs]a vonatkozó fájlok és mappák azonosításához, a globális AnalyzerConfig-fájlok nem rendelkeznek szakaszfejlécekkel. Ehelyett az űrlap is_global = true legfelső szintű bejegyzésére van szükségük, hogy megkülönböztessék őket a normál EditorConfig fájloktól. Ez azt jelzi, hogy a fájl összes lehetősége a teljes projektre vonatkozik. Példa:

is_global = true
<option_name> = <option_value>

Elnevezés

A nevezendő .editorconfigfájloktól eltérően EditorConfig a globális konfigurációs fájloknak nem kell konkrét névvel vagy kiterjesztéssel rendelkezniük. Ha azonban ezeket a fájlokat úgy nevezi el, hogy .globalconfigazok implicit módon lesznek alkalmazva az aktuális mappában lévő összes C# és Visual Basic-projektre, beleértve az almappákat is. Ellenkező esetben explicit módon hozzá kell adnia az elemet az GlobalAnalyzerConfigFiles MSBuild projektfájlhoz:

<ItemGroup>
  <GlobalAnalyzerConfigFiles Include="<path_to_global_analyzer_config>" />
</ItemGroup>

Vegye figyelembe az alábbi elnevezési javaslatokat:

  • A végfelhasználóknak el kell nevezniük a globális konfigurációs fájljaikat .globalconfig néven.
  • A NuGet-csomag létrehozóinak a globális konfigurációs fájljaikat <%Package_Name%>.globalconfignak kell nevezniük.
  • Az MSBuild tooling által létrehozott globális konfigurációs fájlok neve <%Target_Name%>_Generated.globalconfig vagy hasonló.

Feljegyzés

A legfelső szintű bejegyzés is_global = true nem szükséges a fájl elnevezésekor .globalconfig, de az egyértelműség érdekében ajánlott.

Disztribúció NuGet-csomagokban

A Global AnalyzerConfig-fájlok NuGet-csomagokkal terjeszthetők. Ehhez adjon hozzá egy .props fájlt a NuGet-csomaghoz. A .props fájlban adjon hozzá egy GlobalAnalyzerConfigFiles elemet a Project csomópont alatt:

<Project>
  <ItemGroup>
    <GlobalAnalyzerConfigFiles Include="Relative/Path/to/PackageName.globalconfig" />
  </ItemGroup>
</Project>

Példa

Az alábbiakban egy globális AnalyzerConfig-fájlt mutatunk be, amely a beállításokat és a szabály súlyosságát konfigurálja a projekt szintjén:

# 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

Prioritás

A fájlok és a globális AnalyzerConfig-fájlok is EditorConfig meghatároznak egy kulcs-érték párot minden beállításhoz. Ütközések akkor fordulnak elő, ha több, azonos kulccsal, de eltérő értékkel rendelkező bejegyzés van. Az ütközések feloldásához az alábbi elsőbbségi szabályok szolgálnak.

Ütköző belépési helyek Elsőbbségi szabály
Ugyanabban a konfigurációs fájlban A fájl későbbi részében megjelenő bejegyzés nyer. Ez igaz egy fájlban és egy EditorConfig globális AnalyzerConfig-fájlban lévő ütköző bejegyzésekre is.
Két EditorConfig fájlban A fájl azon EditorConfig bejegyzése nyer, amely mélyebb a fájlrendszerben, és így hosszabb a fájl elérési útja.
Két globális AnalyzerConfig-fájlban .NET 5: A rendszer egy fordítói figyelmeztetést jelent, és mindkét bejegyzést figyelmen kívül hagyja.
.NET 6-os és újabb verziók: A fájl magasabb értékkel global_level rendelkező bejegyzése elsőbbséget élvez. Ha global_level nincs explicit módon definiálva, és a fájl neve .globalconfig, az global_level érték alapértelmezés szerint 100az ; érték lesz az összes többi globális AnalyzerConfig-fájl esetében, global_level alapértelmezés szerint a 0. Ha az global_level ütköző bejegyzéseket tartalmazó konfigurációs fájlok értékei egyenlőek, a rendszer egy fordítói figyelmeztetést jelent, és mindkét bejegyzést figyelmen kívül hagyja.
EditorConfig Egy fájlban és egy Global AnalyzerConfig-fájlban A fájlban lévő EditorConfig bejegyzés nyer.

Súlyossági beállítások

A súlyossági konfigurációs beállításokra a következő további elsőbbségi szabályok vonatkoznak:

Lásd még