Regelsatz für die erweiterten Entwurfsrichtlinienregeln für verwalteten Code

Der Regelsatz für die erweiterten Microsoft-Entwurfsrichtlinienregeln erweitert die grundlegenden Entwurfsrichtlinienregeln, um die Benutzerfreundlichkeit und Verwaltbarkeit zu optimieren.Besonderes Augenmerk wird auf Benennungsrichtlinien gelegt.Sie sollten erwägen, diesen Regelsatz einzubeziehen, wenn Ihr Projekt Bibliothekscode umfasst oder wenn Sie die höchsten Standards zum Schreiben von Code erzwingen möchten, der einfach zu verwalten ist.

Die erweiterten Entwurfsrichtlinienregeln umfassen alle grundlegenden Microsoft-Entwurfsrichtlinienregeln.Die grundlegenden Entwurfsrichtlinienregeln umfassen alle empfohlenen Microsoft-Mindestregeln.Weitere Informationen finden Sie unter Regelsatz für die einfachen Entwurfsrichtlinienregeln für verwalteten Code und unter Regelsatz für verwaltete empfohlene Regeln für verwalteten Code.

In der folgenden Tabelle werden alle erweiterten Microsoft-Regeln für Entwurfsrichtlinien beschrieben.

Regel

Beschreibung

CA1001

Typen, die löschbare Felder besitzen, müssen gelöscht werden können

CA1009

Ereignishandler korrekt deklarieren

CA1016

Assemblys mit AssemblyVersionAttribute markieren

CA1033

Schnittstellenmethoden sollten von untergeordneten Typen aufgerufen werden können

CA1049

Typen, die systemeigene Ressourcen besitzen, müssen gelöscht werden können

CA1060

P/Invokes in NativeMethods-Klasse verschieben

CA1061

Basisklassenmethoden nicht ausblenden

CA1063

IDisposable korrekt implementieren

CA1065

Keine Ausnahmen an unerwarteten Speicherorten auslösen

CA1301

Doppelte Zugriffstasten vermeiden

CA1400

Für P/Invoke müssen Einstiegspunkte vorhanden sein.

CA1401

P/Invokes dürfen nicht sichtbar sein.

CA1403

Typen mit automatischem Layout sollten nicht für COM sichtbar sein

CA1404

GetLastError unmittelbar nach P/Invoke aufrufen

CA1405

Für COM sichtbare Basistypen sollten für COM sichtbar sein

CA1410

Die COM-Registrierungsmethoden müssen übereinstimmen.

CA1415

P/Invokes korrekt deklarieren

CA1821

Leere Finalizer entfernen

CA1900

Werttypfelder sollten portabel sein.

CA1901

Deklarationen von P/Invoke müssen portabel sein.

CA2002

Auf Objekten mit schwacher Identität nicht sperren

CA2100

SQL-Abfragen auf Sicherheitsrisiken überprüfen

CA2101

Marshalling für P/Invoke-Zeichenfolgenargumente festlegen

CA2108

Deklarative Sicherheit auf Werttypen überprüfen

CA2111

Zeiger sollten nicht sichtbar sein.

CA2112

Gesicherte Typen sollten keine Felder verfügbar machen.

CA2114

Methodensicherheit sollte Superset des Typs sein

CA2116

APTCA-Methoden sollten nur APTCA-Methoden aufrufen

CA2117

APTCA-Typen sollten nur APTCA-Basistypen erweitern

CA2122

Methoden mit Linkaufrufen nicht indirekt verfügbar machen

CA2123

Überschreibungslinkaufrufe sollten zur Basis identisch sein

CA2124

Anfällige finally-Klauseln mit äußerem try-Block umschließen

CA2126

Typlinkaufrufe erfordern Vererbungsanforderungen

CA2131

Sicherheitsrelevante Typen werden möglicherweise nicht an Typäquivalenz beteiligt

CA2132

Standardkonstruktoren müssen mindestens so kritisch sein wie die Standardkonstruktoren des Basistyps.

CA2133

Delegaten müssen an Methoden mit Transparenz konsistenter binden

CA2134

Methoden müssen konsistente Transparenz halten, während sie Basismethoden überschreiben

CA2137

Transparente Methoden müssen nur überprüfbares IL enthalten

CA2138

Transparente Methoden dürfen Methoden mit dem SuppressUnmanagedCodeSecurity-Attribut nicht aufrufen

CA2140

Transparenter Code darf sicherheitsrelevante Elemente verweisen

CA2141

Transparente Methoden dürfen LinkDemands nicht erfüllen

CA2146

Typen müssen mindestens genauso kritisch sein wie ihre Basistypen und Schnittstellen.

CA2147

Transparente Methoden können nicht Sicherheitsassertions

CA2149

Transparente Methoden dürfen nicht in systemeigenen Code aufrufen

CA2200

Erneut ausführen, um Stapeldetails beizubehalten

CA2202

Objekte nicht mehrmals verwerfen

CA2207

Statische Felder für Werttyp inline initialisieren

CA2212

ServicedComponents nicht mit WebMethod markieren

CA2213

Verwerfbare Felder verwerfen

CA2214

Überschreibbare Methoden in Konstruktoren nicht aufrufen

CA2216

Verwerfbare Typen sollten einen Finalizer deklarieren

CA2220

Finalizer sollten Basisklassen-Finalizer aufrufen

CA2229

Serialisierungskonstruktoren implementieren

CA2231

Überladen Sie den Gleichheitsoperator beim Überschreiben von ValueType.Equals.

CA2232

Windows Forms-Einstiegspunkte mit STAThread markieren

CA2235

Alle nicht serialisierbaren Felder markieren

CA2236

Basisklassenmethoden auf ISerializable-Typen aufrufen

CA2237

ISerializable-Typen mit SerializableAttribute markieren

CA2238

Serialisierungsmethoden korrekt implementieren

CA2240

ISerializable ordnungsgemäß implementieren

CA2241

Geben Sie die korrekte Anzahl für Formatierungsmethoden an.

CA2242

Ordnungsgemäß auf NaN testen

CA1000

Statische Member nicht in generischen Typen deklarieren

CA1002

Generische Listen nicht verfügbar machen

CA1003

Generische Ereignishandlerinstanzen verwenden

CA1004

Generische Methoden müssen den Typparameter angeben

CA1005

Übermäßige Anzahl von Parametern in generischen Typen vermeiden

CA1006

Generische Typen in Membersignaturen nicht schachteln

CA1007

Nach Möglichkeit Generika verwenden

CA1008

Enumerationen müssen einen Wert von 0 (null) aufweisen

CA1010

Auflistungen müssen eine generische Schnittstelle implementieren

CA1011

Basistypen als Parameter übergeben

CA1012

Abstrakte Typen dürfen keine Konstruktoren aufweisen

CA1013

Gleichheitsoperator beim Überladen von Addition und Subtraktion überladen

CA1014

Assemblys mit CLSCompliantAttribute markieren

CA1017

Assemblys mit ComVisibleAttribute markieren

CA1018

Attribute mit AttributeUsageAttribute markieren

CA1019

Accessoren für Attributargumente definieren

CA1023

Indexer sollten nicht mehrdimensional sein

CA1024

Nach Möglichkeit Eigenschaften verwenden

CA1025

Sich wiederholende Argumente durch ein Parameterarray ersetzen

CA1026

Standardparameter sollten nicht verwendet werden

CA1027

Enumerationen mit FlagsAttribute markieren

CA1028

Der Enumerationsspeicher sollte Int32 sein.

CA1030

Nach Möglichkeit Ereignisse verwenden

CA1031

Allgemeine Ausnahmetypen nicht auffangen

CA1032

Standardausnahmekonstruktoren implementieren

CA1034

Geschachtelte Typen sollten nicht sichtbar sein

CA1035

ICollection-Implementierungen weisen Member mit starker Typisierung auf

CA1036

Methoden bei vergleichbaren Typen überschreiben

CA1038

Enumeratoren sollten eine starke Typisierung aufweisen

CA1039

Listen weisen eine starke Typisierung auf

CA1041

ObsoleteAttribute-Meldung bereitstellen

CA1043

Ganzzahliges Argument oder Zeichenfolgenargument für Indexer verwenden

CA1044

Eigenschaften sollten nicht lesegeschützt sein

CA1046

Gleichheitsoperator für Referenztypen nicht überladen

CA1047

Geschützte Member in versiegelten Typen nicht deklarieren

CA1048

Virtuelle Member in versiegelten Typen nicht deklarieren

CA1050

Typen in Namespaces deklarieren

CA1051

Sichtbare Instanzfelder nicht deklarieren

CA1052

Statische Haltertypen sollten versiegelt sein

CA1053

Statische Haltertypen sollten keine Konstruktoren aufweisen

CA1054

URI-Parameter dürfen keine Zeichenfolgen sein.

CA1055

URI-Rückgabewerte dürfen keine Zeichenfolgen sein.

CA1056

URI-Eigenschaften dürfen keine Zeichenfolgen sein.

CA1057

URI-Überladungen vom Typ string rufen Überladungen vom Typ System.Uri auf.

CA1058

Typen sollten bestimmte Basistypen nicht erweitern

CA1059

Member sollten bestimmte konkrete Typen nicht verfügbar machen

CA1064

Ausnahmen sollten öffentlich sein.

CA1500

Variablennamen sollten nicht mit Feldnamen übereinstimmen

CA1502

Übermäßige Komplexität vermeiden

CA1708

Bezeichner sollten sich nicht nur durch die Groß-/Kleinschreibung unterscheiden

CA1716

Bezeichner sollten nicht mit Schlüsselwörtern übereinstimmen

CA1801

Nicht verwendete Parameter überprüfen

CA1804

Nicht verwendete lokale Variablen entfernen

CA1809

Übermäßige lokale Variablen vermeiden

CA1810

Statische Felder von Referenztypen inline initialisieren

CA1811

Nicht aufgerufenen privaten Code vermeiden

CA1812

Nicht instanziierte interne Klassen vermeiden

CA1813

Nicht versiegelte Attribute vermeiden

CA1814

Verzweigte Arrays mehrdimensionalen Arrays vorziehen

CA1815

Equals und Gleichheitsoperator für Werttypen überschreiben

CA1819

Eigenschaften sollten keine Arrays zurückgeben

CA1820

Mithilfe der Zeichenfolgenlänge auf leere Zeichenfolgen prüfen

CA1822

Member als statisch markieren

CA1823

Nicht verwendete private Felder vermeiden

CA2201

Keine reservierten Ausnahmetypen auslösen

CA2205

Verwaltete Entsprechungen der Win32 API verwenden

CA2208

Argumentausnahmen korrekt instanziieren

CA2211

Nicht konstante Felder sollten nicht sichtbar sein.

CA2217

Enumerationen nicht mit FlagsAttribute markieren

CA2219

Keine Ausnahmen in Ausnahmeklauseln auslösen

CA2221

Finalizer sollten geschützt sein

CA2222

Sichtbarkeit für geerbte Member nicht verringern

CA2223

Member sollten sich durch mehr als nur den Rückgabetyp unterscheiden.

CA2224

Überschreibungsgleichgestellte auf Überladenoperatorgleichgestellten

CA2225

Operatorüberladungen weisen benannte Alternativen auf

CA2226

Operatoren sollten symmetrische Überladungen aufweisen

CA2227

Auflistungseigenschaften sollten schreibgeschützt sein

CA2230

params für Variablenargumente verwenden

CA2234

Übergeben Sie System.Uri-Objekte anstelle von Zeichenfolgen.

CA2239

Deserialisierungsmethoden für optionale Felder angeben

CA1020

Namespaces mit wenigen Typen vermeiden

CA1021

out-Parameter vermeiden

CA1040

Leere Schnittstellen vermeiden

CA1045

Typen nicht als Verweis übergeben

CA1062

Argumente von öffentlichen Methoden validieren

CA1501

Übermäßige Vererbung vermeiden

CA1504

Irreführende Feldnamen überprüfen

CA1505

Nicht wartbaren Code vermeiden

CA1506

Übermäßige Klassenkopplungen vermeiden

CA1700

Enumerationswerte nicht mit "Reserviert" benennen

CA1701

Bei zusammengesetzten Begriffen in Ressourcenzeichenfolgen sollte die Groß-/Kleinschreibung beachtet werden

CA1702

Bei zusammengesetzten Begriffen sollte die Groß-/Kleinschreibung beachtet werden

CA1703

Ressourcenzeichenfolgen sollten korrekt geschrieben werden

CA1704

Bezeichner sollten korrekt geschrieben werden

CA1707

Bezeichner sollten keine Unterstriche enthalten

CA1709

Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden

CA1710

Bezeichner sollten ein richtiges Suffix aufweisen

CA1711

Bezeichner sollten kein falsches Suffix aufweisen

CA1712

Keine Typnamen als Präfixe für Enumerationswerte verwenden

CA1713

Ereignisse sollten kein Before- oder After-Präfix aufweisen

CA1714

Flags-Enumerationen sollten Pluralnamen aufweisen

CA1715

Bezeichner sollten ein korrektes Präfix aufweisen

CA1717

Nur FlagsAttribute-Enumerationen sollten Pluralnamen aufweisen

CA1719

Parameternamen sollten nicht mit Membernamen übereinstimmen

CA1720

Bezeichner dürfen keine Typnamen enthalten.

CA1721

Eigenschaftennamen sollten nicht mit Get-Methoden übereinstimmen

CA1722

Bezeichner sollten kein falsches Präfix aufweisen

CA1724

Typnamen sollten nicht mit Namespaces übereinstimmen

CA1725

Parameternamen sollten mit der Basisdeklaration übereinstimmen

CA1726

Bevorzugte Begriffe verwenden

CA2204

Literale sollten eine korrekte Rechtschreibung aufweisen.