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 kódelemzés be- és kikapcsolásától a kategóriaszintű szabálykonfigurá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
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 .editorconfig
ellá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 .globalconfig
azok 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 .globalconfig
nem szükséges a legfelső szintű bejegyzésis_global = true
, 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. -->
<EditorConfigFiles 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 100 az ; é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 (
-nowarn
vagy-warnaserror
) megadott súlyossági beállítások mindig felülbírálják a globális AnalyzerConfig-fájlokban EditorConfig megadott súlyossági konfigurációs beállításokat.A szabálykészletfájl és egy vagy globális AnalyzerConfig-fájlütköző súlyossági bejegyzéseinek elsőbbsége nincs meghatározva.EditorConfig
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.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: