Share via


Kwaliteitsregels voor code

.NET-codeanalyse biedt regels die gericht zijn op het verbeteren van de codekwaliteit. De regels zijn ingedeeld in gebieden zoals ontwerpen, globalisatie, prestaties en beveiliging. Bepaalde regels zijn specifiek voor .NET API-gebruik, terwijl andere regels betrekking hebben op algemene codekwaliteit.

Index van regels

De volgende tabel bevat regels voor codekwaliteitsanalyse.

Regel-id en waarschuwing Beschrijving
CA1000: Geen statische leden declareren voor algemene typen Wanneer een statisch lid van een algemeen type wordt aangeroepen, moet het typeargument worden opgegeven voor het type. Wanneer een algemeen exemplaarlid dat geen ondersteuning biedt voor deductie wordt aangeroepen, moet het typeargument worden opgegeven voor het lid. In deze twee gevallen is de syntaxis voor het opgeven van het typeargument anders en gemakkelijk te verwarren.
CA1001: Typen die eigen wegwerpvelden moeten wegwerpbaar zijn Een klasse declareert en implementeert een exemplaarveld dat een System.IDisposable-type is en de klasse implementeert IDisposable niet. Een klasse die een IDisposable-veld declareert, is indirect eigenaar van een onbeheerde resource en moet de IDisposable-interface implementeren.
CA1002: algemene lijsten niet beschikbaar maken System.Collections.Generic.List<(Of <(T>)>) is een algemene verzameling die is ontworpen voor prestaties, niet overname. Daarom bevat List geen virtuele leden. De algemene verzamelingen die zijn ontworpen voor overname, moeten in plaats daarvan worden weergegeven.
CA1003: Algemene gebeurtenis-handler-exemplaren gebruiken Een type bevat een gemachtigde die ongeldigheid retourneert, waarvan de handtekening twee parameters bevat (het eerste object en het tweede een type dat kan worden toegewezen aan EventArgs) en de bijbehorende assemblydoelen Microsoft .NET Framework 2.0.
CA1005: Vermijd overmatige parameters voor algemene typen Hoe meer typeparameters een algemeen type bevat, hoe moeilijker het is om te weten en te onthouden wat elke typeparameter vertegenwoordigt. Het is meestal duidelijk met één typeparameter, zoals in List<T>, en in bepaalde gevallen met twee typeparameters, zoals in Dictionary<TKey, TValue>. Als er echter meer dan twee typeparameters bestaan, wordt de moeilijkheid te groot voor de meeste gebruikers.
CA1008: Enums moet een nulwaarde hebben De standaardwaarde van een niet-geïnitialiseerde opsomming, net als andere waardetypen, is nul. Een niet-flags-toegeschreven opsomming moet een lid definiëren met behulp van de waarde nul, zodat de standaardwaarde een geldige waarde van de opsomming is. Als een opsomming waarop het kenmerk FlagsAttribute is toegepast een lid met nulwaarden definieert, moet de naam 'Geen' zijn om aan te geven dat er geen waarden zijn ingesteld in de opsomming.
CA1010: Verzamelingen moeten algemene interface implementeren Als u de bruikbaarheid van een verzameling wilt uitbreiden, implementeert u een van de algemene verzamelingsinterfaces. Vervolgens kan de verzameling worden gebruikt om algemene verzamelingstypen te vullen.
CA1012: Abstracte typen mogen geen openbare constructors hebben Constructors voor abstracte typen kunnen alleen worden aangeroepen door afgeleide typen. Omdat openbare constructors exemplaren van een type maken en u geen exemplaren van een abstract type kunt maken, is een abstract type met een openbare constructor onjuist ontworpen.
CA1014: Assembly's markeren met CLSCompliantAttribute De Common Language Specification (CLS) definieert naamgevingsbeperkingen, gegevenstypen en regels waaraan assembly's moeten voldoen als ze in programmeertalen worden gebruikt. Een goed ontwerp bepaalt dat alle assembly's expliciet cls-naleving aangeven met behulp van CLSCompliantAttribute . Als dit kenmerk niet aanwezig is in een assembly, is de assembly niet compatibel.
CA1016: Assembly's markeren met AssemblyVersionAttribute .NET gebruikt het versienummer om een assembly uniek te identificeren en te binden aan typen in sterk benoemde assembly's. Het versienummer wordt samen met versie- en uitgeversbeleid gebruikt. Toepassingen worden standaard alleen uitgevoerd met de assemblyversie waarmee ze zijn gebouwd.
CA1017: Assembly's markeren met ComVisibleAttribute ComVisibleAttribute bepaalt hoe COM-clients toegang krijgen tot beheerde code. Goed ontwerp bepaalt dat assembly's expliciet com-zichtbaarheid aangeven. COM-zichtbaarheid kan worden ingesteld voor de hele assembly en vervolgens worden overschreven voor afzonderlijke typen en typeleden. Als dit kenmerk niet aanwezig is, is de inhoud van de assembly zichtbaar voor COM-clients.
CA1018: Kenmerken markeren met AttributeUsageAttribute Wanneer u een aangepast kenmerk definieert, markeert u het met attributeUsageAttribute om aan te geven waar in de broncode het aangepaste kenmerk kan worden toegepast. De betekenis en het beoogde gebruik van een kenmerk bepalen de geldige locaties in code.
CA1019: Accessors definiëren voor kenmerkargumenten Kenmerken kunnen verplichte argumenten definiëren die moeten worden opgegeven wanneer u het kenmerk toepast op een doel. Deze worden ook wel positionele argumenten genoemd, omdat ze worden geleverd aan kenmerkconstructors als positionele parameters. Voor elk verplicht argument moet het kenmerk ook een bijbehorende alleen-lezen-eigenschap opgeven, zodat de waarde van het argument tijdens de uitvoering kan worden opgehaald. Kenmerken kunnen ook optionele argumenten definiëren, die ook wel benoemde argumenten worden genoemd. Deze argumenten worden op naam opgegeven voor kenmerkconstructors en moeten een bijbehorende eigenschap lezen/schrijven hebben.
CA1021: Parameters vermijden Het doorgeven van typen per verwijzing (met behulp van out of ref) vereist ervaring met aanwijzers, inzicht in de verschillen tussen waardetypen en verwijzingstypen en het verwerken van methoden met meerdere retourwaarden. Het verschil tussen out- en refparameters wordt ook niet algemeen begrepen.
CA1024: Eigenschappen gebruiken waar van toepassing Een openbare of beveiligde methode heeft een naam die begint met Get, heeft geen parameters en retourneert een waarde die geen matrix is. De methode kan een goede kandidaat zijn om een eigenschap te worden.
CA1027: Opsommingen markeren met FlagsAttribute Een opsomming is een waardetype dat een set gerelateerde benoemde constanten definieert. Pas FlagsAttribute toe op een opsomming wanneer de benoemde constanten zinvol kunnen worden gecombineerd.
CA1028: Enum-opslag moet Int32 zijn Een opsomming is een waardetype dat een set gerelateerde benoemde constanten definieert. Standaard wordt het gegevenstype System.Int32 gebruikt om de constante waarde op te slaan. Hoewel u dit onderliggende type kunt wijzigen, is dit niet vereist of aanbevolen voor de meeste scenario's.
CA1030: Gebruik waar nodig gebeurtenissen Deze regel detecteert methoden met namen die normaal gesproken worden gebruikt voor gebeurtenissen. Als een methode wordt aangeroepen als reactie op een duidelijk gedefinieerde statuswijziging, moet de methode worden aangeroepen door een gebeurtenis-handler. Objecten die de methode aanroepen, moeten gebeurtenissen genereren in plaats van de methode rechtstreeks aan te roepen.
CA1031: Algemene uitzonderingstypen niet vangen Algemene uitzonderingen mogen niet worden betrapt. Een specifiekere uitzondering vangen of de algemene uitzondering opnieuw afwerpen als de laatste instructie in het catch-blok.
CA1032: Standaard uitzonderingsconstructors implementeren Als u de volledige set constructors niet opgeeft, kan het lastig zijn om uitzonderingen correct af te handelen.
CA1033: Interfacemethoden moeten kunnen worden aangeroepen door onderliggende typen Een niet-verzegeld extern zichtbaar type biedt een expliciete methode-implementatie van een openbare interface en biedt geen alternatieve extern zichtbare methode met dezelfde naam.
CA1034: Geneste typen mogen niet zichtbaar zijn Een genest type is een type dat wordt gedeclareerd in het bereik van een ander type. Geneste typen zijn handig om details van de privé-implementatie van het type in te kapselen. Voor dit doel mogen geneste typen niet extern zichtbaar zijn.
CA1036: Methoden overschrijven voor vergelijkbare typen Een openbaar of beveiligd type implementeert de System.IComparable-interface. Object.Equals wordt niet overschreven en de taalspecifieke operator voor gelijkheid, ongelijkheid, kleiner dan of groter dan.
CA1040: Lege interfaces vermijden Interfaces definiëren leden die een gedrag of gebruikscontract bieden. De functionaliteit die door de interface wordt beschreven, kan worden gebruikt door elk type, ongeacht waar het type wordt weergegeven in de overnamehiërarchie. Een type implementeert een interface door implementaties te bieden voor de leden van de interface. Een lege interface definieert geen leden; daarom definieert het geen contract dat kan worden geïmplementeerd.
CA1041: Message ObsoleteAttribute opgeven Een type of lid wordt gemarkeerd met behulp van een kenmerk System.ObsoleteAttribute waarvoor de eigenschap ObsoleteAttribute.Message niet is opgegeven. Wanneer een type of lid dat is gemarkeerd met behulp van ObsoleteAttribute wordt gecompileerd, wordt de eigenschap Bericht van het kenmerk weergegeven. Dit geeft de gebruiker informatie over het verouderde type of lid.
CA1043: Integraal of tekenreeksargument gebruiken voor indexeerfuncties Indexeerfuncties (dat wil gezegd, geïndexeerde eigenschappen) moeten integraal of tekenreekstypen voor de index gebruiken. Deze typen worden doorgaans gebruikt voor het indexeren van gegevensstructuren en vergroten de bruikbaarheid van de bibliotheek. Het gebruik van het objecttype moet worden beperkt tot gevallen waarin het specifieke integrale of tekenreekstype niet kan worden opgegeven tijdens het ontwerp.
CA1044: Eigenschappen mogen niet alleen worden geschreven Hoewel het acceptabel en vaak nodig is om een alleen-lezen eigenschap te hebben, verbieden de ontwerprichtlijnen het gebruik van alleen-schrijven-eigenschappen. Dit komt doordat een gebruiker een waarde kan instellen en vervolgens verhindert dat de gebruiker die waarde bekijkt, geen beveiliging biedt. Ook, zonder leestoegang, kan de status van gedeelde objecten niet worden bekeken, waardoor de bruikbaarheid ervan wordt beperkt.
CA1045: Geef geen typen door op verwijzing Het doorgeven van typen per verwijzing (met behulp van out of ref) vereist ervaring met aanwijzers, inzicht in de verschillen tussen waardetypen en verwijzingstypen en het verwerken van methoden met meerdere retourwaarden. Bibliotheekarchitecten die voor een algemeen publiek ontwerpen, mogen niet verwachten dat gebruikers bekwaam worden in het werken met out of ref parameters.
CA1046: Operator voor overbelasting is niet gelijk aan verwijzingstypen Voor referentietypen is de standaard implementatie van de gelijkheidsoperator bijna altijd juist. Standaard zijn twee verwijzingen alleen gelijk als ze verwijzen naar hetzelfde object.
CA1047: Geen beveiligde leden declareren in verzegelde typen Typen declareren beveiligde leden, zodat overgenomen typen het lid kunnen openen of overschrijven. Verzegelde typen kunnen per definitie niet worden overgenomen, wat betekent dat beveiligde methoden voor verzegelde typen niet kunnen worden aangeroepen.
CA1050: Typen declareren in naamruimten Typen worden gedeclareerd in naamruimten om naamconflicten te voorkomen en als een manier om gerelateerde typen in een objecthiërarchie te organiseren.
CA1051: Niet zichtbare exemplaarvelden declareren Het primaire gebruik van een veld moet een implementatiedetails zijn. Velden moeten privé of intern zijn en moeten worden weergegeven met behulp van eigenschappen.
CA1052: Statische houdertypen moeten worden verzegeld Een openbaar of beveiligd type bevat alleen statische leden en wordt niet gedeclareerd met behulp van de verzegelde (C#-verwijzing) (Nietheritable) modifier. Een type dat niet moet worden overgenomen, moet worden gemarkeerd met behulp van de verzegelde wijziging om te voorkomen dat het als basistype wordt gebruikt.
CA1053: Statische houdertypen mogen geen constructors hebben Een openbaar of genest openbaar type declareert alleen statische leden en heeft een openbare of beveiligde standaardconstructor. De constructor is niet nodig omdat het aanroepen van statische leden geen exemplaar van het type vereist. De overbelasting van de tekenreeks moet de URI-overbelasting (Uniform Resource Identifier) aanroepen met behulp van het tekenreeksargument voor veiligheid en beveiliging.
CA1054: URI-parameters mogen geen tekenreeksen zijn Als een methode een tekenreeksweergave van een URI gebruikt, moet er een bijbehorende overbelasting worden opgegeven die een instantie van de URI-klasse gebruikt, die deze services op een veilige en veilige manier levert.
CA1055: URI-retourwaarden mogen geen tekenreeksen zijn Bij deze regel wordt ervan uitgegaan dat de methode een URI retourneert. Een tekenreeksweergave van een URI is gevoelig voor parserings- en coderingsfouten en kan leiden tot beveiligingsproblemen. De klasse System.Uri biedt deze services op een veilige en veilige manier.
CA1056: URI-eigenschappen mogen geen tekenreeksen zijn Bij deze regel wordt ervan uitgegaan dat de eigenschap een URI (Uniform Resource Identifier) vertegenwoordigt. Een tekenreeksweergave van een URI is gevoelig voor parserings- en coderingsfouten en kan leiden tot beveiligingsproblemen. De klasse System.Uri biedt deze services op een veilige en veilige manier.
CA1058: Typen mogen bepaalde basistypen niet uitbreiden Een extern zichtbaar type breidt bepaalde basistypen uit. Gebruik een van de alternatieven.
CA1060: P/Invokes verplaatsen naar de klasse NativeMethods Platformaanroepmethoden, zoals methoden die zijn gemarkeerd met behulp van het kenmerk System.Runtime.InteropServices.DllImportAttribute, of methoden die zijn gedefinieerd met behulp van het Declare trefwoord in Visual Basic, hebben toegang tot onbeheerde code. Deze methoden moeten van de klasse NativeMethods, SafeNativeMethods of UnsafeNativeMethods zijn.
CA1061: Basisklassemethoden niet verbergen Een methode in een basistype wordt verborgen door een identieke benoemde methode in een afgeleid type, wanneer de parameterhandtekening van de afgeleide methode alleen verschilt van typen die zwakker zijn afgeleid dan de bijbehorende typen in de parameterhandtekening van de basismethode.
CA1062: Argumenten van openbare methoden valideren Alle verwijzingsargumenten die worden doorgegeven aan extern zichtbare methoden, moeten worden gecontroleerd op null.
CA1063: IDisposable correct implementeren Alle typen IDisposable moeten het verwijderingspatroon correct implementeren.
CA1064: Uitzonderingen moeten openbaar zijn Een interne uitzondering is alleen zichtbaar binnen een eigen intern bereik. Nadat de uitzondering buiten het interne bereik valt, kan alleen de basisonderzondering worden gebruikt om de uitzondering te ondervangen. Als de interne uitzondering wordt overgenomen van Exception, SystemExceptionof ApplicationException, beschikt de externe code niet over voldoende informatie om te weten wat er met de uitzondering moet worden uitgevoerd.
CA1065: Geen uitzonderingen genereren op onverwachte locaties Een methode die naar verwachting geen uitzonderingen genereert, genereert een uitzondering.
CA1066: IEquatable implementeren bij het overschrijven van equals Een methode voor het overschrijven Equals van een waardetype, maar wordt niet geïmplementeerd IEquatable<T>.
CA1067: Onderdrukking is gelijk aan bij het implementeren van IEquatable Een type implementeert IEquatable<T>, maar overschrijft Equals de methode niet.
CA1068: De parameters CancellationToken moeten als laatste komen Een methode heeft een CancellationToken-parameter die niet de laatste parameter is.
CA1069: Enums mogen geen dubbele waarden hebben Een opsomming heeft meerdere leden die expliciet dezelfde constante waarde hebben toegewezen.
CA1070: Gebeurtenisvelden niet declareren als virtueel Een veldachtige gebeurtenis is gedeclareerd als virtueel.
CA1200: Vermijd het gebruik van cref-tags met een voorvoegsel Het cref-kenmerk in een XML-documentatietag betekent 'codereferentie '. Hiermee geeft u op dat de binnenste tekst van de tag een code-element is, zoals een type, methode of eigenschap. Vermijd het gebruik van cref tags met voorvoegsels, omdat hiermee wordt voorkomen dat de compiler verwijzingen verifieert. Het voorkomt ook dat de IDE (Integrated Development Environment) van Visual Studio deze symboolverwijzingen tijdens herstructureringen kan vinden en bijwerken.
CA1303: Geen letterlijke waarden doorgeven als gelokaliseerde parameters Een extern zichtbare methode geeft een letterlijke tekenreeks als parameter door aan een .NET-constructor of -methode en die tekenreeks moet kunnen worden gelokaliseerd.
CA1304: CultureInfo opgeven Een methode of constructor roept een lid aan dat een overbelasting heeft die een parameter System.Globalization.CultureInfo accepteert en de methode of constructor roept niet de overbelasting aan die de parameter CultureInfo gebruikt. Wanneer er geen CultureInfo- of System.IFormatProvider-object wordt opgegeven, heeft de standaardwaarde die wordt opgegeven door het overbelaste lid mogelijk niet het gewenste effect in alle landinstellingen.
CA1305: IFormatProvider opgeven Een methode of constructor roept een of meer leden aan die overbelastingen hebben die een parameter System.IFormatProvider accepteren en de methode of constructor roept de overbelasting die de parameter IFormatProvider gebruikt niet aan. Wanneer een object System.Globalization.CultureInfo of IFormatProvider niet wordt opgegeven, heeft de standaardwaarde die wordt opgegeven door het overbelaste lid mogelijk niet het gewenste effect in alle landinstellingen.
CA1307: StringComparison opgeven voor duidelijkheid Een tekenreeksvergelijkingsbewerking maakt gebruik van een methode-overbelasting die geen stringComparison-parameter instelt.
CA1308: Tekenreeksen normaliseren in hoofdletters Tekenreeksen moeten worden genormaliseerd in hoofdletters. Een kleine groep tekens kan geen retour maken wanneer deze worden geconverteerd naar kleine letters.
CA1309: Ordinaal StringComparison gebruiken Een tekenreeksvergelijkingsbewerking die niet-linguistisch is, stelt de parameter StringComparison niet in op Ordinal ordinalIgnoreCase. Door de parameter expliciet in te stellen op StringComparison.Ordinal of StringComparison.OrdinalIgnoreCase, wordt uw code vaak sneller, correcter en betrouwbaarder.
CA1310: StringComparison opgeven voor juistheid Een tekenreeksvergelijkingsbewerking maakt gebruik van een methode-overbelasting die geen stringComparison-parameter instelt en die standaard cultuurspecifieke tekenreeksvergelijking gebruikt.
CA1311: Een cultuur opgeven of een invariante versie gebruiken Geef een cultuur op of gebruik een invariante cultuur om impliciete afhankelijkheid van de huidige cultuur te voorkomen bij het aanroepen ToUpper of ToLower.
CA1401: P/Invokes mag niet zichtbaar zijn Een openbare of beveiligde methode in een openbaar type heeft het kenmerk System.Runtime.InteropServices.DllImportAttribute (ook geïmplementeerd met het sleutelwoord Declare in Visual Basic). Dergelijke methoden mogen niet worden weergegeven.
CA1416: Platformcompatibiliteit valideren Als u platformafhankelijke API's voor een onderdeel gebruikt, werkt de code niet meer op alle platforms.
CA1417: Niet gebruiken OutAttribute voor tekenreeksparameters voor P/Invokes Tekenreeksparameters die door de waarde worden doorgegeven, OutAttribute kunnen de runtime stabiliseren als de tekenreeks een interne tekenreeks is.
CA1418: Geldige platformtekenreeks gebruiken Voor platformcompatibiliteitsanalyse is een geldige platformnaam en -versie vereist.
CA1419: Geef een parameterloze constructor op die net zo zichtbaar is als het type dat voor betontypen is afgeleid van System.Runtime.InteropServices.SafeHandle Door een parameterloze constructor op te geven die net zo zichtbaar is als het type dat is afgeleid van een type dat is afgeleid van System.Runtime.InteropServices.SafeHandle , kunnen betere prestaties en gebruik worden geboden met door de bron gegenereerde interoperabiliteitsoplossingen.
CA1420: Voor eigenschap, type of kenmerk is runtime-marshalling vereist Het gebruik van functies waarvoor runtime-marshalling is vereist wanneer runtime marshalling is uitgeschakeld, leidt tot runtime-uitzonderingen.
CA1421: Methode maakt gebruik van runtime marshalling wanneer DisableRuntimeMarshallingAttribute wordt toegepast Een methode maakt gebruik van runtime marshalling en runtime marshalling wordt expliciet uitgeschakeld.
CA1422: Platformcompatibiliteit valideren Het aanroepen van een API die verouderd is in een bepaald besturingssysteem (versie) vanaf een aanroepsite die bereikbaar is vanuit dat besturingssysteem (versie) wordt niet aanbevolen.
CA1501: Vermijd overmatige overname Een type is meer dan vier niveaus diep in de overnamehiërarchie. Diep geneste typehiërarchieën kunnen moeilijk te volgen, begrijpen en onderhouden zijn.
CA1502: Vermijd overmatige complexiteit Deze regel meet het aantal lineair onafhankelijke paden via de methode, die wordt bepaald door het aantal en de complexiteit van voorwaardelijke vertakkingen.
CA1505: Niet-onderhoudbare code vermijden Een type of methode heeft een indexwaarde met een lage onderhoudbaarheid. Een index met een lage onderhoudbaarheid geeft aan dat een type of methode waarschijnlijk moeilijk te onderhouden is en een goede kandidaat is voor het opnieuw ontwerpen.
CA1506: Vermijd overmatige klassekoppeling Deze regel meet klassekoppeling door het aantal unieke typeverwijzingen te tellen dat een type of methode bevat.
CA1507: Naamvan gebruiken in plaats van tekenreeks Een letterlijke tekenreeks wordt gebruikt als een argument waar een nameof expressie kan worden gebruikt.
CA1508: Dode voorwaardelijke code vermijden Een methode heeft voorwaardelijke code die altijd wordt true geëvalueerd of false tijdens runtime. Dit leidt tot dode code in de false vertakking van de voorwaarde.
CA1509: Ongeldige vermelding in configuratiebestand voor metrische gegevens van code Regels voor metrische codegegevens, zoals CA1501, CA1502, CA1505 en CA1506, hebben een configuratiebestand met de naam CodeMetricsConfig.txt een ongeldige vermelding opgegeven.
CA1510: ArgumentNullException throw helper gebruiken Throw helpers zijn eenvoudiger en efficiënter dan if blokken die een nieuw uitzonderingsexemplaren maken.
CA1511: ArgumentException throw helper gebruiken Throw helpers zijn eenvoudiger en efficiënter dan if blokken die een nieuw uitzonderingsexemplaren maken.
CA1512: ArgumentOutOfRangeException throw helper gebruiken Throw helpers zijn eenvoudiger en efficiënter dan if blokken die een nieuw uitzonderingsexemplaren maken.
CA1513: ObjectDisposedException throw helper gebruiken Throw helpers zijn eenvoudiger en efficiënter dan if blokken die een nieuw uitzonderingsexemplaren maken.
CA1514: Argument redundante lengte vermijden Een argument voor redundante lengte wordt gebruikt bij het segmenteren naar het einde van een tekenreeks of buffer. Een berekende lengte kan foutgevoelig zijn en is ook overbodig.
CA1515: Overweeg om openbare typen intern te maken In tegenstelling tot een klassebibliotheek wordt de API van een toepassing doorgaans niet openbaar genoemd, zodat typen intern kunnen worden gemarkeerd.
CA1700: Geef geen opsommingswaarden 'Gereserveerd' op Bij deze regel wordt ervan uitgegaan dat een opsommingslid met een naam met gereserveerde naam momenteel niet wordt gebruikt, maar een tijdelijke aanduiding is die moet worden gewijzigd of verwijderd in een toekomstige versie. Het hernoemen of verwijderen van een lid is een belangrijke wijziging.
CA1707: Id's mogen geen onderstrepingstekens bevatten Id-namen bevatten standaard niet het onderstrepingsteken (_). Met deze regel worden naamruimten, typen, leden en parameters gecontroleerd.
CA1708: Id's moeten meer verschillen dan hoofdletters Id's voor naamruimten, typen, leden en parameters kunnen niet alleen per geval verschillen, omdat talen die gericht zijn op de algemene taalruntime, niet hoofdlettergevoelig hoeven te zijn.
CA1710: Id's moeten het juiste achtervoegsel hebben 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.
CA1711: Id's mogen geen onjuist achtervoegsel hebben Volgens de conventie moeten alleen de namen van typen die bepaalde basistypen uitbreiden of bepaalde interfaces implementeren, of typen die zijn afgeleid van deze typen, eindigen met specifieke gereserveerde achtervoegsels. Andere typenamen mogen deze gereserveerde achtervoegsels niet gebruiken.
CA1712: Geen voorvoegsel enumwaarden met typenaam Namen van opsommingsleden worden niet voorafgegaan door de naam van het type te gebruiken, omdat ontwikkelhulpprogramma's naar verwachting typegegevens bevatten.
CA1713: Gebeurtenissen mogen niet vóór of na voorvoegsel hebben De naam van een gebeurtenis begint met 'Voor' of 'Na'. Als u gerelateerde gebeurtenissen wilt noemen die in een specifieke volgorde worden gegenereerd, gebruikt u de huidige of eerdere gespannen tijd om de relatieve positie in de volgorde van acties aan te geven.
CA1714: Vlaggen enums moeten meervoudsnamen hebben Een openbare opsomming heeft het kenmerk System.FlagsAttribute en de naam eindigt niet op 's'. Typen die zijn gemarkeerd met flagsAttribute hebben namen die meervoud zijn, omdat het kenmerk aangeeft dat er meer dan één waarde kan worden opgegeven.
CA1715: Id's moeten het juiste voorvoegsel hebben De naam van een extern zichtbare interface begint niet met een hoofdletter 'I'. De naam van een algemene typeparameter voor een extern zichtbaar type of methode begint niet met een hoofdletter T.
CA1716: Id's mogen niet overeenkomen met trefwoorden Een naamruimtenaam of een typenaam komt overeen met een gereserveerd trefwoord in een programmeertaal. Id's voor naamruimten en typen moeten niet overeenkomen met trefwoorden die zijn gedefinieerd door talen die gericht zijn op de runtime van de algemene taal.
CA1717: Alleen FlagsAttribute-opsommingen moeten meervoudsnamen hebben Naamconventies bepalen dat een meervoudsnaam voor een opsomming aangeeft dat meer dan één waarde van de opsomming tegelijkertijd kan worden opgegeven.
CA1720: Id's mogen geen typenamen bevatten De naam van een parameter in een extern zichtbaar lid bevat een gegevenstypenaam of de naam van een extern zichtbaar lid bevat een taalspecifieke naam voor het gegevenstype.
CA1721: Eigenschapsnamen mogen niet overeenkomen met get-methoden De naam van een openbaar of beveiligd lid begint met 'Ophalen' en komt anders overeen met de naam van een openbare of beveiligde eigenschap. 'Get'-methoden en -eigenschappen moeten namen hebben die hun functie duidelijk onderscheiden.
CA1724: Typenamen mogen niet overeenkomen met naamruimten Typenamen mogen niet overeenkomen met de namen van .NET-naamruimten. Het schenden van deze regel kan de bruikbaarheid van de bibliotheek verminderen.
CA1725: Parameternamen moeten overeenkomen met basisdeclaratie Consistente naamgeving van parameters in een onderdrukkingshiërarchie verhoogt de bruikbaarheid van de methode-onderdrukkingen. Een parameternaam in een afgeleide methode die verschilt van de naam in de basisdeclaratie kan verwarring veroorzaken over het feit of de methode een onderdrukking is van de basismethode of een nieuwe overbelasting van de methode.
CA1727: PascalCase gebruiken voor benoemde tijdelijke aanduidingen Gebruik PascalCase voor benoemde tijdelijke aanduidingen in de sjabloon voor logboekregistratieberichten.
CA1801: Ongebruikte parameters controleren Een methodehandtekening bevat een parameter die niet wordt gebruikt in de hoofdtekst van de methode.
CA1802: letterlijke waarden gebruiken, indien van toepassing Een veld wordt gedeclareerd als statisch en alleen-lezen (Gedeeld en Alleen-lezen in Visual Basic) en wordt geïnitialiseerd met behulp van een waarde die kan worden gecompileerd tijdens het compileren. Omdat de waarde die aan het doelveld is toegewezen, kan worden samengesteld tijdens het compileren, wijzigt u de declaratie in een const-veld (Const in Visual Basic), zodat de waarde wordt berekend tijdens het compileren in plaats van tijdens runtime.
CA1805: Initialiseer niet onnodig De .NET-runtime initialiseert alle velden met verwijzingstypen naar de standaardwaarden voordat de constructor wordt uitgevoerd. In de meeste gevallen is het expliciet initialiseren van een veld naar de standaardwaarde redundant, wat extra onderhoudskosten toevoegt en de prestaties kan verlagen (bijvoorbeeld met een grotere assemblygrootte).
CA1806: Methoderesultaten niet negeren Er wordt een nieuw object gemaakt, maar nooit gebruikt; of een methode die een nieuwe tekenreeks maakt en retourneert, wordt aangeroepen en de nieuwe tekenreeks wordt nooit gebruikt; of een COM- of P/Invoke-methode retourneert een HRESULT- of foutcode die nooit wordt gebruikt.
CA1810: Referentietype statische velden inline initialiseren Wanneer een type een expliciete statische constructor declareert, voegt de JIT-compiler (Just-In-Time) een controle toe aan elke statische methode en instantieconstructor van het type om ervoor te zorgen dat de statische constructor eerder is aangeroepen. Statische constructorcontroles kunnen de prestaties verminderen.
CA1812: Vermijd niet-geïnstantieerde interne klassen Een exemplaar van een type assemblyniveau wordt niet gemaakt door code in de assembly.
CA1813: Niet-verzegelde kenmerken voorkomen .NET biedt methoden voor het ophalen van aangepaste kenmerken. Deze methoden doorzoeken standaard de overnamehiërarchie van kenmerken. Het afdichten van het kenmerk elimineert de zoekopdracht via de overnamehiërarchie en kan de prestaties verbeteren.
CA1814: Voorkeur aan gelabelde matrices boven multidimensionaal Een gelabelde matrix is een matrix waarvan de elementen matrices zijn. De matrices waaruit de elementen bestaan, kunnen van verschillende grootten zijn, wat leidt tot minder verspilde ruimte voor sommige gegevenssets.
CA1815: Onderdrukking is gelijk aan en operator is gelijk aan waardetypen Voor waardetypen gebruikt de overgenomen implementatie van Equals de bibliotheek Weerspiegeling en vergelijkt de inhoud van alle velden. Weerspiegeling is rekenkrachtig en het vergelijken van elk veld voor gelijkheid kan onnodig zijn. Als u verwacht dat gebruikers instanties vergelijken of sorteren, of exemplaren gebruiken als hashtabelsleutels, moet uw waardetype Gelijk zijn implementeren.
CA1816: Bel GC. SuppressFinalize correct Een methode die een implementatie van Dispose is, roept GC niet aan. SuppressFinalize; of een methode die geen implementatie is van Dispose roept GC aan. SuppressFinalize; of een methode roept GC aan. SuppressFinalize en geeft iets anders door (Ik in Visual Basic).
CA1819: Eigenschappen mogen geen matrices retourneren Matrices die door eigenschappen worden geretourneerd, zijn niet beveiligd tegen schrijven, zelfs niet wanneer de eigenschap het kenmerk Alleen-lezen heeft. Als u de matrix manipulatiebestendig wilt houden, moet de eigenschap een kopie van de matrix retourneren. Normaal gesproken begrijpen gebruikers de negatieve gevolgen van het aanroepen van een dergelijke eigenschap niet.
CA1820: Testen op lege tekenreeksen met tekenreekslengte Het vergelijken van tekenreeksen met behulp van de eigenschap String.Length of de methode String.IsNullOrEmpty is aanzienlijk sneller dan het gebruik van Equals.
CA1821: Lege finalizers verwijderen Vermijd waar mogelijk finalizers vanwege de extra prestatieoverhead die betrokken is bij het bijhouden van de levensduur van objecten. Een lege finalizer heeft extra overhead en biedt geen voordeel.
CA1822: Leden markeren als statisch Leden die geen toegang hebben tot exemplaargegevens of methoden voor aanroepen van exemplaren, kunnen worden gemarkeerd als statisch (gedeeld in Visual Basic). Nadat u de methoden als statisch hebt gemarkeerd, verzendt de compiler niet-virtuele aanroepsites naar deze leden. Dit kan u een meetbare prestatiewinst bieden voor prestatiegevoelige code.
CA1823: Ongebruikte privévelden vermijden Er zijn privévelden gedetecteerd die niet in de assembly worden geopend.
CA1824: Assembly's markeren met NeutralResourcesLanguageAttribute Het kenmerk NeutralResourcesLanguage informeert de resourcemanager van de taal die is gebruikt om de resources van een neutrale cultuur voor een assembly weer te geven. Dit verbetert de opzoekprestaties voor de eerste resource die u laadt en kan uw werkset verminderen.
CA1825: Matrixtoewijzingen met lengte nul vermijden Het initialiseren van een matrix met lengte nul leidt tot onnodige geheugentoewijzing. Gebruik in plaats daarvan het statisch toegewezen lege matrixexemplaren door aan te roepen Array.Empty. De geheugentoewijzing wordt gedeeld in alle aanroepen van deze methode.
CA1826: Eigenschap gebruiken in plaats van Linq Enumerable-methode Enumerable LINQ-methode is gebruikt voor een type dat een equivalente, efficiëntere eigenschap ondersteunt.
CA1827: Gebruik count/LongCount niet wanneer any kan worden gebruikt Count of LongCount methode is gebruikt waar Any de methode efficiënter zou zijn.
CA1828: Gebruik CountAsync/LongCountAsync niet wanneer AnyAsync kan worden gebruikt CountAsync of LongCountAsync methode is gebruikt waar AnyAsync de methode efficiënter zou zijn.
CA1829: de eigenschap Length/Count gebruiken in plaats van de methode Enumerable.Count Count LINQ-methode is gebruikt voor een type dat ondersteuning biedt voor een equivalente, efficiëntere Length eigenschap of Count eigenschap.
CA1830: Voorkeur sterk getypte append- en insert-methode overloads on StringBuilder Append en Insert zorgen voor overbelastingen voor meerdere typen daarbuiten String. Indien mogelijk geeft u de voorkeur aan de sterk getypte overbelasting met behulp van ToString() en de op tekenreeks gebaseerde overbelasting.
CA1831: AsSpan gebruiken in plaats van op bereik gebaseerde indexeerfuncties voor tekenreeksen indien van toepassing Wanneer u een bereikindexeerfunctie op een tekenreeks gebruikt en impliciet de waarde toewijst aan het tekentype> ReadOnlySpan<, wordt de methode Substring gebruikt in plaats van Slice, waarmee een kopie van het aangevraagde gedeelte van de tekenreeks wordt geproduceerd.
CA1832: AsSpan of AsMemory gebruiken in plaats van op range gebaseerde indexeerfuncties voor het ophalen van ReadOnlySpan of ReadOnlyMemory-gedeelte van een matrix Wanneer u een bereikindexeerfunctie op een matrix gebruikt en de waarde impliciet toewijst aan een ReadOnlySpan<T> of ReadOnlyMemory<T> ander type, wordt de methode GetSubArray gebruikt in plaats van Slice, die een kopie van het aangevraagde gedeelte van de matrix produceert.
CA1833: AsSpan of AsMemory gebruiken in plaats van indexeerfuncties op basis van bereik voor het ophalen van span- of geheugengedeelte van een matrix Wanneer u een bereikindexeerfunctie op een matrix gebruikt en de waarde impliciet toewijst aan een Span<T> of Memory<T> ander type, wordt de methode GetSubArray gebruikt in plaats van Slice, die een kopie van het aangevraagde gedeelte van de matrix produceert.
CA1834: StringBuilder.Append(char) gebruiken voor tekenreeksen met één teken StringBuilder heeft een Append overbelasting die een char als argument gebruikt. Geef de voorkeur aan het aanroepen van de char overbelasting om prestatieredenen.
CA1835: Prefereert de op geheugen gebaseerde overbelastingen voor ReadAsync en WriteAsync 'Stream' heeft een 'ReadAsync'-overbelasting die een 'Memory<Byte>' als eerste argument gebruikt, en een 'WriteAsync'-overbelasting die een ReadOnlyMemory<Byte> als eerste argument gebruikt. Geef de voorkeur aan het aanroepen van overbelastingen op basis van geheugen, die efficiënter zijn.
CA1836: Voorkeur IsEmpty over Count wanneer beschikbaar Geef de voorkeur IsEmpty aan eigenschap die efficiënter is danCount, LengthCount<TSource>(IEnumerable<TSource>) of LongCount<TSource>(IEnumerable<TSource>) om te bepalen of het object items bevat of niet.
CA1837: gebruiken Environment.ProcessId in plaats van Process.GetCurrentProcess().Id Environment.ProcessId is eenvoudiger en sneller dan Process.GetCurrentProcess().Id.
CA1838: Parameters voor P/Invokes vermijden StringBuilder Marshalling van 'StringBuilder' maakt altijd een systeemeigen bufferkopie, wat resulteert in meerdere toewijzingen voor één marshallbewerking.
CA1839: Environment.ProcessPath gebruiken in plaats van Process.GetCurrentProcess(). MainModule.FileName Environment.ProcessPath is eenvoudiger en sneller dan Process.GetCurrentProcess().MainModule.FileName.
CA1840: Environment.CurrentManagedThreadId gebruiken in plaats van Thread.CurrentThread.ManagedThreadId Environment.CurrentManagedThreadId is compacter en efficiënter dan Thread.CurrentThread.ManagedThreadId.
CA1841: Voorkeurswoordenlijst bevat methoden Het aanroepen van Contains de Keys of Values verzameling kan vaak duurder zijn dan bellen ContainsKey of ContainsValue in de woordenlijst zelf.
CA1842: Gebruik 'WhenAll' niet met één taak Het gebruik WhenAll met één taak kan leiden tot prestatieverlies. Wacht of retourneer in plaats daarvan de taak.
CA1843: Gebruik 'WaitAll' niet met één taak Het gebruik WaitAll met één taak kan leiden tot prestatieverlies. Wacht of retourneer in plaats daarvan de taak.
CA1844: Op geheugen gebaseerde onderdrukkingen van asynchrone methoden bieden bij het subklassen 'Stream' Als u de prestaties wilt verbeteren, overschrijft u de asynchrone methoden op basis van geheugen wanneer u Stream subklasseert. Implementeer vervolgens de op matrix gebaseerde methoden op basis van de geheugenmethoden.
CA1845: gebruik tekenreeks op basis van span. Concat' Het is efficiënter om te gebruiken AsSpan en string.Concatin plaats van Substring een samenvoegingsoperator.
CA1846: Voorkeur AsSpan boven Substring AsSpan is efficiënter dan Substring. Substring voert een O(n) tekenreekskopie uit, terwijl AsSpan dit niet het geval is en een constante kosten heeft. AsSpan voert ook geen heap-toewijzingen uit.
CA1847: Letterlijke tekens gebruiken voor één tekenzoekactie Gebruik String.Contains(char) in plaats van String.Contains(string) bij het zoeken naar één teken.
CA1848: De LoggerMessage-gemachtigden gebruiken Gebruik de LoggerMessage gemachtigden voor betere prestaties.
CA1849: asynchrone methoden aanroepen in een asynchrone methode In een methode die al asynchroon is, moeten aanroepen naar andere methoden zijn naar hun asynchrone versies, waar ze bestaan.
CA1850: Voorkeur voor statische HashData methode ComputeHash Het is efficiënter om de statische HashData methode te gebruiken voor het maken en beheren van een HashAlgorithm exemplaar dat moet worden aangeroepen ComputeHash.
CA1851: Mogelijke meerdere inventarisaties van IEnumerable verzameling Mogelijke meerdere inventarisaties van IEnumerable verzamelingen. Overweeg een implementatie te gebruiken die meerdere opsommingen vermijdt.
CA1852: Interne afdichtingstypen Een type dat niet toegankelijk is buiten de assembly en geen subtypen in de bijbehorende assembly bevat, is niet verzegeld.
CA1853: Onnodige aanroep naar 'Dictionary.ContainsKey(key)' Er is geen noodzaak om mee Dictionary.ContainsKey(key)te bewakenDictionary.Remove(key). Dictionary<TKey,TValue>.Remove(TKey) controleert al of de sleutel bestaat en wordt niet gegenereerd als deze niet bestaat.
CA1854: Geef de voorkeur aan de methode 'IDictionary.TryGetValue(TKey, out TValue)' Geef de voorkeur aan 'TryGetValue' via een indexeerfunctie voor woordenlijsttoegang die wordt beveiligd door een 'ContainsKey'-controle. 'ContainsKey' en de indexeerfunctie zoeken beide de sleutel op, dus door 'TryGetValue' te gebruiken, voorkomt u de extra zoekactie.
CA1855: Span<T> gebruiken. Clear() in plaats van Span<T>. Fill() Het is efficiënter om aan te roepen Span<T>.Clear() dan het aanroepen Span<T>.Fill(T) om de elementen van het bereik te vullen met een standaardwaarde.
CA1856: Onjuist gebruik van kenmerk ConstantExpected Het ConstantExpectedAttribute kenmerk wordt niet correct toegepast op een parameter.
CA1857: De parameter verwacht een constante voor optimale prestaties Er wordt een ongeldig argument doorgegeven aan een parameter met ConstantExpectedAttributeaantekeningen.
CA1858: StartsWith gebruiken in plaats van IndexOf Het is efficiënter om aan te roepen String.StartsWith dan aan te roepen String.IndexOf om te controleren of een tekenreeks begint met een bepaald voorvoegsel.
CA1859: Gebruik indien mogelijk betontypen voor verbeterde prestaties Code maakt gebruik van interfacetypen of abstracte typen, wat leidt tot onnodige interfaceaanroepen of virtuele aanroepen.
CA1860: Vermijd het gebruik van de extensiemethode Enumerable.Any() Het is efficiënter en duidelijker om te gebruiken Length, Countof IsEmpty (indien mogelijk) om te Enumerable.Any bepalen of een verzamelingstype elementen bevat.
CA1861: Vermijd constante matrices als argumenten Constante matrices die worden doorgegeven als argumenten, worden niet opnieuw gebruikt, wat een prestatieoverhead impliceert. Overweeg ze te extraheren naar 'statische leesvelden' om de prestaties te verbeteren.
CA1862: Gebruik de methode 'StringComparison' overbelastingen om hoofdlettergevoelige tekenreeksvergelijkingen uit te voeren Wanneer code aanroept ToLower() of ToUpper() een niet-hoofdlettergevoelige tekenreeksvergelijking uitvoert, wordt een onnodige toewijzing uitgevoerd.
CA1863: 'CompositeFormat' gebruiken Als u de opmaakkosten wilt verminderen, slaat u een exemplaar op en gebruikt u een CompositeFormat exemplaar als argument voor String.Format of StringBuilder.AppendFormat.
CA1864: Geef de voorkeur aan de methode 'IDictionary.TryAdd(TKey, TValue)' Beide Dictionary<TKey,TValue>.ContainsKey(TKey) en Dictionary<TKey,TValue>.Add voeren een zoekactie uit, die overbodig is. Het is efficiënter om aan te roepen Dictionary<TKey,TValue>.TryAdd, wat een bool aangeeft of de waarde is toegevoegd of niet. TryAdd overschrijft de waarde van de sleutel niet als de sleutel al aanwezig is.
CA1865-CA1867: char overload gebruiken De overbelasting van tekens is een betere prestaties van een tekenreeks met één tekenreeks.
CA1868: Onnodige aanroep naar 'Contains' voor sets Zowel ISet<T>.Add(T) als ICollection<T>.Remove(T) het uitvoeren van een zoekactie, waardoor het vooraf overbodig is om vooraf aan te roepen ICollection<T>.Contains(T) . Het is efficiënter om aan te roepen Add(T) of Remove(T) rechtstreeks, die een Booleaanse waarde retourneert die aangeeft of het item is toegevoegd of verwijderd.
CA1869: JsonSerializerOptions-exemplaren cachen en hergebruiken Het gebruik van een lokaal exemplaar van JsonSerializerOptions serialisatie of deserialisatie kan de prestaties van uw toepassing aanzienlijk verminderen als uw code meerdere keren wordt uitgevoerd, omdat System.Text.Json intern serialisatiegerelateerde metagegevens in het opgegeven exemplaar in de cache opneemt.
CA1870: Een exemplaar van SearchValues in de cache gebruiken Het gebruik van een exemplaar in de cache SearchValues<T> is efficiënter dan het rechtstreeks doorgeven van waarden aan 'IndexOfAny' of 'ContainsAny'.
CA1871: Geef geen null-struct door aan 'ArgumentNullException.ThrowIfNull' 'ArgumentNullException.ThrowIfNull' accepteert een object, dus het doorgeven van een null-struct kan ertoe leiden dat de waarde in een vak wordt geplaatst.
CA1872: Prefer 'Convert.ToHexString' en 'Convert.ToHexStringLower' over oproepketens op basis van 'BitConverter.ToString' Gebruik Convert.ToHexString of Convert.ToHexStringLower bij het coderen van bytes aan een hexadecimale tekenreeksweergave. Deze methoden zijn efficiënter en toewijzingsvriendelijk dan het gebruik BitConverter.ToString in combinatie met String.Replace streepjes en String.ToLower.
CA2000: Objecten verwijderen voordat het bereik verloren gaat Omdat een uitzonderlijke gebeurtenis kan optreden die verhindert dat een object wordt uitgevoerd, moet het object expliciet worden verwijderd voordat alle verwijzingen naar het object buiten het bereik vallen.
CA2002: Objecten met zwakke identiteit niet vergrendelen Een object heeft een zwakke identiteit wanneer het rechtstreeks kan worden geopend binnen de grenzen van het toepassingsdomein. Een thread die probeert een vergrendeling te verkrijgen voor een object met een zwakke identiteit, kan worden geblokkeerd door een tweede thread in een ander toepassingsdomein dat een vergrendeling op hetzelfde object heeft.
CA2007: Wacht niet rechtstreeks op een taak Een asynchrone methode wacht op een Task rechtstreeks. Wanneer een asynchrone methode een Task rechtstreeks wacht, vindt vervolg plaats in dezelfde thread die de taak heeft gemaakt. Dit gedrag kan kostbaar zijn in termen van prestaties en kan leiden tot een impasse op de UI-thread. Overweeg het aanroepen Task.ConfigureAwait(Boolean) om uw intentie voor vervolg aan te geven.
CA2008: Geen taken maken zonder een TaskScheduler door te geven Een taak maken of vervolgbewerking maakt gebruik van een overbelasting van een methode die geen parameter opgeeft TaskScheduler .
CA2009: Roep ToImmutableCollection niet aan op een immutableCollection-waarde ToImmutable methode werd onnodig aangeroepen op een onveranderbare verzameling uit System.Collections.Immutable naamruimte.
CA2011: Wijs geen eigenschap toe binnen de setter Aan een eigenschap is per ongeluk een waarde toegewezen binnen een eigen set accessor.
CA2012: ValueTasks correct gebruiken ValueTasks die worden geretourneerd door aanroepen van leden, zijn bedoeld om direct te worden gewacht. Pogingen om een ValueTask meerdere keren te gebruiken of om rechtstreeks toegang te krijgen tot het resultaat van een waarde voordat het is voltooid, kan leiden tot een uitzondering of beschadiging. Het negeren van een dergelijke ValueTask is waarschijnlijk een indicatie van een functionele bug en kan de prestaties verminderen.
CA2013: ReferenceEquals niet gebruiken met waardetypen Wanneer u waarden vergelijkt met behulp van System.Object.ReferenceEquals, als objA en objB waardetypen zijn, worden ze in het vak geplaatst voordat ze worden doorgegeven aan de ReferenceEquals methode. Dit betekent dat zelfs als zowel objA als objB hetzelfde exemplaar van een waardetype vertegenwoordigen, de ReferenceEquals methode toch onwaar retourneert.
CA2014: Gebruik stackalloc niet in lussen. Stackruimte toegewezen door een stackalloc wordt alleen aan het einde van de aanroep van de huidige methode vrijgegeven. Het gebruik ervan in een lus kan leiden tot niet-gebonden stackgroei en uiteindelijke stackoverloopvoorwaarden.
CA2015: Definieer geen finalizers voor typen die zijn afgeleid van MemoryManager<T> Door een finalizer toe te voegen aan een type dat is afgeleid van MemoryManager<T> , kan geheugen worden vrijgemaakt terwijl het nog in gebruik is door een Span<T>.
CA2016: de parameter CancellationToken doorsturen naar methoden die één methode gebruiken Stuur de CancellationToken parameter door naar methoden die er één nodig hebben om ervoor te zorgen dat de annuleringsmeldingen van de bewerking correct worden doorgegeven of geef expliciet door CancellationToken.None om aan te geven dat het token opzettelijk niet wordt doorgegeven.
CA2017: Aantal parameters komt niet overeen Het aantal parameters dat is opgegeven in de sjabloon voor logboekregistratieberichten komt niet overeen met het aantal benoemde tijdelijke aanduidingen.
CA2018: Het count argument om Buffer.BlockCopy het aantal te kopiëren bytes op te geven Bij gebruik Buffer.BlockCopygeeft het count argument het aantal te kopiëren bytes op. U moet alleen Array.Length gebruiken voor het count argument voor matrices waarvan de elementen precies één byte groot zijn. byte, sbyteen bool matrices hebben elementen die één byte groot zijn.
CA2019: ThreadStatic velden mogen geen inline initialisatie gebruiken Een veld met ThreadStaticAttribute aantekeningen wordt geïnitialiseerd of expliciet in een static constructor (Shared in Visual Basic).
CA2020: Gedragswijziging voorkomen die wordt veroorzaakt door ingebouwde operators van IntPtr/UIntPtr Sommige ingebouwde operators die zijn toegevoegd in .NET 7 gedragen zich anders dan de door de gebruiker gedefinieerde operators in .NET 6 en eerdere versies. Sommige operators die voorheen in een niet-gecontroleerde context werpen terwijl overlopen, worden niet meer gegenereerd, tenzij ze zijn verpakt in de gecontroleerde context. Sommige operators die eerder niet in de gecontroleerde context waren gegooid, worden nu gegooid, tenzij ze zijn verpakt binnen een niet-gecontroleerde context.
CA2021: Roep Enumerable.Cast<T> of Enumerable.OfType<T> met niet-compatibele typen niet aan Een aanroep naar Enumerable.Cast<TResult>(IEnumerable) of Enumerable.OfType<TResult>(IEnumerable) geeft een typeparameter op die niet compatibel is met het type invoerverzameling.
CA2100: SQL-query's controleren op beveiligingsproblemen Met een methode wordt de eigenschap System.Data.IDbCommand.CommandText ingesteld met behulp van een tekenreeks die is gebouwd van een tekenreeksargument naar de methode. Bij deze regel wordt ervan uitgegaan dat het tekenreeksargument gebruikersinvoer bevat. Een SQL-opdrachtreeks die is gebouwd op basis van gebruikersinvoer, is kwetsbaar voor SQL-injectieaanvallen.
CA2101: Marshalling opgeven voor P/Invoke-tekenreeksargumenten Een lid van het aanroepen van het platform staat gedeeltelijk vertrouwde bellers toe, heeft een tekenreeksparameter en geeft niet expliciet een marshal van de tekenreeks. Dit kan een mogelijk beveiligingsprobleem veroorzaken.
CA2109: Zichtbare gebeurtenis-handlers controleren Er is een openbare of beveiligde methode voor gebeurtenisafhandeling gedetecteerd. Methoden voor gebeurtenisafhandeling mogen niet worden weergegeven, tenzij dit absoluut noodzakelijk is.
CA2119: Afdichtingsmethoden die voldoen aan privé-interfaces Een overgenomen openbaar type biedt een overschrijfbare methode-implementatie van een interne interface (Vriend in Visual Basic). Als u een schending van deze regel wilt oplossen, voorkomt u dat de methode buiten de assembly wordt overschreven.
CA2153: voorkomen dat beschadigde status-uitzonderingen worden verwerkt Beschadigde status-uitzonderingen (CSP's) geven aan dat er geheugenbeschadiging bestaat in uw proces. Als een aanvaller een aanval kan uitvoeren in de beschadigde geheugenregio, kan het niet mogelijk zijn om dit te ondervangen in plaats van het proces vast te laten lopen.
CA2200: Opnieuw verzamelen om stackdetails te behouden Er wordt een uitzondering opnieuw gestart en de uitzondering wordt expliciet opgegeven in de throw-instructie. Als een uitzondering opnieuw wordt uitgevoerd door de uitzondering in de throw-instructie op te geven, wordt de lijst met methodeaanroepen tussen de oorspronkelijke methode die de uitzondering heeft veroorzaakt en de huidige methode verloren gegaan.
CA2201: geen gereserveerde uitzonderingstypen genereren Hierdoor is de oorspronkelijke fout moeilijk te detecteren en fouten op te sporen.
CA2207: Waardetype statische velden inline initialiseren Een waardetype declareert een expliciete statische constructor. Als u een schending van deze regel wilt oplossen, initialiseert u alle statische gegevens wanneer deze wordt gedeclareerd en verwijdert u de statische constructor.
CA2208: Argument-uitzonderingen op de juiste manier instantiëren Er wordt een aanroep uitgevoerd naar de standaardconstructor (parameterloos) van een uitzonderingstype dat afkomstig is of is afgeleid van ArgumentException, of een onjuist tekenreeksargument wordt doorgegeven aan een geparameteriseerde constructor van een uitzonderingstype dat is of is afgeleid van ArgumentException.
CA2211: Niet-constante velden mogen niet zichtbaar zijn Statische velden die geen constanten of alleen-lezen zijn, zijn niet thread-veilig. Toegang tot een dergelijk veld moet zorgvuldig worden beheerd en vereist geavanceerde programmeertechnieken om de toegang tot het klasseobject te synchroniseren.
CA2213: Wegwerpvelden moeten worden verwijderd Een type dat System.IDisposable implementeert, declareert velden die van typen zijn die ook IDisposable implementeren. De verwijderingsmethode van het veld wordt niet aangeroepen door de methode Dispose van het declaratietype.
CA2214: Geen overschrijfbare methoden in constructors aanroepen Wanneer een constructor een virtuele methode aanroept, is de constructor voor het exemplaar dat de methode aanroept mogelijk niet uitgevoerd.
CA2215: Verwijderingsmethoden moeten de basisklasse verwijderen aanroepen Als een type wordt overgenomen van een wegwerptype, moet het de methode Dispose van het basistype aanroepen vanuit een eigen verwijderingsmethode.
CA2216: Wegwerptypen moeten finalizer declareren Een type dat System.IDisposable implementeert en velden bevat die het gebruik van niet-beheerde resources voorstellen, implementeert geen finalizer, zoals beschreven door Object.Finalize.
CA2217: Opsommingen niet markeren met FlagsAttribute Een extern zichtbare opsomming wordt gemarkeerd met flagsAttribute en heeft een of meer waarden die geen bevoegdheden hebben van twee of een combinatie van de andere gedefinieerde waarden op de opsomming.
CA2218: GetHashCode overschrijven bij het overschrijven van Equals Een openbaar type wordt overschreven System.Object.Equals , maar wordt niet overschreven System.Object.GetHashCode.
CA2219: Geen uitzonderingen genereren in uitzonderingsclausules Wanneer een uitzondering wordt gegenereerd in een laatste of foutcomponent, verbergt de nieuwe uitzondering de actieve uitzondering. Wanneer er een uitzondering wordt gegenereerd in een filtercomponent, wordt de uitzondering op de achtergrond door de runtime onderschept. Hierdoor is de oorspronkelijke fout moeilijk te detecteren en fouten op te sporen.
CA2224: Onderdrukking is gelijk aan overbelastingsoperator is gelijk aan Een openbaar type implementeert de gelijkheidsoperator, maar overschrijft System.Object.Equalsdeze niet.
CA2225: Overbelastingen van operatoren hebben alternatieve namen Er is een overbelasting van de operator gedetecteerd en de verwachte alternatieve methode is niet gevonden. Het benoemde alternatieve lid biedt toegang tot dezelfde functionaliteit als de operator en is beschikbaar voor ontwikkelaars die programma's uitvoeren in talen die overbelaste operators niet ondersteunen.
CA2226: Operators moeten symmetrische overbelastingen hebben Een type implementeert de gelijkheids- of ongelijkheidsoperator en implementeert niet de tegenovergestelde operator.
CA2227: Verzamelingseigenschappen mogen alleen-lezen zijn Met een beschrijfbare verzamelingseigenschap kan een gebruiker de verzameling vervangen door een andere verzameling. Met een alleen-lezen eigenschap wordt de verzameling niet meer vervangen, maar kan de afzonderlijke leden nog steeds worden ingesteld.
CA2229: Serialisatieconstructors implementeren Als u een schending van deze regel wilt oplossen, implementeert u de serialisatieconstructor. Voor een verzegelde klasse maakt u de constructor privé; anders moet u deze beveiligen.
CA2231: De operator Overbelasting is gelijk aan het overschrijven van ValueType.Equals Een waardetype overschrijft Object.Equals, maar implementeert de gelijkheidsoperator niet.
CA2234: System.Uri-objecten doorgeven in plaats van tekenreeksen Er wordt een aanroep uitgevoerd naar een methode met een tekenreeksparameter waarvan de naam 'uri', 'URI', 'urn', 'URN', 'URL' of 'URL' bevat. Het declareren van het type van de methode bevat een bijbehorende overbelasting van de methode die een system.URI-parameter heeft.
CA2235: alle niet-serialiseerbare velden markeren Een exemplaarveld van een type dat niet serialiseerbare is, wordt gedeclareerd in een type dat serialiseerbaar is.
CA2237: Mark ISerializable types with SerializableAttribute Om te worden herkend door de common language runtime als serializeerbaar, moeten typen worden gemarkeerd met behulp van het kenmerk SerializableAttribute, zelfs wanneer het type een aangepaste serialisatieroutine gebruikt via de implementatie van de ISerializable interface.
CA2241: Geef de juiste argumenten op voor het opmaken van methoden Het notatieargument dat wordt doorgegeven aan System.String.Format bevat geen opmaakitem dat overeenkomt met elk objectargument of omgekeerd.
CA2242: Testen op NaN correct Met deze expressie wordt een waarde getest op Single.Nan of Double.Nan. Gebruik Single.IsNan(Single) of Double.IsNan(Double) om de waarde te testen.
CA2243: Letterlijke kenmerktekenreeksen moeten correct worden geparseerd De letterlijke parameter tekenreeks van een kenmerk parseert niet correct voor een URL, een GUID of een versie.
CA2244: Initialisaties van geïndexeerde elementen niet dupliceren Een object-initialisatiefunctie heeft meer dan één geïndexeerde element-initialisatiefunctie met dezelfde constante index. De laatste initialisatiefunctie is echter overbodig.
CA2245: Wijs geen eigenschap toe aan zichzelf Er is per ongeluk een eigenschap aan zichzelf toegewezen.
CA2246: Wijs geen symbool en het bijbehorende lid toe aan dezelfde instructie Het toewijzen van een symbool en het bijbehorende lid, dat wil zeggen, een veld of eigenschap, in dezelfde instructie wordt niet aanbevolen. Het is niet duidelijk of de toegang tot het lid bedoeld is om de oude waarde van het symbool vóór de toewijzing of de nieuwe waarde van de toewijzing in deze instructie te gebruiken.
CA2247: het argument dat wordt doorgegeven aan de constructor TaskCompletionSource, moet de enum TaskCreationOptions zijn in plaats van de enum TaskContinuationOptions. TaskCompletionSource heeft constructors die TaskCreationOptions gebruiken die de onderliggende taak beheren en constructors die de objectstatus overnemen die zijn opgeslagen in de taak. Als u per ongeluk een TaskContinuationOptions doorgeeft in plaats van een TaskCreationOptions, wordt de aanroep als status behandeld.
CA2248: Geef het juiste enum-argument op voor Enum.HasFlag Het enum-type dat als argument aan de HasFlag methodeaanroep wordt doorgegeven, verschilt van het aanroepende enum-type.
CA2249: Overweeg het gebruik van String.Contains in plaats van String.IndexOf Aanroepen naar string.IndexOf waar het resultaat wordt gebruikt om te controleren op de aanwezigheid/afwezigheid van een subtekenreeks kan worden vervangen door string.Contains.
CA2250: Gebruik ThrowIfCancellationRequested ThrowIfCancellationRequested controleert automatisch of het token is geannuleerd en genereert een OperationCanceledException als het is.
CA2251: Gebruiken String.Equals via String.Compare Het is zowel duidelijker als sneller te gebruiken String.Equals in plaats van het resultaat van String.Compare nul te vergelijken.
CA2252: Aanmelden voor preview-functies Meld u aan voor preview-functies voordat u preview-API's gebruikt.
CA2253: Benoemde tijdelijke aanduidingen mogen geen numerieke waarden zijn Benoemde tijdelijke aanduidingen in de sjabloon voor logboekregistratieberichten mogen niet bestaan uit alleen numerieke tekens.
CA2254: Sjabloon moet een statische expressie zijn De sjabloon voor logboekregistratieberichten mag niet per aanroep verschillen.
CA2255: Het ModuleInitializer kenmerk mag niet worden gebruikt in bibliotheken Module-initializers zijn bedoeld om te worden gebruikt door toepassingscode om ervoor te zorgen dat de onderdelen van een toepassing worden geïnitialiseerd voordat de toepassingscode wordt uitgevoerd.
CA2256: Alle leden die in bovenliggende interfaces zijn gedeclareerd, moeten een implementatie hebben in een DynamicInterfaceCastableImplementation-toegeschreven interface Typen die worden toegeschreven aan DynamicInterfaceCastableImplementationAttribute fungeren als een interface-implementatie voor een type dat het IDynamicInterfaceCastable type implementeert. Als gevolg hiervan moet het een implementatie bieden van alle leden die zijn gedefinieerd in de overgenomen interfaces, omdat het type dat wordt geïmplementeerd IDynamicInterfaceCastable , ze anders niet levert.
CA2257: Leden die zijn gedefinieerd op een interface met DynamicInterfaceCastableImplementationAttribute, moeten statisch zijn Omdat een type dat wordt geïmplementeerd mogelijk geen dynamische interface in metagegevens implementeert IDynamicInterfaceCastable , zullen aanroepen naar een exemplaarinterfacelid dat geen expliciete implementatie is die voor dit type is gedefinieerd, waarschijnlijk mislukken tijdens de runtime. Markeer nieuwe interfaceleden static om runtimefouten te voorkomen.
CA2258: Het leveren van een Interface DynamicInterfaceCastableImplementation in Visual Basic wordt niet ondersteund Voor het bieden van een functionele DynamicInterfaceCastableImplementationAttributeinterface is de functie Standaardinterfaceleden vereist. Deze functie wordt niet ondersteund in Visual Basic.
CA2259: Zorg ervoor dat ThreadStatic deze alleen wordt gebruikt met statische velden ThreadStaticAttribute is alleen van invloed op static (Shared in Visual Basic)-velden. Wanneer het kenmerk wordt toegepast op exemplaarvelden, heeft het kenmerk geen invloed op het gedrag.
CA2260: algemene wiskundige interfaces correct implementeren Voor algemene wiskundige interfaces moet het afgeleide type zelf worden gebruikt voor de zelf-terugkerende typeparameter.
CA2261: Niet gebruiken ConfigureAwaitOptions.SuppressThrowing met Task<TResult> De ConfigureAwaitOptions.SuppressThrowing optie wordt niet ondersteund door de algemene Task<TResult>, omdat dit kan leiden tot het retourneren van een ongeldige TResult.
CA2262: Juist instellen MaxResponseHeadersLength Zorg ervoor dat de MaxResponseHeadersLength waarde juist is opgegeven. Deze waarde wordt gemeten in kilobytes.
CA2263: Voorkeur geven aan algemene overbelasting wanneer type bekend is Het gebruik van een algemene overbelasting verdient de voorkeur om een System.Type argument door te geven wanneer het type bekend is, omdat ze schonere en meer typeveilige code bevorderen met verbeterde compileertijdcontroles.
CA2264: Geef geen niet-null-waarde door aan 'ArgumentNullException.ThrowIfNull' 'ArgumentNullException.ThrowIfNull' genereert wanneer het doorgegeven argument null is. Bepaalde constructies zoals niet-null-structs en 'nameof()' en 'nieuwe' expressies zijn nooit null, dus 'ArgumentNullException.ThrowIfNull' wordt nooit gegooid.
CA2300: Gebruik geen onveilige deserializer BinaryFormatter Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2301: Roep BinaryFormatter.Deserialize niet aan zonder eerst BinaryFormatter.Binder in te stellen Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2302: Controleren of BinaryFormatter.Binder is ingesteld voordat binaryFormatter.Deserialize wordt aangeroepen Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2305: Gebruik geen onveilige deserializer LosFormatter Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2310: Gebruik geen onveilige deserializer NetDataContractSerializer Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2311: Niet deserialiseren zonder eerst NetDataContractSerializer.Binder in te stellen Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2312: Controleren of NetDataContractSerializer.Binder is ingesteld voordat deserialiseren Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2315: Gebruik geen onveilige deserializer ObjectStateFormatter Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2321: Niet deserialiseren met JavaScriptSerializer met behulp van een SimpleTypeResolver Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2322: Controleren of JavaScriptSerializer niet is geïnitialiseerd met SimpleTypeResolver voordat deserialiseren Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2326: Gebruik geen TypeNameHandling-waarden dan Geen Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2327: Gebruik geen onveilige JsonSerializerSettings Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2328: Zorg ervoor dat JsonSerializerSettings veilig is Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2329: Niet deserialiseren met JsonSerializer met behulp van een onveilige configuratie Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2330: Zorg ervoor dat JsonSerializer een beveiligde configuratie heeft bij het deserialiseren Onveilige deserializers zijn kwetsbaar wanneer niet-vertrouwde gegevens worden gedeserialiseerd. Een aanvaller kan de geserialiseerde gegevens wijzigen zodat onverwachte typen worden opgenomen om objecten met schadelijke bijwerkingen te injecteren.
CA2350: Zorg ervoor dat de invoer van DataTable.ReadXml() wordt vertrouwd Bij het deserialiseren van een DataTable met niet-vertrouwde invoer kan een aanvaller schadelijke invoer maken om een Denial of Service-aanval uit te voeren. Er zijn mogelijk onbekende beveiligingsproblemen met het uitvoeren van externe code.
CA2351: Zorg ervoor dat de invoer van DataSet.ReadXml() wordt vertrouwd Bij het deserialiseren van een DataSet met niet-vertrouwde invoer kan een aanvaller schadelijke invoer maken om een Denial of Service-aanval uit te voeren. Er zijn mogelijk onbekende beveiligingsproblemen met het uitvoeren van externe code.
CA2352: Onveilige gegevensset of gegevenstabel in serializeerbaar type kan kwetsbaar zijn voor aanvallen op uitvoering van externe code Een klasse of struct die is gemarkeerd met SerializableAttribute een DataSet of DataTable veld of eigenschap en heeft geen GeneratedCodeAttribute.
CA2353: Onveilige gegevensset of gegevenstabel in serialiseerbare type Een klasse of struct die is gemarkeerd met een XML-serialisatiekenmerk of een gegevenscontractkenmerk bevat een DataSet of DataTable veld of eigenschap.
CA2354: Onveilige gegevensset of gegevenstabel in de deserialized objectgrafiek kan kwetsbaar zijn voor aanvallen op het uitvoeren van externe code Deserialiseren met een System.Runtime.Serialization.IFormatter geserialiseerd objectdiagram en de objectgrafiek van het gecaste type kan een DataSet of DataTable.
CA2355: Onveilige gegevensset of gegevenstabel in de grafiek met gedeserialiseerde objecten Deserialiseren wanneer de objectgrafiek van het gecastde of opgegeven type een DataSet of DataTablekan bevatten.
CA2356: Onveilige gegevensset of gegevenstabel in grafiek met webdeserialized objecten Een methode met een System.Web.Services.WebMethodAttribute of System.ServiceModel.OperationContractAttribute een parameter die naar een DataSet of DataTable.
CA2361: Ervoor zorgen dat automatisch gegenereerde klasse met DataSet.ReadXml() niet wordt gebruikt met niet-vertrouwde gegevens Bij het deserialiseren van een DataSet met niet-vertrouwde invoer kan een aanvaller schadelijke invoer maken om een Denial of Service-aanval uit te voeren. Er zijn mogelijk onbekende beveiligingsproblemen met het uitvoeren van externe code.
CA2362: Onveilige gegevensset of gegevenstabel in automatisch gegenereerd serializeerbaar type kan kwetsbaar zijn voor aanvallen op uitvoering van externe code Bij het deserialiseren van niet-vertrouwde invoer met BinaryFormatter en de deserialized objectgrafiek een DataSet of DataTablebevat, kan een aanvaller een schadelijke nettolading maken om een aanval op de uitvoering van externe code uit te voeren.
CA3001: Code controleren op beveiligingsproblemen met SQL-injectie Wanneer u werkt met niet-vertrouwde invoer- en SQL-opdrachten, moet u rekening houden met SQL-injectieaanvallen. Een SQL-injectieaanval kan schadelijke SQL-opdrachten uitvoeren, die de beveiliging en integriteit van uw toepassing in gevaar brengen.
CA3002: Code controleren op XSS-beveiligingsproblemen Wanneer u werkt met niet-vertrouwde invoer van webaanvragen, moet u rekening houden met XSS-aanvallen (cross-site scripting). Een XSS-aanval injecteert niet-vertrouwde invoer in onbewerkte HTML-uitvoer, zodat de aanvaller schadelijke scripts kan uitvoeren of inhoud op uw webpagina kan wijzigen.
CA3003: Code controleren op beveiligingsproblemen met bestandspadinjecties Wanneer u werkt met niet-vertrouwde invoer van webaanvragen, moet u rekening houden met het gebruik van door de gebruiker beheerde invoer bij het opgeven van paden naar bestanden.
CA3004: Code controleren op beveiligingsproblemen met openbaarmaking van informatie Het vrijgeven van uitzonderingsinformatie geeft aanvallers inzicht in de interne werking van uw toepassing, waardoor aanvallers andere beveiligingsproblemen kunnen vinden om misbruik te maken.
CA3005: Code controleren op beveiligingsproblemen met LDAP-injectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met LDAP-injectieaanvallen (Lightweight Directory Access Protocol). Een aanvaller kan mogelijk schadelijke LDAP-instructies uitvoeren op informatiemappen. Toepassingen die gebruikmaken van gebruikersinvoer om dynamische LDAP-instructies te maken voor toegang tot adreslijstservices, zijn bijzonder kwetsbaar.
CA3006: Code controleren op beveiligingsproblemen met procesopdrachtinjectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met aanvallen met opdrachtinjectie. Een aanval op een opdrachtinjectie kan schadelijke opdrachten uitvoeren op het onderliggende besturingssysteem, wat de beveiliging en integriteit van uw server in gevaar kan brengen.
CA3007: Code controleren op open omleidingsproblemen Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met open omleidingsproblemen. Een aanvaller kan misbruik maken van een open omleidingsprobleem om uw website te gebruiken om het uiterlijk van een legitieme URL te geven, maar een ongemoede bezoeker omleiden naar een phishing- of andere schadelijke webpagina.
CA3008: Code controleren op beveiligingsproblemen met XPath-injectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met XPath-injectieaanvallen. Door XPath-query's te maken met behulp van niet-vertrouwde invoer, kan een aanvaller de query kwaadwillend manipuleren om een onbedoeld resultaat te retourneren en mogelijk de inhoud van de opgevraagde XML openbaar maken.
CA3009: Code controleren op beveiligingsproblemen met XML-injectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met XML-injectieaanvallen.
CA3010: Code controleren op beveiligingsproblemen met XAML-injectie Wanneer u met niet-vertrouwde invoer werkt, moet u rekening houden met XAML-injectieaanvallen. XAML is een opmaaktaal die rechtstreeks staat voor object instantiëring en uitvoering. Dit betekent dat elementen die in XAML zijn gemaakt, kunnen communiceren met systeembronnen (bijvoorbeeld netwerktoegang en IO van het bestandssysteem).
CA3011: Code controleren op beveiligingsproblemen met DLL-injectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met het laden van niet-vertrouwde code. Als uw webtoepassing niet-vertrouwde code laadt, kan een aanvaller mogelijk schadelijke DLL's in uw proces injecteren en schadelijke code uitvoeren.
CA3012: Code controleren op beveiligingsproblemen met regex-injectie Wanneer u werkt met niet-vertrouwde invoer, moet u rekening houden met regex-injectieaanvallen. Een aanvaller kan regex-injectie gebruiken om een reguliere expressie kwaadwillend te wijzigen, om de regex te laten overeenkomen met onbedoelde resultaten of om ervoor te zorgen dat de regex overmatige CPU verbruikt, wat resulteert in een Denial of Service-aanval.
CA3061: Schema niet toevoegen op URL Gebruik de onveilige overbelasting van de methode Toevoegen niet omdat dit gevaarlijke externe verwijzingen kan veroorzaken.
CA3075: Onveilige DTD-verwerking Als u onveilige DTDProcessing-exemplaren gebruikt of naar externe entiteitsbronnen verwijst, kan de parser niet-vertrouwde invoer accepteren en gevoelige informatie vrijgeven aan aanvallers.
CA3076: Onveilige XSLT-scriptuitvoering Als u Extensible Stylesheet Language Transformations (XSLT) in .NET-toepassingen onveilig uitvoert, kan de processor niet-vertrouwde URI-verwijzingen oplossen die gevoelige informatie kunnen vrijgeven aan aanvallers, wat leidt tot Denial of Service- en Cross-Site-aanvallen.
CA3077: Onveilige verwerking in API-ontwerp, XML-document en XML-tekstlezer Wanneer u een API ontwerpt die is afgeleid van XMLDocument en XMLTextReader, moet u rekening houden met DtdProcessing. Het gebruik van onveilige DTDProcessing-exemplaren bij het verwijzen of omzetten van externe entiteitsbronnen of het instellen van onveilige waarden in de XML kan leiden tot openbaarmaking van informatie.
CA3147: Werkwoordhandlers markeren met ValidateAntiForgeryToken Wanneer u een ASP.NET MVC-controller ontwerpt, moet u rekening houden met vervalsingsaanvallen op meerdere sites. Een aanval op aanvraagvervalsing op meerdere sites kan schadelijke aanvragen verzenden van een geverifieerde gebruiker naar uw ASP.NET MVC-controller.
CA5350: Gebruik geen zwakke cryptografische algoritmen Zwakke versleutelingsalgoritmen en hashfuncties worden tegenwoordig gebruikt om een aantal redenen, maar ze mogen niet worden gebruikt om de vertrouwelijkheid of integriteit van de gegevens die ze beschermen te garanderen. Deze regel wordt geactiveerd wanneer er TripleDES-, SHA1- of RIPEMD160-algoritmen in de code worden gevonden.
CA5351: Gebruik geen gebroken cryptografische algoritmen Gebroken cryptografische algoritmen worden niet beschouwd als veilig en het gebruik ervan moet sterk worden afgeraden. Deze regel wordt geactiveerd wanneer het MD5-hash-algoritme of de DES- of RC2-versleutelingsalgoritmen in code worden gevonden.
CA5358: Geen onveilige coderingsmodi gebruiken Onveilige coderingsmodi niet gebruiken
CA5359: Certificaatvalidatie niet uitschakelen Een certificaat kan helpen bij het verifiëren van de identiteit van de server. Clients moeten het servercertificaat valideren om ervoor te zorgen dat aanvragen naar de beoogde server worden verzonden. Als serverCertificateValidationCallback altijd retourneert true, wordt validatie door een certificaat doorgegeven.
CA5360: Geen gevaarlijke methoden aanroepen in deserialisatie Onveilig deserialisatie is een beveiligingsprobleem dat optreedt wanneer niet-vertrouwde gegevens worden gebruikt om de logica van een toepassing te misbruiken, een DoS-aanval (Denial-of-Service) toe te brengen of zelfs willekeurige code uit te voeren wanneer deze wordt gedeserialiseerd. Het is vaak mogelijk dat kwaadwillende gebruikers deze deserialisatiefuncties misbruiken wanneer de toepassing niet-vertrouwde gegevens deserialiseert die onder hun beheer valt. Roep met name gevaarlijke methoden aan bij het deserialisatieproces. Met geslaagde onveilige deserialisatieaanvallen kan een aanvaller aanvallen uitvoeren, zoals DoS-aanvallen, verificatie-bypasss en uitvoering van externe code.
CA5361: Schannel gebruik van sterke crypto niet uitschakelen Instelling Switch.System.Net.DontEnableSchUseStrongCrypto om true de cryptografie te verzwakken die wordt gebruikt in uitgaande TLS-verbindingen (Transport Layer Security). Zwakkere cryptografie kan de vertrouwelijkheid van de communicatie tussen uw toepassing en de server in gevaar komen, waardoor aanvallers gevoelige gegevens gemakkelijker kunnen afluisteren.
CA5362: Potentiële referentiecyclus in deserialized objectgrafiek Als deserialiseren van niet-vertrouwde gegevens, moet elke code die de ontserialiseerde objectgrafiek verwerkt referentiecycli verwerken zonder oneindige lussen te doorlopen. Dit omvat zowel code die deel uitmaakt van een callback voor deserialisatie als code die de objectgrafiek verwerkt nadat deserialisatie is voltooid. Anders kan een aanvaller een Denial-of-Service-aanval uitvoeren met schadelijke gegevens die een referentiecyclus bevatten.
CA5363: Aanvraagvalidatie niet uitschakelen Aanvraagvalidatie is een functie in ASP.NET die HTTP-aanvragen onderzoekt en bepaalt of deze mogelijk gevaarlijke inhoud bevatten die kan leiden tot injectieaanvallen, waaronder scripts op meerdere sites.
CA5364: gebruik geen afgeschafte beveiligingsprotocollen Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Oudere protocolversies van TLS zijn minder veilig dan TLS 1.2 en TLS 1.3 en hebben waarschijnlijk nieuwe beveiligingsproblemen. Vermijd oudere protocolversies om het risico te minimaliseren.
CA5365: HTTP-headercontrole niet uitschakelen Met HTTP-headercontrole kunnen de regelteruglooptekens en nieuweregeltekens, \r en \n, die worden gevonden in antwoordheaders, worden gecodeerd. Deze codering kan helpen bij het voorkomen van injectieaanvallen die gebruikmaken van een toepassing die gebruikmaakt van niet-vertrouwde gegevens die zijn opgenomen in de header.
CA5366: XmlReader gebruiken voor het lezen van XML-gegevensset Het gebruik van een DataSet xml-bestand met niet-vertrouwde gegevens kan gevaarlijke externe verwijzingen laden. Dit moet worden beperkt door een XmlReader beveiligde resolver te gebruiken of met DTD-verwerking uitgeschakeld.
CA5367: Typen niet serialiseren met aanwijzervelden Met deze regel wordt gecontroleerd of er een serialiseerbare klasse is met een aanwijzerveld of eigenschap. Leden die niet kunnen worden geserialiseerd, kunnen een aanwijzer zijn, zoals statische leden of velden die zijn gemarkeerd met NonSerializedAttribute.
CA5368: ViewStateUserKey instellen voor klassen die zijn afgeleid van pagina Als u de ViewStateUserKey eigenschap instelt, kunt u aanvallen op uw toepassing voorkomen door u toe te staan een id toe te wijzen aan de variabele view-state voor afzonderlijke gebruikers, zodat aanvallers de variabele niet kunnen gebruiken om een aanval te genereren. Anders zijn er beveiligingsproblemen voor aanvraagvervalsing op meerdere sites.
CA5369: XmlReader gebruiken voor Deserialize Het verwerken van niet-vertrouwde DTD- en XML-schema's kan het laden van gevaarlijke externe verwijzingen mogelijk maken. Dit moet worden beperkt door een XmlReader te gebruiken met een beveiligde resolver of met DTD en XML inline schemaverwerking uitgeschakeld.
CA5370: XmlReader gebruiken voor het valideren van de lezer Het verwerken van niet-vertrouwde DTD- en XML-schema's kan het laden van gevaarlijke externe verwijzingen mogelijk maken. Deze gevaarlijke belasting kan worden beperkt door een XmlReader te gebruiken met een beveiligde resolver of met DTD en XML inline schemaverwerking uitgeschakeld.
CA5371: XmlReader gebruiken voor schema-lezen Het verwerken van niet-vertrouwde DTD- en XML-schema's kan het laden van gevaarlijke externe verwijzingen mogelijk maken. Als u een XmlReader gebruikt met een beveiligde resolver of met DTD en XML inline schemaverwerking uitgeschakeld, wordt dit beperkt.
CA5372: XmlReader gebruiken voor XPathDocument Het verwerken van XML van niet-vertrouwde gegevens kan gevaarlijke externe verwijzingen laden. Dit kan worden beperkt door een XmlReader te gebruiken met een beveiligde resolver of met DTD-verwerking uitgeschakeld.
CA5373: Gebruik geen verouderde functie voor sleutel-afleiding Deze regel detecteert de aanroep van zwakke methoden voor de afleiding System.Security.Cryptography.PasswordDeriveBytes van sleutels en Rfc2898DeriveBytes.CryptDeriveKey. System.Security.Cryptography.PasswordDeriveBytes gebruikt een zwak algoritme PBKDF1.
CA5374: XslTransform niet gebruiken Met deze regel wordt gecontroleerd of System.Xml.Xsl.XslTransform deze wordt geïnstantieerd in de code. System.Xml.Xsl.XslTransform is nu verouderd en mag niet worden gebruikt.
CA5375: Gedeelde toegangshandtekening voor accounts niet gebruiken Een account-SAS kan de toegang tot lees-, schrijf- en verwijderbewerkingen delegeren voor blobcontainers, tabellen, wachtrijen en bestandsshares die niet zijn toegestaan met een service-SAS. Het biedt echter geen ondersteuning voor beleid op containerniveau en heeft minder flexibiliteit en controle over de machtigingen die worden verleend. Zodra kwaadwillende gebruikers het krijgen, wordt uw opslagaccount eenvoudig gecompromitteerd.
CA5376: SharedAccessProtocol httpsonly gebruiken SAS is gevoelige gegevens die niet kunnen worden vervoerd in tekst zonder opmaak op HTTP.
CA5377: Toegangsbeleid op containerniveau gebruiken Een toegangsbeleid op containerniveau kan op elk gewenst moment worden gewijzigd of ingetrokken. Het biedt meer flexibiliteit en controle over de machtigingen die worden verleend.
CA5378: ServicePointManagerSecurityProtocols niet uitschakelen Instelling Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols om de true TRANSPORT Layer Security-verbindingen (TLS) van Windows Communication Framework (WCF) te beperken tot het gebruik van TLS 1.0. Deze versie van TLS wordt afgeschaft.
CA5379: Gebruik geen zwak algoritme voor de functie van de sleutel De Rfc2898DeriveBytes klasse maakt standaard gebruik van het SHA1 algoritme. U moet het hash-algoritme opgeven dat moet worden gebruikt bij een aantal overbelastingen van de constructor met SHA256 of hoger. Opmerking: HashAlgorithm de eigenschap heeft alleen een get toegangsfunctie en heeft geen overridden wijzigingsfunctie.
CA5380: Voeg geen certificaten toe aan het basisarchief Met deze regel wordt code gedetecteerd waarmee een certificaat wordt toegevoegd aan het certificaatarchief van vertrouwde basiscertificeringsinstanties. Het certificaatarchief vertrouwde basiscertificeringsinstanties is standaard geconfigureerd met een set openbare CA's die aan de vereisten van het Microsoft Root Certificate Program voldoen.
CA5381: Controleren of certificaten niet worden toegevoegd aan het basisarchief Met deze regel wordt code gedetecteerd die mogelijk een certificaat toevoegt aan het certificaatarchief van vertrouwde basiscertificeringsinstanties. Het certificaatarchief van vertrouwde basiscertificeringsinstanties is standaard geconfigureerd met een set openbare certificeringsinstanties (CA's) die voldoet aan de vereisten van het Microsoft Root Certificate Program.
CA5382: Veilige cookies gebruiken in ASP.NET Core Toepassingen die beschikbaar zijn via HTTPS, moeten beveiligde cookies gebruiken, wat aangeeft in de browser dat de cookie alleen mag worden verzonden met behulp van Secure Sockets Layer (SSL).
CA5383: Zorg ervoor dat veilige cookies worden gebruikt in ASP.NET Core Toepassingen die beschikbaar zijn via HTTPS, moeten beveiligde cookies gebruiken, wat aangeeft in de browser dat de cookie alleen mag worden verzonden met behulp van Secure Sockets Layer (SSL).
CA5384: Gebruik geen DSA (Digital Signature Algorithm) DSA is een zwak asymmetrisch versleutelingsalgoritmen.
CA5385: Gebruik het algoritme Van Rivest-Shamir–Adleman (RSA) met voldoende sleutelgrootte Een RSA-sleutel kleiner dan 2048 bits is kwetsbaarder voor beveiligingsaanvallen.
CA5386: Hardcoding SecurityProtocolType-waarde voorkomen Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Protocolversies TLS 1.0 en TLS 1.1 zijn afgeschaft, terwijl TLS 1.2 en TLS 1.3 actueel zijn. In de toekomst zijn TLS 1.2 en TLS 1.3 mogelijk afgeschaft. Om ervoor te zorgen dat uw toepassing veilig blijft, vermijdt u het coderen van een protocolversie en het doel ten minste .NET Framework v4.7.1.
CA5387: Gebruik geen zwakke functie voor sleutelverdering met onvoldoende iteratieaantal Met deze regel wordt gecontroleerd of een cryptografische sleutel is gegenereerd met Rfc2898DeriveBytes een herhalingsaantal van minder dan 100.000. Een hoger iteratieaantal kan helpen bij het beperken van woordenlijstaanvallen die proberen de gegenereerde cryptografische sleutel te raden.
CA5388: Zorg ervoor dat er voldoende iteratieaantal is bij het gebruik van een zwakke functie voor de afleiding van sleutels Met deze regel wordt gecontroleerd of een cryptografische sleutel is gegenereerd met Rfc2898DeriveBytes een herhalingsaantal dat minder dan 100.000 kan zijn. Een hoger iteratieaantal kan helpen bij het beperken van woordenlijstaanvallen die proberen de gegenereerde cryptografische sleutel te raden.
CA5389: Voeg het pad van het archiefitem niet toe aan het pad van het doelbestandssysteem Bestandspad kan relatief zijn en kan leiden tot toegang tot het bestandssysteem buiten het verwachte doelpad van het bestandssysteem, wat leidt tot schadelijke configuratiewijzigingen en uitvoering van externe code via lay-and-wait-techniek.
CA5390: Versleutelingssleutel niet in code Om een symmetrisch algoritme te laten slagen, moet de geheime sleutel alleen bekend zijn bij de afzender en de ontvanger. Wanneer een sleutel in code is vastgelegd, wordt deze eenvoudig gedetecteerd. Zelfs met gecompileerde binaire bestanden is het eenvoudig voor kwaadwillende gebruikers om deze te extraheren. Zodra de persoonlijke sleutel is aangetast, kan de coderingstekst rechtstreeks worden ontsleuteld en wordt deze niet meer beveiligd.
CA5391: Antiforgery-tokens gebruiken in ASP.NET Core MVC-controllers Het verwerken van een POST, PUTof PATCHaanvraag DELETE zonder een antivervalsingstoken te valideren, kan kwetsbaar zijn voor aanvallen op aanvraagvervalsing op meerdere sites. Een aanval op aanvraagvervalsing op meerdere sites kan schadelijke aanvragen van een geverifieerde gebruiker verzenden naar uw ASP.NET Core MVC-controller.
CA5392: Het kenmerk DefaultDllImportSearchPaths gebruiken voor P/Invokes P/Invoke-functies gebruiken standaard DllImportAttribute een aantal mappen, inclusief de huidige werkmap voor de bibliotheek die moet worden geladen. Dit kan een beveiligingsprobleem zijn voor bepaalde toepassingen, wat leidt tot DLL-kaping.
CA5393: Gebruik geen onveilige DllImportSearchPath-waarde Er kan een schadelijk DLL-bestand zijn in de standaard-DLL-zoekmappen en assemblymappen. Of, afhankelijk van waar uw toepassing vandaan wordt uitgevoerd, kan er een schadelijke DLL in de map van de toepassing voorkomen.
CA5394: Gebruik geen onveilige willekeurigheid Door een cryptografisch zwakke pseudo-willekeurige getalgenerator te gebruiken, kan een aanvaller voorspellen welke beveiligingsgevoelige waarde wordt gegenereerd.
CA5395: Kenmerk Miss HttpVerb voor actiemethoden Alle actiemethoden waarmee gegevens worden gemaakt, bewerkt, verwijderd of anderszins worden gewijzigd, moeten worden beveiligd met het antivervalsingskenmerk van vervalsingsaanvallen op meerdere sites. Het uitvoeren van een GET-bewerking moet een veilige bewerking zijn die geen bijwerkingen heeft en uw persistente gegevens niet wijzigt.
CA5396: HttpOnly instellen op waar voor HttpCookie Als diepgaande verdedigingsmaatregel zorgt u ervoor dat beveiligingsgevoelige HTTP-cookies worden gemarkeerd als HttpOnly. Dit geeft aan dat webbrowsers scripts niet mogen toestaan om toegang te krijgen tot de cookies. Geïnjecteerde schadelijke scripts zijn een veelgebruikte manier om cookies te stelen.
CA5397: gebruik geen afgeschafte SslProtocols-waarden Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Oudere protocolversies van TLS zijn minder veilig dan TLS 1.2 en TLS 1.3 en hebben waarschijnlijk nieuwe beveiligingsproblemen. Vermijd oudere protocolversies om het risico te minimaliseren.
CA5398: Hardcoded SslProtocols-waarden vermijden Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Protocolversies TLS 1.0 en TLS 1.1 zijn afgeschaft, terwijl TLS 1.2 en TLS 1.3 actueel zijn. In de toekomst zijn TLS 1.2 en TLS 1.3 mogelijk afgeschaft. Om ervoor te zorgen dat uw toepassing veilig blijft, vermijdt u het coderen van een protocolversie.
CA5399: De controle van de intrekkingslijst van httpClient-certificaten zeker uitschakelen Een ingetrokken certificaat wordt niet meer vertrouwd. Het kan worden gebruikt door aanvallers die schadelijke gegevens doorgeven of gevoelige gegevens stelen in HTTPS-communicatie.
CA5400: Controleren of de controle van de httpClient-certificaatintrekkingslijst niet is uitgeschakeld Een ingetrokken certificaat wordt niet meer vertrouwd. Het kan worden gebruikt door aanvallers die schadelijke gegevens doorgeven of gevoelige gegevens stelen in HTTPS-communicatie.
CA5401: Gebruik CreateEncryptor niet met niet-standaard IV Symmetrische versleuteling moet altijd een niet-herhaalbare initialisatievector gebruiken om woordenlijstaanvallen te voorkomen.
CA5402: CreateEncryptor gebruiken met de standaard IV Symmetrische versleuteling moet altijd een niet-herhaalbare initialisatievector gebruiken om woordenlijstaanvallen te voorkomen.
CA5403: Geen hardcodecertificaat De data of rawData parameter van een X509Certificate of X509Certificate2 constructor is vastgelegd in code.
CA5404: Tokenvalidatiecontroles niet uitschakelen TokenValidationParameters eigenschappen die tokenvalidatie bepalen, mogen niet worden ingesteld op false.
CA5405: Tokenvalidatie niet altijd overslaan in gemachtigden De callback die is toegewezen aan AudienceValidator of LifetimeValidator altijd retourneert true.
IL3000: Vermijd toegang tot het assemblybestandspad bij het publiceren als één bestand Vermijd het openen van het assemblybestandspad bij het publiceren als één bestand.
IL3001: Vermijd toegang tot het assemblybestandspad bij het publiceren als één bestand Vermijd het openen van het assemblybestandspad bij het publiceren als één bestand.
IL3002: Vermijd het aanroepen van leden met aantekeningen met 'RequiresAssemblyFilesAttribute' bij het publiceren als één bestand Vermijd het aanroepen van leden met aantekeningen met 'RequiresAssemblyFilesAttribute' bij het publiceren als één bestand
IL3003: 'VereistAssemblyFilesAttribute'-aantekeningen moeten overeenkomen met alle interface-implementaties of onderdrukkingen. Annotaties 'RequiresAssemblyFilesAttribute' moeten overeenkomen met alle interface-implementaties of onderdrukkingen.

Legenda

In de volgende tabel ziet u het type informatie dat wordt verstrekt voor elke regel in de referentiedocumentatie.

Item Beschrijving
Type De TypeName voor de regel.
Regel-id De unieke id voor de regel. RuleId en Category worden gebruikt voor in-source onderdrukking van een waarschuwing.
Categorie De categorie van de regel, bijvoorbeeld beveiliging.
Oplossing is brekend of niet-brekend Of de oplossing voor een schending van de regel een belangrijke wijziging is. Wijziging die fouten veroorzaakt, betekent dat een assembly die afhankelijk is van het doel dat de schending heeft veroorzaakt, niet opnieuw wordt gecompileert met de nieuwe vaste versie of dat deze tijdens de uitvoering kan mislukken vanwege de wijziging. Wanneer er meerdere fixes beschikbaar zijn en er ten minste één oplossing een wijziging is die fouten veroorzaken en één oplossing niet, worden zowel 'Fouten verbreken' als 'Niet-verbrekend' opgegeven.
Oorzaak De specifieke beheerde code die ervoor zorgt dat de regel een waarschuwing genereert.
Beschrijving Hierin worden de problemen besproken die zich achter de waarschuwing bevinden.
Schendingen oplossen Hierin wordt uitgelegd hoe u de broncode wijzigt om aan de regel te voldoen en te voorkomen dat er een waarschuwing wordt gegenereerd.
Wanneer waarschuwingen onderdrukken Beschrijft wanneer het veilig is om een waarschuwing van de regel te onderdrukken.
Voorbeeldcode Voorbeelden die de regel schenden en voorbeelden corrigeren die voldoen aan de regel.
Gerelateerde regels Gerelateerde regels.