Freigeben über


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

Der erweiterte Regelsatz für Richtigkeit von Microsoft maximiert die Syntaxfehler in Bezug auf Logik und Framework, die von der Codeanalyse gemeldet werden. Der Schwerpunkt liegt dabei auf spezifischen Szenarien wie der COM-Interoperabilität und mobilen Anwendungen. Sie sollten die Einbeziehung dieses Regelsatzes in Betracht ziehen, wenn eines dieser Szenarien auf Ihr Projekt zutrifft, oder um weitere Probleme in Ihrem Projekt zu ermitteln.

Der erweiterte Regelsatz für Richtigkeit von Microsoft („Microsoft Extended Correctness Rules“) enthält die Regeln des Basisregelsatzes für Richtigkeit, der die Regeln im Regelsatz für verwaltete empfohlene Regeln enthält.

In der folgenden Tabelle werden alle Regeln beschrieben, die im erweiterten Regelsatz für Richtigkeit von Microsoft enthalten sind.

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 native 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 mit der Basis identisch sein.
CA2124 Anfällige finally-Klauseln mit äußerem try-Block umschließen.
CA2126 Typlinkaufrufe erfordern Vererbungsanforderungen.
CA2131 Sicherheitskritische Typen dürfen nicht an Typäquivalenz beteiligt sein.
CA2132 Standardkonstruktoren müssen mindestens so kritisch sein wie die Standardkonstruktoren des Basistyps.
CA2133 Delegaten müssen an Methoden mit konsistenter Transparenz gebunden werden.
CA2134 Methoden müssen beim Überschreiben von Basismethoden eine konsistente Transparenz wahren.
CA2137 Transparente Methoden dürfen nur überprüfbare IL enthalten.
CA2138 Transparente Methoden dürfen keine Methoden mit dem SuppressUnmanagedCodeSecurity-Attribut aufrufen.
CA2140 Transparenter Code darf nicht auf sicherheitskritische Elemente verweisen.
CA2141 Transparente Methoden dürfen keine LinkDemands erfüllen.
CA2146 Typen müssen mindestens genauso kritisch sein wie ihre Basistypen und Schnittstellen.
CA2147 Transparente Methoden dürfen keine Sicherheitsassertionen verwenden.
CA2149 Transparente Methoden dürfen keine Aufrufe in nativen Code durchführen.
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 native 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 nativer Ressourcen aufrufen.
CA2119 Methoden versiegeln, die die Bedingungen privater Schnittstellen erfüllen.
CA2120 Sichere Serialisierungskonstruktoren.
CA2121 Statische Konstruktoren sollten privat sein.
CA2130 Sicherheitskritische 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 Equals beim Überladen von Gleichheitsoperatoren überschreiben.
CA2226 Operatoren sollten symmetrische Überladungen aufweisen.
CA2227 Sammlungseigenschaften 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 Für COM sichtbare Typen müssen 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 Stufe 2 dürfen keine LinkDemands enthalten.
CA2136 Member dürfen keine miteinander in Konflikt stehenden Transparenzanmerkungen aufweisen.
CA2139 Transparente Methoden dürfen das HandleProcessCorruptingExceptions-Attribut nicht verwenden.
CA2142 Transparenter Code darf nicht mit LinkDemands geschützt werden.
CA2143 Transparente Methoden dürfen keine Sicherheitsanforderungen verwenden.
CA2144 Transparenter Code darf keine Assemblys aus Bytearrays laden.
CA2145 Transparente Methoden dürfen nicht mit dem SuppressUnmanagedCodeSecurity-Attribut versehen 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.