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

Der Regelsatz für erweiterte Microsoft-Regeln für Richtigkeit maximiert die Fehler in der Logik und bei der Framework-Verwendung, die von der Codeanalyse gemeldet werden.Der Schwerpunkt liegt bei bestimmten Szenarios, z. B. COM-Interoperabilität und mobile Anwendungen.Sie sollten die Verwendung dieses Regelsatzes in Betracht ziehen, wenn eines dieser Szenarien für Ihr Projekt gilt oder Sie zusätzliche Probleme in Ihrem Projekt finden möchten.

Der Regelsatz für erweiterte Microsoft-Regeln für Richtigkeit umfasst alle Regeln des Regelsatzes für grundlegende Microsoft-Regeln für Richtigkeit.Die grundlegenden Regeln für Richtigkeit umfassen alle Regeln des Regelsatzes für empfohlene Microsoft-Mindestregeln.Weitere Informationen finden Sie unter Regelsatz für die grundlegenden Regeln für Richtigkeit für verwalteten Code und unter Regelsatz für verwaltete empfohlene Regeln für verwalteten Code.

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

CA1032

Standardausnahmekonstruktoren implementieren

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.

CA1402

Überladungen in für COM sichtbaren Schnittstellen vermeiden

CA1406

Int64-Argumente für Visual Basic 6-Clients vermeiden

CA1407

Statische Member in für COM sichtbaren Typen vermeiden

CA1408

AutoDual ClassInterfaceType nicht verwenden

CA1409

Sichtbare Typen COM sollten erstellt werden können

CA1411

Die COM-Registrierungsmethoden dürfen nicht sichtbar sein.

CA1412

ComSource-Schnittstellen als IDispatch markieren

CA1413

Nicht öffentliche Felder in für COM sichtbaren Werttypen vermeiden

CA1414

Boolesche P/Invoke-Argumente mit MarshalAs markieren

CA1600

Verwenden Sie keine Prozesse mit der Priorität "idle".

CA1601

Verwenden Sie keine Timer, um Änderungen am Betriebszustand zu verhindern.

CA1824

Assemblys mit NeutralResourcesLanguageAttribute markieren

CA2001

Keine problematischen Methoden aufrufen

CA2003

Fibers nicht als Threads behandeln

CA2135

Assemblys der Ebene 2 sollten LinkDemands nicht enthalten

CA2136

Member sollten in Konflikt stehende Transparenzanmerkungen aufweisen

CA2139

Transparente Methoden verwenden möglicherweise nicht das HandleProcessCorruptingExceptions-Attribut

CA2142

Transparenter Code sollte nicht mit LinkDemands geschützt werden

CA2143

Transparente Methoden sollten Sicherheitsanforderungen nicht verwenden

CA2144

Transparenter Code sollte Assemblys aus Bytearrays nicht laden

CA2145

Transparente Methoden sollten nicht mit dem SuppressUnmanagedCodeSecurityAttribute ergänzt werden

CA2204

Literale sollten eine korrekte Rechtschreibung aufweisen.

CA2211

Nicht konstante Felder sollten nicht sichtbar sein.

CA2217

Enumerationen nicht mit FlagsAttribute markieren

CA2218

GetHashCode beim Überschreiben von Equals überschreiben

CA2219

Keine Ausnahmen in Ausnahmeklauseln auslösen

CA2225

Operatorüberladungen weisen benannte Alternativen auf

CA2228

Nicht freigegebene Ressourcenformate nicht veröffentlichen

CA2230

params für Variablenargumente verwenden

CA2233

Vorgänge sollten nicht überlaufen

CA2234

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

CA2243

Attribute-Zeichenfolgenliterale müssen stets richtig analysiert werden.