Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 kódelemzés be- és kikapcsolásától a kategóriaszintű szabálykonfigurációig. További információ: EnableNETAnalyzers, AnalysisLevel, <> é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 [*.cs] egy szerkesztőkonfigurációs szakaszfejléc, amely kijelöli az összes olyan C#-fájlt, amely .cs fájlkiterjesztést tartalmaz az aktuális mappában, 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 rendelkezik egy meglévő .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 levá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
Az elemzőbeállításokat globális AnalyzerConfig-fájlokkal is konfigurálhatja. 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 a projektszintű elemző konfigurációs beállításainak megadására lettek kialakítva.
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 névvel EditorConfigellátott fájloktól eltérően .editorconfig a globális konfigurációs fájloknak nem kell egy adott 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 fájl elnevezésekor is_global = truenem szükséges a legfelső szintű bejegyzés.globalconfig, de az egyértelműség érdekében ajánlott.
Feltételes belefoglalás
Egy globális konfigurációs fájl használatával letilthat vagy engedélyezhet bizonyos kódelemzési szabályokat különböző környezetekben. Előfordulhat például, hogy le szeretné tiltani az egységtesztelési projektek kódelemzési szabályait. Ehhez beállíthatja az alkalmazandó szabályok none súlyosságát a konfigurációs fájlban, például:
# CA1861: Prefer 'static readonly' fields over constant array arguments
dotnet_diagnostic.CA1861.severity = none
Ezután testre szabhatja a buildet, hogy csak a konfigurációs fájlt vegye fel a tesztprojektekbe a buildre vonatkozó feltételek alapján. Példa:
<ItemGroup Condition="'$(IsShipping)' == 'false'">
<!-- Include CodeAnalysis.test.globalconfig to override (relax) some rules from the primary configuration. -->
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)CodeAnalysis.test.globalconfig" />
</ItemGroup>
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:
A parancssorban fordítóbeállításokként (
-nowarnvagy-warnaserror) megadott súlyossági beállítások mindig felülbírálják beállításokat.A szabálykészletfájl és egy vagy globális AnalyzerConfig-fájlEditorConfig.
A szabálykészletfájlok elavultak a globális AnalyzerConfig-fájlok javára EditorConfig . Javasoljuk, hogy a szabálykészletfájlokat konvertálja egyenértékű EditorConfig fájllá.
A különböző kulcsokkal rendelkező kapcsolódó súlyossági beállítások elsőbbségi szabályairól, például ha egy szabályhoz és a szabály alá tartozó kategóriához eltérő súlyosság van megadva, tekintse meg a kódelemzés konfigurációs beállításait.