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. |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für