Codeanalyse-Regelsatz für die erweiterten Microsoft-Entwurfsrichtlinienregeln

Der Regelsatz für die erweiterten Microsoft-Entwurfsrichtlinienregeln erweitert die grundlegenden Entwurfsrichtlinienregeln, um die Benutzerfreundlichkeit und Verwaltbarkeit zu optimieren. Ein besonderer Schwerpunkt liegt dabei auf Benennungsrichtlinien. Sie sollten erwägen, diesen Regelsatz einzubeziehen, wenn Ihr Projekt Bibliothekscode umfasst oder wenn Sie die höchsten Standards zum Schreiben von Code erzwingen möchten, der einfach zu verwalten ist.

Die erweiterten Entwurfsrichtlinienregeln umfassen alle grundlegenden Microsoft-Entwurfsrichtlinienregeln. Die grundlegenden Entwurfsrichtlinienregeln umfassen alle empfohlenen Microsoft-Mindestregeln. Weitere Informationen finden Sie unter Codeanalyse-Regelsatz für die einfachen Microsoft-Entwurfsrichtlinienregeln und unter Codeanalyse-Regelsatz für empfohlene Microsoft-Mindestregeln.

In der folgenden Tabelle werden alle erweiterten Microsoft-Regeln für Entwurfsrichtlinien beschrieben.

Regel

Beschreibung

CA1020: Namespaces mit wenigen Typen vermeiden

Stellen Sie sicher, dass jeder der Namespaces logisch organisiert ist und dass es einen zulässigen Grund dafür gibt, Typen in einen wenig gefüllten Namespace einzufügen.

CA1021: out-Parameter vermeiden

Die Übergabe von Typen als Verweis (mit out oder ref) erfordert Erfahrung im Umgang mit Zeigern, Kenntnisse der Unterschiede zwischen Wert- und Verweistypen und Erfahrung im Umgang mit Methoden mit mehreren Rückgabewerten. Außerdem ist der Unterschied zwischen dem out-Parameter und dem ref-Parametern oft unklar.

CA1040: Leere Schnittstellen vermeiden

Schnittstellen definieren Member, die ein Verhalten oder einen Verwendungsvertrag bereitstellen. Die durch die Schnittstelle beschriebene Funktionalität kann von jedem Typ übernommen werden, unabhängig davon, an welcher Stelle der Typ in der Vererbungshierarchie steht. Ein Typ implementiert eine Schnittstelle, indem er Implementierungen für die Member der Schnittstelle bereitstellt. Eine leere Schnittstelle definiert keine Member. Daher definiert sie keinen Vertrag, der implementiert werden kann.

CA1045: Typen nicht als Verweis übergeben

Die Übergabe von Typen als Verweis (mit out oder ref) erfordert Erfahrung im Umgang mit Zeigern, Kenntnisse der Unterschiede zwischen Wert- und Verweistypen und Erfahrung im Umgang mit Methoden mit mehreren Rückgabewerten. Entwickler von Bibliotheken für eine breite Zielgruppe sollten nicht davon ausgehen, dass die Benutzer den out-Parameter oder den ref-Parameter richtig verwenden können.

CA1062: Argumente von öffentlichen Methoden validieren

Alle an extern sichtbare Methoden übergebenen Verweisargumente sollten auf NULL überprüft werden.

CA1501: Übermäßige Vererbung vermeiden

Ein Typ ist in seiner Vererbungshierarchie mehr als vier Ebenen tief. Tief verschachtelte Typenhierarchien können schwer zu verfolgen, verstehen und verwalten sein.

CA1504: Irreführende Feldnamen überprüfen

Der Name eines Instanzenfelds beginnt mit "s_", oder der Name eines static-Felds (Shared-Feld in Visual Basic) beginnt mit "m_".

CA1505: Nicht wartbaren Code vermeiden

Ein Typ oder eine Methode verfügt über einen niedrigen Wartbarkeitsindexwert. Ein niedriger Wartbarkeitsindex zeigt an, dass ein Typ oder eine Methode wahrscheinlich schwer zu verwalten ist und geeignet für einen Neuentwurf wäre.

CA1506: Übermäßige Klassenkopplungen vermeiden

Durch diese Regel wird die Klassenkopplung gemessen, indem die eindeutigen Typverweise, die ein Typ oder eine Methode enthält, gezählt werden.

CA1700: Enumerationswerte nicht mit "Reserviert" benennen

Diese Regel setzt voraus, dass ein Enumerationsmember mit einem Namen, der "reserved" enthält, derzeit nicht verwendet wird, sondern ein Platzhalter ist, der in einer künftigen Version umbenannt oder entfernt werden soll. Das Umbenennen oder Entfernen eines Members ist eine unterbrechende Änderung.

CA1701: Bei zusammengesetzten Begriffen in Ressourcenzeichenfolgen sollte die Groß-/Kleinschreibung beachtet werden

Jeder Begriff in der Ressourcenzeichenfolge wird basierend auf der Groß-/Kleinschreibung in einzelne Token unterteilt. Jede zusammenhängende Kombination aus zwei Token wird durch die Rechtschreibprüfung aus der Microsoft-Bibliothek überprüft. Wenn der Begriff erkannt wird, erzeugt er einen Regelverstoß.

CA1702: Bei zusammengesetzten Begriffen sollte die Groß-/Kleinschreibung beachtet werden

Der Name eines Bezeichners enthält mehrere Begriffe, und mindestens einer der Begriffe ist anscheinend ein zusammengesetztes Wort mit falscher Groß-/Kleinschreibung.

CA1703: Ressourcenzeichenfolgen sollten korrekt geschrieben werden

Eine Ressourcenzeichenfolge enthält mindestens ein Wort, das von der Rechtschreibprüfung aus der Microsoft-Bibliothek nicht erkannt wird.

CA1704: Bezeichner sollten korrekt geschrieben werden

Der Name eines extern sichtbaren Bezeichners enthält mindestens ein Wort, das von der Rechtschreibprüfung aus der Microsoft-Bibliothek nicht erkannt wird.

CA1707: Bezeichner sollten keine Unterstriche enthalten

Bezeichnernamen dürfen keinen Unterstrich (_) enthalten. Namespaces, Typen, Member und Parameter werden von dieser Regel überprüft.

CA1709: Bei Bezeichnern sollte die Groß-/Kleinschreibung beachtet werden

Gemäß der Konvention werden Parameternamen in Kamel-Schreibweise verfasst. Für Namespace-, Typ- und Membernamen wird hingegen die Pascal-Schreibweise verwendet.

CA1710: Bezeichner sollten ein richtiges Suffix aufweisen

Die Namen von Typen, die bestimmte Basistypen erweitern oder bestimmte Schnittstellen implementieren, bzw. von diesen Typen abgeleitete Typen weisen stets ein Suffix auf, das mit dem Basistyp oder der Schnittstelle verknüpft ist.

CA1711: Bezeichner sollten kein falsches Suffix aufweisen

Nur die Namen von Typen, die bestimmte Basistypen erweitern oder bestimmte Schnittstellen bzw. Typen implementieren, die von diesen Typen abgeleitet werden, sollten stets mit bestimmten reservierten Suffixen enden. Für andere Typnamen sollten diese reservierten Suffixe nicht verwendet werden.

CA1712: Keine Typnamen als Präfixe für Enumerationswerte verwenden

Den Namen von Enumationsmembern wird der Typname nicht als Präfix vorangestellt, weil die Typinformationen von den Entwicklungswerkzeugen bereitgestellt werden sollen.

CA1713: Ereignisse sollten kein Before- oder After-Präfix aufweisen

Der Name eines Ereignisses beginnt mit "Before" oder "After". Um verwandte Ereignisse zu benennen, die in einer bestimmten Reihenfolge ausgelöst werden, verwenden Sie die Gegenwarts- oder Vergangenheitsform, um ihre relative Position in der Aktionsfolge anzugeben.

CA1714: Flags-Enumerationen sollten Pluralnamen aufweisen

Eine öffentliche Enumeration verfügt über das System.FlagsAttribute-Attribut, und der Name endet nicht in der Pluralform ("s"). Die Namen von mit FlagsAttribute markierten Typen stehen im Plural, da das Attribut angibt, dass mehr als ein Wert festgelegt werden kann.

CA1715: Bezeichner sollten ein korrektes Präfix aufweisen

Der Name einer extern sichtbaren Schnittstelle beginnt nicht mit dem Großbuchstaben "I". Der Name eines generischen Typparameters für einen extern sichtbaren Typ oder eine extern sichtbare Methode beginnt nicht mit dem Großbuchstaben "T".

CA1717: Nur FlagsAttribute-Enumerationen sollten Pluralnamen aufweisen

Gemäß den Benennungskonventionen gibt ein Pluralname für eine Enumeration an, dass für die Enumeration mehrere Werte gleichzeitig angegeben werden können.

CA1719: Parameternamen sollten nicht mit Membernamen übereinstimmen

Ein Parametername sollte die Bedeutung eines Parameters vermitteln, und ein Membername sollte die Bedeutung eines Members vermitteln. Diese stimmen in der Regel nicht überein. Wenn ein Parameter mit dem Namen des zugehörigen Members benannt wird, ist dies nicht intuitiv, und es erschwert die Verwendung der Bibliothek.

CA1720: Bezeichner dürfen keine Typnamen enthalten

Der Name eines Parameters in einem extern sichtbaren Member enthält einen Datentypnamen, oder der Name eines extern sichtbaren Members enthält einen sprachspezifischen Datentypnamen.

CA1721: Eigenschaftennamen sollten nicht mit Get-Methoden übereinstimmen

Der Name eines öffentlichen oder geschützten Members beginnt mit "Get" und stimmt in anderer Hinsicht mit dem Namen einer öffentlichen oder geschützten Eigenschaft überein. " Get"-Methoden und -Eigenschaften sollten über Namen verfügen, aus denen ihre Funktion eindeutig hervorgeht.

CA1722: Bezeichner sollten kein falsches Präfix aufweisen

Gemäß der Konvention verfügen nur bestimmte Programmierelemente über Namen, die mit einem bestimmten Präfix anfangen.

CA1724: Typnamen sollten nicht mit Namespaces übereinstimmen

Typnamen sollten nicht mit den Namen von Namespaces übereinstimmen, die in der .NET Framework-Klassenbibliothek definiert sind. Durch einen Verstoß gegen diese Regel kann die Verwendbarkeit der Bibliothek eingeschränkt werden.

CA1725: Parameternamen sollten mit der Basisdeklaration übereinstimmen

Die konsistente Benennung von Parametern in einer Überschreibungshierarchie erhöht die Verwendbarkeit von Methodenüberschreibungen. Ein Parametername in einer abgeleiteten Methode, der vom Namen in der Basisdeklaration abweicht, kann zu Unklarheiten dahingehend führen, ob es sich bei der Methode um eine Überschreibung der Basismethode oder eine neue Überladung der Methode handelt.

CA1726: Bevorzugte Begriffe verwenden

Der Name eines extern sichtbaren Bezeichners schließt einen Begriff ein, für den ein alternativer, bevorzugter Begriff vorhanden ist. Der Name kann auch den Begriff "Flag" oder "Flags" enthalten.

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.