CA1710: Id's moeten het juiste achtervoegsel hebben
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1710 |
Titel | Id's moeten het juiste achtervoegsel hebben |
Categorie | Naamgeving |
Oplossing is brekend of niet-brekend | Breken |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Een id heeft niet het juiste achtervoegsel.
Deze regel kijkt standaard alleen naar extern zichtbare id's, maar dit kan worden geconfigureerd.
Beschrijving van regel
Standaard hebben de namen van typen die bepaalde basistypen uitbreiden of bepaalde interfaces implementeren, of typen die zijn afgeleid van deze typen, een achtervoegsel dat is gekoppeld aan het basistype of de basisinterface.
Naamconventies bieden een gemeenschappelijk uiterlijk voor bibliotheken die gericht zijn op de algemene taalruntime. Dit vermindert de leercurve die vereist is voor nieuwe softwarebibliotheken en verhoogt het vertrouwen van klanten dat de bibliotheek is ontwikkeld door iemand die expertise heeft in het ontwikkelen van beheerde code.
De volgende tabel bevat de basistypen en interfaces die aan achtervoegsels zijn gekoppeld.
Basistype/interface | Achtervoegsel |
---|---|
System.Attribute | Attribute |
System.EventArgs | EventArgs |
System.Exception | Exception |
System.Collections.ICollection | Collection |
System.Collections.IDictionary | Dictionary |
System.Collections.IEnumerable | Collection |
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> | Dictionary |
System.Collections.Queue |
Collection of Queue |
System.Collections.Stack |
Collection of Stack |
System.Collections.Generic.ICollection<T> | Collection |
System.Collections.Generic.IDictionary<TKey,TValue> | Dictionary |
System.Data.DataSet | DataSet |
System.Data.DataTable |
Collection of DataTable |
System.IO.Stream | Stream |
System.Security.IPermission | Permission |
System.Security.Policy.IMembershipCondition | Condition |
Een gemachtigde voor een gebeurtenis-handler. | EventHandler |
Typen die ICollection een gegeneraliseerde gegevensstructuur implementeren en zijn, zoals een woordenlijst, stack of wachtrij, zijn toegestane namen die zinvolle informatie geven over het beoogde gebruik van het type.
Typen die ICollection implementeren en een verzameling specifieke items bevatten namen die eindigen op het woord Collection
. Een verzameling van Queue objecten heeft bijvoorbeeld de naam QueueCollection
. Het achtervoegsel Collection
geeft aan dat de leden van de verzameling kunnen worden geïnventariseerd met behulp van de instructie foreach
(For Each
in Visual Basic).
Typen die IDictionary of IReadOnlyDictionary<TKey,TValue> implementeren, hebben namen die eindigen op het woord Dictionary
, zelfs als het type ook IEnumerable of ICollectionimplementeert. Met de naamconventies voor Collection
en Dictionary
achtervoegsel kunnen gebruikers onderscheid maken tussen de volgende twee opsommingspatronen.
Typen met het achtervoegsel Collection
volgen dit opsommingspatroon.
foreach(SomeType x in SomeCollection) { }
Typen met het achtervoegsel Dictionary
volgen dit opsommingspatroon.
foreach(SomeType x in SomeDictionary.Values) { }
Een DataSet object bestaat uit een verzameling DataTable objecten, die onder andere bestaat uit verzamelingen en System.Data.DataColumnSystem.Data.DataRow objecten. Deze verzamelingen implementeren ICollection via de basisklasse System.Data.InternalDataCollectionBase .
Schendingen oplossen
Wijzig de naam van het type zodat het achtervoegsel met de juiste term wordt gebruikt.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing te onderdrukken voor het gebruik van het Collection
achtervoegsel als het type een gegeneraliseerde gegevensstructuur is die kan worden uitgebreid of die een willekeurige set verschillende items bevat. In dit geval kan een naam die zinvolle informatie biedt over de implementatie, prestaties of andere kenmerken van de gegevensstructuur zinvol zijn (bijvoorbeeld BinaryTree). In gevallen waarin het type een verzameling van een specifiek type vertegenwoordigt (bijvoorbeeld StringCollection), onderdrukt u geen waarschuwing van deze regel omdat het achtervoegsel aangeeft dat het type kan worden geïnventariseerd met behulp van een foreach
instructie.
Voor andere achtervoegsels onderdrukt u geen waarschuwing van deze regel. Met het achtervoegsel kan het beoogde gebruik worden weergegeven in de naam van het type.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Code configureren om te analyseren
Gebruik de volgende opties om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
- Specifieke API-oppervlakken opnemen
- Indirecte basistypen uitsluiten
- Aanvullende vereiste achtervoegsels
U kunt deze opties configureren voor alleen deze regel, voor alle regels waarop ze van toepassing zijn, of voor alle regels in deze categorie (Naamgeving) waarop ze van toepassing zijn. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid, door de optie api_surface in te stellen. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Notitie
Vervang het XXXX
deel van CAXXXX
door de id van de toepasselijke regel.
Indirecte basistypen uitsluiten
U kunt configureren of indirecte basistypen van de regel moeten worden uitgesloten. Deze optie is standaard ingesteld op true, waardoor de analyse wordt beperkt tot het huidige basistype.
dotnet_code_quality.CA1710.exclude_indirect_base_types = false
Aanvullende vereiste achtervoegsels
U kunt aanvullende vereiste achtervoegsels opgeven of het gedrag van bepaalde in code vastgelegde achtervoegsels overschrijven door het volgende sleutel-waardepaar toe te voegen aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]
Scheid meerdere waarden met een |
teken. Typen kunnen worden opgegeven in een van de volgende indelingen:
- Alleen de naam van het type (bevat alle typen met de naam, ongeacht het type of de naamruimte).
- Volledig gekwalificeerde namen in de documentatie-id-indeling van het symbool met een optioneel
T:
voorvoegsel.
Voorbeelden:
Optiewaarde | Samenvatting |
---|---|
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class |
Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Klasse' te hebben. |
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path |
Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Class' te hebben EN alle typen die 'MyNamespace.IPath' implementeren, moeten het achtervoegsel 'Pad' hebben. |
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} |
Overschrijft ingebouwde achtervoegsels. In dit geval zijn alle typen die 'IDataReader' implementeren, niet meer vereist om te eindigen op 'Verzameling'. |
Gerelateerde regels
CA1711: Id's mogen geen onjuist achtervoegsel hebben