Regelsatz für die grundlegenden Regeln für Richtigkeit für verwalteten Code

Die Basic-Korrektheit ordnet Regelsatzfokusse auf logische Fehler und häufige Fehler bei der Verwendung von Framework-APIs.Die grundlegenden Regeln für Richtigkeit umfassen alle Regeln im empfohlene Microsoft-Mindestregeln Regelregelsatz.Weitere Informationen finden Sie unter Regelsatz für verwaltete empfohlene Regeln für verwalteten Code. Schließen Sie diesen Regelsatz mit ein, um die Liste der Warnungen durch die empfohlenen Mindestregeln zu erweitern.

In der folgenden Tabelle werden alle Regeln im Regelsatz für grundlegende Microsoft-Regeln für Richtigkeit 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

CA1008

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

CA1013

Gleichheitsoperator beim Überladen von Addition und Subtraktion überladen

CA1303

Literale nicht als lokalisierte Parameter übergeben

CA1308

Zeichenfolgen in Großbuchstaben normalisieren

CA1806

Methodenergebnisse nicht ignorieren

CA1816

GC.SuppressFinalize korrekt aufrufen

CA1819

Eigenschaften sollten keine Arrays zurückgeben

CA1820

Mithilfe der Zeichenfolgenlänge auf leere Zeichenfolgen prüfen

CA1903

Nur API aus Zielframework verwenden

CA2004

Aufrufe an GC.KeepAlive entfernen

CA2006

SafeHandle verwenden, um systemeigene Ressourcen zu kapseln

CA2102

Nicht-CLSCompliant-Ausnahmen in allgemeinen Handlern abfangen

CA2104

Schreibgeschützte änderbare Referenztypen nicht deklarieren

CA2105

Arrayfelder dürfen nicht schreibgeschützt sein

CA2106

Sichere Bestätigungen

CA2115

GC.KeepAlive beim Verwenden systemeigener Ressourcen aufrufen

CA2119

Methoden versiegeln, die die Bedingungen privater Schnittstellen erfüllen

CA2120

Sichere Serialisierungskonstruktoren

CA2121

Statische Konstruktoren sollten privat sein.

CA2130

Sicherheitsrelevante Konstanten sollten transparent sein

CA2205

Verwaltete Entsprechungen der Win32 API verwenden

CA2215

Dispose-Methoden müssen die Dispose-Funktion der Basisklasse aufrufen.

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

CA2226

Operatoren sollten symmetrische Überladungen aufweisen

CA2227

Auflistungseigenschaften sollten schreibgeschützt sein

CA2239

Deserialisierungsmethoden für optionale Felder angeben