Status der FxCop-Regelportierung

Wenn Sie zuvor die statische Codeanalyse in Visual Studio verwendet haben, fragen Sie sich vielleicht, welche dieser Regeln in der aktuellen Implementierung als .NET-Analysetools verfügbar sind. Auf dieser Seite werden die Regeln aufgelistet, die portiert wurden. Informationen zu nicht portierten Regeln, und ob Pläne bestehen, sie zu portieren, finden Sie unter Nicht portierte Regeln.

Portierte Regeln

Die automatisch generierte Dokumentationsseite im Repository „roslyn-analyzers“ enthält die aktuellste Liste der Regeln, die zu Roslyn-Analysetools portiert wurden. Diese Seite enthält außerdem zusätzliche Informationen, z. B. ob die Regel standardmäßig aktiviert ist und ob sie über eine zugeordnete Codekorrektur verfügt. (Codekorrekturen sind Ein-Klick-Korrekturen, die im Fehlerbehebungsmenü (Glühbirne) in Visual Studio verfügbar sind.)

Zum Zeitpunkt des Datums auf dieser Seite enthält die Liste der FxCop-Regeln, die zu .NET-Analysetools portiert wurden, folgende Regeln:

Regel-ID Titel
CA1000 Statische Member nicht in generischen Typen deklarieren.
CA1001 Typen, die löschbare Felder besitzen, müssen gelöscht werden können.
CA1002 Generische Listen nicht verfügbar machen.
CA1003 Generische Ereignishandlerinstanzen verwenden.
CA1005 Übermäßige Anzahl von Parametern in generischen Typen vermeiden.
CA1008 Enumerationen müssen einen Wert von 0 (null) aufweisen.
CA1010 Sammlungen müssen eine generische Schnittstelle implementieren.
CA1012 Abstrakte Typen dürfen keine Konstruktoren aufweisen.
CA1014 Assemblys mit CLSCompliant markieren
CA1016 Assemblys mit Assemblyversion markieren
CA1017 Assemblys mit ComVisible markieren
CA1018 Attribute mit AttributeUsageAttribute markieren.
CA1019 Accessoren für Attributargumente definieren.
CA1021 out-Parameter vermeiden.
CA1024 Nach Möglichkeit Eigenschaften verwenden.
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.
CA1033 Schnittstellenmethoden sollten von untergeordneten Typen aufgerufen werden können.
CA1034 Geschachtelte Typen sollten nicht sichtbar sein.
CA1036 Methoden bei vergleichbaren Typen überschreiben.
CA1040 Leere Schnittstellen vermeiden.
CA1041 ObsoleteAttribute-Meldung bereitstellen.
CA1043 Ganzzahliges Argument oder Zeichenfolgenargument für Indexer verwenden
CA1044 Eigenschaften sollten nicht lesegeschützt sein.
CA1045 Typen nicht als Verweis übergeben.
CA1046 Gleichheitsoperator für Referenztypen nicht überladen.
CA1047 Geschützte Member in versiegelten Typen nicht deklarieren.
CA1050 Typen in Namespaces deklarieren.
CA1051 Sichtbare Instanzfelder nicht deklarieren.
CA1052 Statische Containertypen müssen „Static“ oder „NotInheritable“ sein.
CA1053 Statische Haltertypen sollten keine Konstruktoren aufweisen (CA1053 ist Teil von CA1052 für .NET-Analysetools).
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.
CA1058 Typen sollten bestimmte Basistypen nicht erweitern.
CA1060 P/Invokes in NativeMethods-Klasse verschieben
CA1061 Basisklassenmethoden nicht ausblenden.
CA1062 Argumente von öffentlichen Methoden validieren.
CA1063 IDisposable korrekt implementieren.
CA1064 Ausnahmen sollten öffentlich sein.
CA1065 Keine Ausnahmen an unerwarteten Speicherorten auslösen.
CA1066 Typ {0} muss IEquatable<T> implementieren, weil er „Equals“ (Ist gleich) außer Kraft setzt.
CA1067 „Object.Equals(object)“ bei Implementierung von „IEquatable<T>“ außer Kraft setzen
CA1303 Literale nicht als lokalisierte Parameter übergeben.
CA1304 CultureInfo angeben.
CA1305 IFormatProvider angeben.
CA1307 "StringComparison" zur Verdeutlichung angeben
CA1308 Zeichenfolgen in Großbuchstaben normalisieren.
CA1309 Ordinal-StringComparison verwenden
CA1401 P/Invokes dürfen nicht sichtbar sein.
CA1501 Übermäßige Vererbung vermeiden.
CA1502 Übermäßige Komplexität vermeiden.
CA1505 Nicht wartbaren Code vermeiden.
CA1506 Übermäßige Klassenkopplungen vermeiden.
CA1700 Enumerationswerte nicht mit "Reserviert" benennen.
CA1707 Bezeichner sollten keine Unterstriche enthalten.
CA1708 Bezeichner sollten sich nicht nur durch die Groß-/Kleinschreibung unterscheiden.
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.
CA1716 Bezeichner sollten nicht mit Schlüsselwörtern übereinstimmen.
CA1717 Nur FlagsAttribute-Enumerationen sollten Pluralnamen aufweisen.
CA1720 Bezeichner enthält Typnamen
CA1721 Eigenschaftennamen sollten nicht mit Get-Methoden übereinstimmen.
CA1724 Typnamen sollten nicht mit Namespaces übereinstimmen.
CA1725 Parameternamen sollten mit der Basisdeklaration übereinstimmen.
CA1801 Nicht verwendete Parameter überprüfen.
CA1802 Nach Möglichkeit Literale verwenden.
CA1805 Keine unnötige Initialisierung.
CA1806 Methodenergebnisse nicht ignorieren.
CA1810 Statische Felder von Referenztypen inline initialisieren.
CA1812 Nicht instanziierte interne Klassen vermeiden.
CA1813 Nicht versiegelte Attribute vermeiden.
CA1814 Jagged Arrays mehrdimensionalen Arrays vorziehen.
CA1815 Equals und Gleichheitsoperator für Werttypen überschreiben.
CA1816 Dispose-Methoden müssen SuppressFinalize aufrufen
CA1819 Eigenschaften sollten keine Arrays zurückgeben.
CA1820 Mithilfe der Zeichenfolgenlänge auf leere Zeichenfolgen prüfen.
CA1821 Leere Finalizer entfernen
CA1822 Member als statisch markieren.
CA1823 Nicht verwendete private Felder vermeiden.
CA1824 Assemblys mit NeutralResourcesLanguageAttribute markieren.
CA1825 Vermeiden von Arrayzuteilungen mit einer Länge von 0 (Null).
CA2000 Objekte verwerfen, bevor Bereich verloren geht.
CA2002 Auf Objekten mit schwacher Identität nicht sperren.
CA2100 SQL-Abfragen auf Sicherheitsrisiken überprüfen.
CA2101 Marshalling für P/Invoke-Zeichenfolgenargumente festlegen.
CA2109 Sichtbare Ereignishandler überprüfen.
CA2119 Methoden versiegeln, die die Bedingungen privater Schnittstellen erfüllen.
CA2153 Keine Ausnahmen wegen beschädigtem Zustand abfangen
CA2200 Erneut auslösen, um Stapeldetails beizubehalten.
CA2201 Keine reservierten Ausnahmetypen auslösen.
CA2207 Statische Felder für Werttyp inline initialisieren.
CA2208 Argumentausnahmen korrekt instanziieren.
CA2211 Nicht konstante Felder sollten nicht sichtbar sein.
CA2213 Verwerfbare Felder verwerfen.
CA2214 Überschreibbare Methoden in Konstruktoren nicht aufrufen.
CA2215 Dispose-Methoden müssen die Dispose-Funktion der Basisklasse aufrufen.
CA2216 Verwerfbare Typen sollten einen Finalizer deklarieren.
CA2217 Enumerationen nicht mit FlagsAttribute markieren.
CA2219 Keine Ausnahmen in finally-Klauseln auslösen
CA2225 Operatorüberladungen weisen benannte Alternativen auf.
CA2226 Operatoren sollten symmetrische Überladungen aufweisen.
CA2227 Sammlungseigenschaften sollten schreibgeschützt sein.
CA2229 Serialisierungskonstruktoren implementieren.
CA2231 Gleichheitsoperator beim Überschreiben von „ValueType.Equals“ überladen
CA2234 System.Uri-Objekte anstelle von Zeichenfolgen übergeben
CA2235 Alle nicht serialisierbaren Felder markieren.
CA2237 ISerializable-Typen als serialisierbar markieren
CA2241 Geben Sie die korrekte Anzahl für Formatierungsmethoden an.
CA2242 Ordnungsgemäß auf NaN testen.
CA2243 Attribute-Zeichenfolgenliterale müssen stets richtig analysiert werden.
CA2300 Nicht den unsicheren BinaryFormatter zur Deserialisierung verwenden
CA2301 BinaryFormatter.Deserialize nicht ohne Festlegung von BinaryFormatter.Binder aufrufen
CA2302 Festlegung von BinaryFormatter.Binder vor dem Aufruf von BinaryFormatter.Deserialize sicherstellen
CA2305 Unsicheren Deserialisierer nicht verwenden: LosFormatter
CA2310 Unsicheren Deserialisierer nicht verwenden: NetDataContractSerializer
CA2311 Nicht deserialisieren, ohne zuerst NetDataContractSerializer.Binder festzulegen
CA2312 Vor dem Deserialisieren sicherstellen, dass NetDataContractSerializer.Binder festgelegt ist
CA2315 Unsicheren Deserialisierer nicht verwenden: ObjectStateFormatter
CA2321 Nicht mit JavaScriptSerializer und SimpleTypeResolver deserialisieren
CA2322 Vor dem Deserialisieren sicherstellen, dass JavaScriptSerializer nicht mit SimpleTypeResolver initialisiert ist
CA3001 Review code for SQL injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusung von SQL-Befehlen)
CA3002 Review code for XSS vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch XSS)
CA3003 Review code for file path injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen über einen Dateipfad)
CA3004 Review code for information disclosure vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken bei der Veröffentlichung von Informationen)
CA3005 Review code for LDAP injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusung von LDAP-Befehlen)
CA3006 Review code for process command injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusung von Prozessbefehlen)
CA3007 Review code for open redirect vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch offene Umleitungen)
CA3008 Review code for XPath injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XPath-Befehlen)
CA3009 Review code for XML injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XML-Befehlen)
CA3010 Review code for XAML injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von XAML-Befehlen)
CA3011 Review code for DLL injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von DLL)
CA3012 Review code for regex injection vulnerabilities (Überprüfen von Code auf Sicherheitsrisiken durch Einschleusungen von RegEx)
CA3061 Schema nicht mittels URL hinzufügen
CA3075 Unsichere DTD-Verarbeitung in XML
CA3076 Unsichere Verarbeitung von XSLT-Skript.
CA3077 Unsichere Verarbeitung in API-Design, XmlDocument und XmlTextReader
CA3147 Verbhandler mit ValidateAntiForgeryToken markieren
CA5350 Keine schwachen Kryptografiealgorithmen verwenden.
CA5351 Keine beschädigten Kryptografiealgorithmen verwenden
CA5358 Verwenden Sie keine unsicheren Verschlüsselungsmodi.
CA5359 Zertifikatüberprüfung nicht deaktivieren
CA5360 Keine gefährlichen Methoden bei der Deserialisierung aufrufen.
CA5361 Verwendung der starken Kryptografie durch SChannel nicht deaktivieren
CA5362 In serialisierbaren Klassen keine Selbstverweise verwenden
CA5363 Anforderungsüberprüfung nicht deaktivieren
CA5364 Keine veralteten Sicherheitsprotokolle verwenden
CA5365 Überprüfung von HTTP-Headern nicht deaktivieren
CA5366 XmlReader für DataSet.ReadXML verwenden
CA5367 Typen mit Zeigerfeldern dürfen nicht serialisiert werden.
CA5368 Festlegen von ViewStateUserKey für von der Seite abgeleitete Klassen
CA5369 XmlReader zur Deserialisierung verwenden
CA5370 XmlReader zur Überprüfung des Lesers verwenden
CA5371 XmlReader zum Lesen von Schemas verwenden
CA5372 XmlReader für XPathDocument verwenden
CA5373 Verwenden Sie keine veraltete Schlüsselableitungsfunktion.
CA5374 Kein XslTransform verwenden
CA5375 Shared Access Signature des Kontos nicht verwenden
CA5376 SharedAccessProtocol.HttpsOnly verwenden.
CA5377 Zugriffsrichtlinie auf Containerebene verwenden
CA5378 Deaktivieren Sie ServicePointManagerSecurityProtocols nicht.
CA5379 Keinen schwachen Algorithmus für die Schlüsselableitungsfunktion verwenden
CA9999 Konflikt bei der Analysetoolversion

Weitere Informationen