Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |
|---|---|
Typen, die löschbare Felder besitzen, müssen gelöscht werden können |
|
Ereignishandler korrekt deklarieren |
|
Assemblys mit AssemblyVersionAttribute markieren |
|
Schnittstellenmethoden sollten von untergeordneten Typen aufgerufen werden können |
|
Typen, die systemeigene Ressourcen besitzen, müssen gelöscht werden können |
|
P/Invokes in NativeMethods-Klasse verschieben |
|
Basisklassenmethoden nicht ausblenden |
|
IDisposable korrekt implementieren |
|
Keine Ausnahmen an unerwarteten Speicherorten auslösen |
|
Doppelte Zugriffstasten vermeiden |
|
Für P/Invoke müssen Einstiegspunkte vorhanden sein. |
|
P/Invokes dürfen nicht sichtbar sein. |
|
Typen mit automatischem Layout sollten nicht für COM sichtbar sein |
|
GetLastError unmittelbar nach P/Invoke aufrufen |
|
Für COM sichtbare Basistypen sollten für COM sichtbar sein |
|
Die COM-Registrierungsmethoden müssen übereinstimmen. |
|
P/Invokes korrekt deklarieren |
|
Leere Finalizer entfernen |
|
Werttypfelder sollten portabel sein. |
|
Deklarationen von P/Invoke müssen portabel sein. |
|
Auf Objekten mit schwacher Identität nicht sperren |
|
SQL-Abfragen auf Sicherheitsrisiken überprüfen |
|
Marshalling für P/Invoke-Zeichenfolgenargumente festlegen |
|
Deklarative Sicherheit auf Werttypen überprüfen |
|
Zeiger sollten nicht sichtbar sein. |
|
Gesicherte Typen sollten keine Felder verfügbar machen. |
|
Methodensicherheit sollte Superset des Typs sein |
|
APTCA-Methoden sollten nur APTCA-Methoden aufrufen |
|
APTCA-Typen sollten nur APTCA-Basistypen erweitern |
|
Methoden mit Linkaufrufen nicht indirekt verfügbar machen |
|
Überschreibungslinkaufrufe sollten zur Basis identisch sein |
|
Anfällige finally-Klauseln mit äußerem try-Block umschließen |
|
Typlinkaufrufe erfordern Vererbungsanforderungen |
|
Sicherheitsrelevante Typen werden möglicherweise nicht an Typäquivalenz beteiligt |
|
Standardkonstruktoren müssen mindestens so kritisch sein wie die Standardkonstruktoren des Basistyps. |
|
Delegaten müssen an Methoden mit Transparenz konsistenter binden |
|
Methoden müssen konsistente Transparenz halten, während sie Basismethoden überschreiben |
|
Transparente Methoden müssen nur überprüfbares IL enthalten |
|
Transparente Methoden dürfen Methoden mit dem SuppressUnmanagedCodeSecurity-Attribut nicht aufrufen |
|
Transparenter Code darf sicherheitsrelevante Elemente verweisen |
|
Transparente Methoden dürfen LinkDemands nicht erfüllen |
|
Typen müssen mindestens genauso kritisch sein wie ihre Basistypen und Schnittstellen. |
|
Transparente Methoden können nicht Sicherheitsassertions |
|
Transparente Methoden dürfen nicht in systemeigenen Code aufrufen |
|
Erneut ausführen, um Stapeldetails beizubehalten |
|
Objekte nicht mehrmals verwerfen |
|
Statische Felder für Werttyp inline initialisieren |
|
ServicedComponents nicht mit WebMethod markieren |
|
Verwerfbare Felder verwerfen |
|
Überschreibbare Methoden in Konstruktoren nicht aufrufen |
|
Verwerfbare Typen sollten einen Finalizer deklarieren |
|
Finalizer sollten Basisklassen-Finalizer aufrufen |
|
Serialisierungskonstruktoren implementieren |
|
Überladen Sie den Gleichheitsoperator beim Überschreiben von ValueType.Equals. |
|
Windows Forms-Einstiegspunkte mit STAThread markieren |
|
Alle nicht serialisierbaren Felder markieren |
|
Basisklassenmethoden auf ISerializable-Typen aufrufen |
|
ISerializable-Typen mit SerializableAttribute markieren |
|
Serialisierungsmethoden korrekt implementieren |
|
ISerializable ordnungsgemäß implementieren |
|
Geben Sie die korrekte Anzahl für Formatierungsmethoden an. |
|
Ordnungsgemäß auf NaN testen |
|
Enumerationen müssen einen Wert von 0 (null) aufweisen |
|
Gleichheitsoperator beim Überladen von Addition und Subtraktion überladen |
|
Literale nicht als lokalisierte Parameter übergeben |
|
Zeichenfolgen in Großbuchstaben normalisieren |
|
Methodenergebnisse nicht ignorieren |
|
GC.SuppressFinalize korrekt aufrufen |
|
Eigenschaften sollten keine Arrays zurückgeben |
|
Mithilfe der Zeichenfolgenlänge auf leere Zeichenfolgen prüfen |
|
Nur API aus Zielframework verwenden |
|
Aufrufe an GC.KeepAlive entfernen |
|
SafeHandle verwenden, um systemeigene Ressourcen zu kapseln |
|
Nicht-CLSCompliant-Ausnahmen in allgemeinen Handlern abfangen |
|
Schreibgeschützte änderbare Referenztypen nicht deklarieren |
|
Arrayfelder dürfen nicht schreibgeschützt sein |
|
Sichere Bestätigungen |
|
GC.KeepAlive beim Verwenden systemeigener Ressourcen aufrufen |
|
Methoden versiegeln, die die Bedingungen privater Schnittstellen erfüllen |
|
Sichere Serialisierungskonstruktoren |
|
Statische Konstruktoren sollten privat sein. |
|
Sicherheitsrelevante Konstanten sollten transparent sein |
|
Verwaltete Entsprechungen der Win32 API verwenden |
|
Dispose-Methoden müssen die Dispose-Funktion der Basisklasse aufrufen. |
|
Finalizer sollten geschützt sein |
|
Sichtbarkeit für geerbte Member nicht verringern |
|
Member sollten sich durch mehr als nur den Rückgabetyp unterscheiden. |
|
Überschreibungsgleichgestellte auf Überladenoperatorgleichgestellten |
|
Operatoren sollten symmetrische Überladungen aufweisen |
|
Auflistungseigenschaften sollten schreibgeschützt sein |
|
Deserialisierungsmethoden für optionale Felder angeben |