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.
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 Codeanalyse-Regelsatz für die einfachen Microsoft-Regeln für Richtigkeit und unter Codeanalyse-Regelsatz für empfohlene Microsoft-Mindestregeln.
In der folgenden Tabelle werden alle Regeln im Regelsatz für erweiterte Microsoft-Regeln für Richtigkeit beschrieben.
Regel |
Beschreibung |
|---|---|
Falls nicht der vollständige Satz von Konstruktoren angegeben wird, wird eine ordnungsgemäße Behandlung von Ausnahmen unter Umständen erschwert. |
|
Wenn eine Methode eine Zeichenfolgendarstellung eines URIs annimmt, sollte eine entsprechende Überladung angegeben werden, die eine Instanz der URI-Klasse annimmt, die diese Dienste auf sichere Weise bereitstellt. |
|
Diese Regel geht davon aus, dass die Methode einen URI (Uniform Resource Identifier) zurückgibt. Eine Zeichenfolgendarstellung eines URIs ist anfällig für Analyse- und Codierungsfehler und kann zu Sicherheitsmängeln führen. Die System.Uri-Klasse stellt diese Dienste auf sichere Weise bereit. |
|
Diese Regel geht davon aus, dass die Eigenschaft einen URI (Uniform Resource Identifier) darstellt. Eine Zeichenfolgendarstellung eines URIs ist anfällig für Analyse- und Codierungsfehler und kann zu Sicherheitsmängeln führen. Die System.Uri-Klasse stellt diese Dienste auf sichere Weise bereit. |
|
CA1057: URI-Überladungen vom Typ string rufen Überladungen vom Typ System.Uri auf |
Ein Typ deklariert Methodenüberladungen, die sich nur durch die Ersetzung eines Zeichenfolgenparameters mit einem System.Uri-Parameter unterscheiden. Die Überladung, die den Zeichenfolgenparameter akzeptiert, ruft nicht die Überladung auf, die den URI-Parameter akzeptiert. |
CA1402: Überladungen in für COM sichtbaren Schnittstellen vermeiden |
Wenn für COM-Clients überladene Methoden verfügbar gemacht werden, behält nur die erste Methodenüberladung ihren Namen. Nachfolgende Überladungen werden eindeutig umbenannt, indem dem Namen ein Unterstrich (_) und eine ganze Zahl angefügt werden, die der Reihenfolge der Deklaration der Überladung entspricht. |
CA1406: Int64-Argumente für Visual Basic 6-Clients vermeiden |
Visual Basic 6-COM-Clients können nicht auf 64-Bit-Ganzzahlen zugreifen. |
CA1407: Statische Member in für COM sichtbaren Typen vermeiden |
COM unterstützt keine statischen Methoden. |
Typen, die eine duale Schnittstelle verwenden, ermöglichen Clients die Bindung an ein bestimmtes Schnittstellenlayout. Änderungen an einer zukünftigen Version des Layouts des Typs oder eines Basistyps führen zur Aufhebung der Verbindung zu COM-Clients, die eine Bindung zu der Schnittstelle haben. Standardmäßig wird eine auf Dispatch beschränkte Schnittstelle verwendet, wenn das ClassInterfaceAttribute-Attribut nicht angegeben wird. |
|
CA1409: Für COM sichtbare Typen müssen erstellt werden können |
Ein Verweistyp, der speziell als für COM sichtbar gekennzeichnet ist, enthält einen öffentlichen parametrisierten Konstruktor, jedoch keinen öffentlichen (parameterlosen) Standardkonstruktor. Ein Typ ohne einen öffentlichen Standardkonstruktor kann nicht von COM-Clients erstellt werden. |
CA1411: Die COM-Registrierungsmethoden dürfen nicht sichtbar sein |
Eine mit dem System.Runtime.InteropServices.ComRegisterFunctionAttribute-Attribut oder dem System.Runtime.InteropServices.ComUnregisterFunctionAttribute-Attribut markierte Methode ist extern sichtbar. |
Ein Typ ist mit dem System.Runtime.InteropServices.ComSourceInterfacesAttribute-Attribut markiert, und mindestens eine der angegebenen Schnittstellen ist nicht mit dem auf ComInterfaceType.InterfaceIsIDispatch festgelegten System.Runtime.InteropServices.InterfaceTypeAttribute-Attribut markiert. |
|
CA1413: Nicht öffentliche Felder in für COM sichtbaren Werttypen vermeiden |
Nicht öffentliche Instanzenfelder von COM-sichtbaren Werttypen sind für COM-Clients sichtbar. Überprüfen Sie den Inhalt der Felder auf Informationen, die nicht verfügbar gemacht werden sollen oder unbeabsichtigte Auswirkungen auf Design oder Sicherheit haben. |
CA1414: Boolesche P/Invoke-Argumente mit MarshalAs markieren |
Der boolesche Datentyp verfügt über mehrere Darstellungen in nicht verwaltetem Code. |
CA1600: Verwenden Sie keine Prozesse mit der Priorität "idle" |
Legen Sie für Prozesse nicht die Priorität Idle fest. Prozesse mit System.Diagnostics.ProcessPriorityClass.Idle beanspruchen die CPU, wenn diese sich eigentlich im Leerlauf befindet, und blockieren daher den Standbymodus. |
CA1601: Verwenden Sie keine Timer, um Änderungen am Betriebszustand zu verhindern |
Regelmäßige Aktivitäten mit einer höheren Frequenz belasten die CPU und beeinflussen energiesparende Leerlaufzeitgeber, mit denen die Anzeige sowie die Festplatten ausgeschaltet werden. |
Finalizer sollten möglichst vermieden werden, da durch das Verfolgen der Objektlebensdauer zusätzliche Leistung beansprucht wird. Ein leerer Finalizer verursacht zusätzlichen Mehraufwand ohne Nutzen. |
|
CA1824: Assemblys mit NeutralResourcesLanguageAttribute markieren |
Mit dem NeutralResourcesLanguage-Attribut wird dem ResourceManager die Sprache mitgeteilt, in der die Ressourcen einer neutralen Kultur für eine Assembly angezeigt wurden. Auf diese Weise wird die Suchleistung für die erste zu ladende Ressource verbessert und Ihr Workingset kann sich verkleinern. |
Ein Member ruft eine möglicherweise gefährliche oder problematische Methode auf. |
|
Ein verwalteter Thread wird als Win32-Thread behandelt. |
|
CA2204: Literale sollten eine korrekte Rechtschreibung aufweisen |
Ein Zeichenfolgenliteral in einem Methodentext enthält mindestens ein Wort, das von der Rechtschreibprüfung aus der Microsoft-Bibliothek nicht erkannt wird. |
Statische Felder, die weder konstant noch schreibgeschützt sind, sind nicht threadsicher. Der Zugriff auf ein solches Feld muss sorgfältig kontrolliert werden und erfordert fortgeschrittene Programmiertechniken zur Synchronisierung des Zugriffs auf das Klassenobjekt. |
|
Eine extern sichtbare Enumeration wird mit FlagsAttribute gekennzeichnet und weist einen oder mehrere Werte auf, die keine Potenzen von 2 und keine Kombination von anderen in der Enumeration definierten Werten bilden. |
|
CA2218: GetHashCode beim Überschreiben von Equals überschreiben |
GetHashCode gibt einen Wert auf der Grundlage der aktuellen Instanz zurück, die sich für Hashalgorithmen und Datenstrukturen eignet, z. B. für eine Hashtabelle. Zwei Objekte, die denselben Typ aufweisen und gleich sind, müssen den gleichen Hashcode zurückgeben. |
Wenn eine Ausnahme in einer finally-Klausel oder fault-Klausel ausgelöst wird, wird die aktive Ausnahme von der neuen Ausnahme verdeckt. Wenn eine Ausnahme in einer filter-Klausel ausgelöst wird, fängt die Laufzeit die Ausnahme automatisch ab. Dadurch ist der ursprüngliche Fehler nur schwer zu erkennen und zu debuggen. |
|
CA2225: Operatorüberladungen weisen benannte Alternativen auf |
Es wurde eine Operatorüberladung erkannt, und die erwartete benannte Alternativmethode wurde nicht gefunden. Der benannte Alternativmember gewährt auf die gleiche Funktionalität wie der Operator Zugriff und wird für Entwickler bereitgestellt, die in Sprachen programmieren, in denen überladene Operatoren nicht unterstützt werden. |
CA2228: Nicht freigegebene Ressourcenformate nicht veröffentlichen |
Ressourcendateien, die mithilfe von Vorabversionen von .NET Framework erstellt wurden, können von den unterstützten Versionen von .NET Framework möglicherweise nicht verwendet werden. |
Ein öffentlicher oder geschützter Typ enthält eine öffentliche oder geschützte Methode, die statt des params-Schlüsselworts die VarArgs-Aufrufkonvention verwendet. |
|
Arithmetische Operationen sollten erst nach einer Validierung der Operanden ausgeführt werden, um sicherzustellen, dass das Ergebnis der Operation nicht außerhalb des Bereichs möglicher Werte der beteiligten Datentypen liegt. |
|
CA2234: Übergeben Sie System.Uri-Objekte anstelle von Zeichenfolgen |
Eine Methode wird aufgerufen, die über einen Zeichenfolgenparameter verfügt, dessen Name "uri", "URI", "urn", "URN", "url" oder "URL" enthält. Der deklarierende Typ der Methode enthält eine entsprechende Methodenüberladung, die über einen System.Uri-Parameter verfügt. |
CA2243: Attribute-Zeichenfolgenliterale müssen stets richtig analysiert werden |
Der Parameter eines Zeichenfolgenliterals für ein Attribut wird für eine URL, GUID oder Version nicht ordnungsgemäß analysiert. |