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 .editorconfig fájlban megadhat elnevezési konvenciókat a .NET programozási nyelv kódelemeihez (például osztályokhoz, tulajdonságokhoz és metódusokhoz), valamint azt, hogy a fordítónak vagy az IDE-nek hogyan kell kikényszerítenie ezeket a konvenciókat. Megadhatja például, hogy a nem nagybetűs nyilvános tagokat fordítóhibaként kell kezelni, vagy hogy ha egy privát mező nem egyel kezdődik _, buildre vonatkozó figyelmeztetést kell kiadni.
Pontosabban definiálhat egy elnevezési szabályt, amely három részből áll:
- Az a szimbólumcsoport , amelyre a szabály vonatkozik, például nyilvános tagokra vagy privát mezőkre.
- A szabályhoz társítandó elnevezési stílus például azt jelzi, hogy a névnek nagybetűvel kell rendelkeznie, vagy aláhúzásjellel kell kezdődnie.
- Az üzenet súlyossági szintje, ha a szimbólumcsoport kódelemei nem követik az elnevezési stílust.
Általános szintaxis
A fenti entitások – elnevezési szabály, szimbólumcsoport vagy elnevezési stílus – definiálásához állítson be egy vagy több tulajdonságot az alábbi szintaxis használatával:
<kind>.<entityName>.<propertyName> = <propertyValue>
Az adott kind entitás összes tulajdonságbeállítása, és entityName az adott entitásdefiníció.
Minden tulajdonságot csak egyszer kell beállítani, de egyes beállítások több, vesszővel elválasztott értéket is engedélyeznek.
A tulajdonságok sorrendje nem fontos.
<kind> értékek
<a kind> megadja, hogy milyen típusú entitás van definiálva – elnevezési szabály, szimbólumcsoport vagy elnevezési stílus –, és az alábbiak egyikének kell lennie:
| Tulajdonság beállítása a következőhöz: | Használja az <kind> értéket |
Példa |
|---|---|---|
| Elnevezési szabály | dotnet_naming_rule |
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion |
| Szimbólumcsoport | dotnet_naming_symbols |
dotnet_naming_symbols.interface.applicable_kinds = interface |
| Elnevezési stílus | dotnet_naming_style |
dotnet_naming_style.pascal_case.capitalization = pascal_case |
<entityName>
<Az entityName> egy olyan leíró név, amely több tulajdonságbeállítást társít egyetlen definícióhoz. Az alábbi tulajdonságok például két szimbólumcsoport-definíciót hoznak létre, interface és typesmindegyiken két tulajdonság van beállítva.
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum, delegate
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
<propertyName> és <propertyValue>
Minden entitástípus – az elnevezési szabály, a szimbólumcsoport vagy az elnevezési stílus – saját támogatott tulajdonságokkal rendelkezik, az alábbi szakaszokban leírtak szerint.
Szimbólumcsoport tulajdonságai
A szimbólumcsoportokhoz a következő tulajdonságokat állíthatja be, hogy korlátozza a csoporthoz tartozó szimbólumokat. Ha egyetlen tulajdonsághoz több értéket szeretne megadni, az értékeket vesszővel kell elválasztani.
| Tulajdonság | Leírás | Megengedett értékek | Kötelező |
|---|---|---|---|
applicable_kinds |
Szimbólumtípusok az 1. csoportban |
* (használja ezt az értéket az összes szimbólum megadásához)namespaceclassstructinterfaceenumpropertymethodfieldeventdelegateparametertype_parameterlocallocal_function |
Igen |
applicable_accessibilities |
A csoport szimbólumainak akadálymentességi szintjei |
* (használja ezt az értéket az összes akadálymentességi szint megadásához)publicinternal vagy friendprivateprotectedprotected_internal vagy protected_friendprivate_protectedlocal (metóduson belül definiált szimbólumok esetén) |
Igen |
required_modifiers |
Csak a szimbólumok egyezése az összes megadott módosítóval 2 |
abstract vagy must_inheritasyncconstreadonlystatic vagy shared3 |
Nem |
Megjegyzések:
- A Tuple-tagok jelenleg nem támogatottak.
applicable_kinds - A szimbólumcsoport megegyezik a tulajdonság összes módosító elemével
required_modifiers. Ha kihagyja ezt a tulajdonságot, az egyezéshez nincs szükség konkrét módosítókra. Ez azt jelenti, hogy a szimbólum módosítói nem befolyásolják a szabály alkalmazását. - Ha a csoport rendelkezik
staticvagy szerepel asharedtulajdonságban, a csoport szimbólumokat is tartalmazrequired_modifiers, mert implicit módonconststatic/Sharedvannak. Ha azonban nem szeretné, hogy azstaticelnevezési szabály a szimbólumokra vonatkozzanakconst, létrehozhat egy új elnevezési szabályt egy szimbólumcsoporttalconst. Az új szabály elsőbbséget élvez a szabályrend szerint. -
classC#-rekordokat tartalmaz.
Elnevezési stílus tulajdonságai
Az elnevezési stílus határozza meg azokat a konvenciókat, amelyeket a szabmánnyal kíván érvényesíteni. Példa:
- Nagybetűsítés a
PascalCase - A következővel kezdődik:
m_ - Végződés:
_g - Szavak elkülönítése a következővel:
__
Az elnevezési stílushoz a következő tulajdonságokat állíthatja be:
| Tulajdonság | Leírás | Megengedett értékek | Kötelező |
|---|---|---|---|
capitalization |
A szimbólumon belüli szavak nagybetűs stílusa | pascal_casecamel_casefirst_word_upperall_upperall_lower |
Igen1 |
required_prefix |
Ezekkel a karakterekkel kell kezdődnie | Nem | |
required_suffix |
Ezekkel a karakterekkel kell végződnie | Nem | |
word_separator |
A szimbólumon belüli szavakat el kell különíteni ezzel a karakterrel | Nem |
Megjegyzések:
- Az elnevezési stílus részeként nagybetűs stílust kell megadnia, ellenkező esetben az elnevezési stílus figyelmen kívül hagyható.
Elnevezési szabály tulajdonságai
A szabály érvénybe lépéséhez minden elnevezési szabálytulajdonság szükséges.
| Tulajdonság | Leírás |
|---|---|
symbols |
Máshol definiált szimbólumcsoport neve; az elnevezési szabály a csoport szimbólumaira lesz alkalmazva |
style |
A szabályhoz társítandó elnevezési stílus neve; a stílus máshol van definiálva |
severity |
Beállítja az elnevezési szabály kényszerítési súlyosságát. Állítsa be a társított értéket az elérhető súlyossági szintek egyikére.1 |
Megjegyzések:
- Az elnevezési szabályon belüli súlyossági specifikációt csak a fejlesztési azonosítókon belül tartják tiszteletben, például a Visual Studióban. Ezt a beállítást a C# vagy a VB fordítói nem értik, ezért nem tartják tiszteletben a buildelés során. Ha az elnevezési stílusszabályokat a buildeléskor szeretné kikényszeríteni, a súlyosságot a kódszabály súlyossági konfigurációjának használatával kell beállítania. További információkért tekintse meg ezt a GitHub-problémát.
Szabályrend
Nem számít, hogy az elnevezési szabályok milyen sorrendben vannak definiálva egy EditorConfig-fájlban. Az elnevezési szabályok automatikusan a szabályok definícióinak megfelelően vannak rendezve. A hozzáférési képességekre, a módosítókra és a szimbólumokra vonatkozó pontosabb szabályok elsőbbséget élveznek a kevésbé specifikus szabályokkal szemben. Ha átfedés van a szabályok között, vagy ha a szabályrendezés problémákat okoz, a két szabály metszetét egy új szabályra bonthatja, amely elsőbbséget élvez a szélesebb szabályokkal szemben, amelyekből származik.
Példák: Példa: Átfedésben lévő elnevezési stratégiák és példa: const a módosító tartalmazza static és readonly.
Feljegyzés
Ha a Visual Studio 2019-nél korábbi verzióját használja, az elnevezési szabályokat a Szerkesztőkonfiguráció fájlban a legspecifikusabbtól a legkevésbé specifikusig kell rendezni. Az első alkalmazható szabály az egyetlen alkalmazott szabály. Ha azonban több azonos nevű szabálytulajdonság is van, akkor az ezzel a névvel rendelkező legutóbb talált tulajdonság elsőbbséget élvez. További információ: Fájlhierarchia és elsőbbség.
Példa: Átfedésben lévő elnevezési stratégiák
Vegye figyelembe a következő két elnevezési szabályt:
- A nyilvános metódusok a PascalCase.
- Az aszinkron metódusok végződnek a
"Async".
A metódusok esetében public async nem egyértelmű, hogy melyik szabály élvez elsőbbséget. Létrehozhat egy új szabályt a metódusokhoz public async , és pontosan megadhatja az elnevezést.
Példa: const a módosító tartalmazza static és readonly
Vegye figyelembe a következő két elnevezési szabályt:
- Az állandó mezők PascalCaseek.
- A nem nyilvános
staticmezők s_camelCase.
A 2. szabály pontosabb, és elsőbbséget élvez, ezért minden nem nyilvános állandó mező s_camelCase. A probléma megoldásához megadhat egy metszetszabályt: a nem nyilvános állandó mezők PascalCaseek.
Alapértelmezett elnevezési stílusok
Ha nem ad meg egyéni elnevezési szabályokat, a rendszer a következő alapértelmezett stílusokat használja:
Az osztályok, szerkezetek, enumerálások, tulajdonságok, metódusok és események esetében az alapértelmezett elnevezési stílus a Pascal-eset.
Az akadálymentességgel rendelkező felületek esetében az alapértelmezett elnevezési stílus a Pascal-eset, amelynek előtagja az I.
Kódszabály azonosítója: IDE1006 (Naming rule violation)
Minden elnevezési beállítás rendelkezik szabályazonosítóval IDE1006 és címmel Naming rule violation. Az elnevezési szabálysértések súlyosságát globálisan konfigurálhatja egy EditorConfig-fájlban az alábbi szintaxissal:
dotnet_diagnostic.IDE1006.severity = <severity value>
A súlyossági értéket a buildelés során kell warning vagy errorkell kikényszeríteni. Az összes lehetséges súlyossági értékhez tekintse meg a súlyossági szintet.
Példa: Nyilvános tagok nagybetűsítése
A következő .editorconfig fájl egy elnevezési konvenciót tartalmaz, amely meghatározza, hogy a megjelölt nyilvános tulajdonságokat, metódusokat, mezőket, eseményeket és meghatalmazottakat nagybetűvel kell megadni readonly . Ez az elnevezési konvenció több szimbólumtípust határoz meg, amelyek a szabályt vesszővel választják el egymástól.
[*.{cs,vb}]
# Defining the 'public_symbols' symbol group
dotnet_naming_symbols.public_symbols.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
dotnet_naming_symbols.public_symbols.required_modifiers = readonly
# Defining the 'first_word_upper_case_style' naming style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper
# Defining the 'public_members_must_be_capitalized' naming rule, by setting the
# symbol group to the 'public symbols' symbol group,
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
# setting the naming style to the 'first_word_upper_case_style' naming style,
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
# and setting the severity.
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
Példa: Privát példány mezői aláhúzással
Ez a .editorconfig fájlrészlet kikényszeríti, hogy a privát példány mezőinek egy _; ha nem követi ezt az egyezményt, az IDE fordítóhibaként fogja kezelni. A rendszer figyelmen kívül hagyja a privát statikus mezőket.
Mivel egy szimbólumcsoportot csak a benne szereplő azonosítók (például vagy static) alapján definiálhat, és nem azok alapján az readonly azonosítók alapján, amelyekkel nem rendelkezik (például egy példánymezővel, mert nem rendelkezikstatic), két elnevezési szabályt kell meghatároznia:
- Az összes magánmezőre
static– vagy nem – azunderscoredelnevezési stílust kell alkalmazni fordítókénterror. - A magánmezők
staticesetében azunderscoredelnevezési stílusnak kell vonatkoznia rájuk a súlyossági szinttelnone; más szóval hagyja figyelmen kívül ezt az esetet.
[*.{cs,vb}]
# Define the 'private_fields' symbol group:
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
# Define the 'private_static_fields' symbol group
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields.required_modifiers = static
# Define the 'underscored' naming style
dotnet_naming_style.underscored.capitalization = pascal_case
dotnet_naming_style.underscored.required_prefix = _
# Define the 'private_fields_underscored' naming rule
dotnet_naming_rule.private_fields_underscored.symbols = private_fields
dotnet_naming_rule.private_fields_underscored.style = underscored
dotnet_naming_rule.private_fields_underscored.severity = error
# Define the 'private_static_fields_none' naming rule
dotnet_naming_rule.private_static_fields_none.symbols = private_static_fields
dotnet_naming_rule.private_static_fields_none.style = underscored
dotnet_naming_rule.private_static_fields_none.severity = none
Ez a példa azt is bemutatja, hogy az entitásdefiníciók újra felhasználhatók. Az underscored elnevezési stílust az elnevezési private_fields_underscoredprivate_static_fields_none szabályok is használják.