Freigeben über


Konfigurationsoptionen für Codequalitätsregeln

Die Codequalitätsregeln verfügen über zusätzliche Konfigurationsoptionen, die über die Konfiguration des Schweregrads hinausgehen. Beispielsweise kann jedes Codequalitäts-Analysetool so konfiguriert werden, dass es nur für bestimmte Teile Ihrer Codebasis gilt. Sie geben diese Optionen an, indem Sie Schlüssel-Wert-Paare zur gleichen EditorConfig-Datei hinzufügen, in der Sie Regelschweregrade und allgemeine Editor-Einstellungen angeben.

Hinweis

In diesem Artikel wird nicht beschrieben, wie der Schweregrad einer Regel konfiguriert wird. Die Option .editorconfig zum Festlegen des Schweregrads einer Regel weist ein anderes Präfix (dotnet_diagnostic) als die hier beschriebenen Optionen (dotnet_code_quality) auf. Darüber hinaus beziehen sich die hier beschriebenen Optionen nur auf Regeln der Codequalität, während die Schweregradoption auch für Regeln des Codestils gilt. Als Kurzübersicht können Sie den Schweregrad einer Regel mithilfe der folgenden Optionssyntax konfigurieren:

dotnet_diagnostic.<rule ID>.severity = <severity value>

Ausführliche Informationen zum Konfigurieren des Schweregrads der Regel finden Sie unter Schweregrad.

Option „Bereiche“

Jede Verfeinerungsoption kann für alle Regeln, für eine Kategorie von Regeln (z. B. Sicherheit oder Design) oder für eine bestimmte Regel konfiguriert werden.

Alle Regeln

Die Syntax zum Konfigurieren einer Option für alle Regeln lautet wie folgt:

Syntax Beispiel
dotnet_code_quality.<OptionName> = <OptionValue> dotnet_code_quality.api_surface = public

Die Werte für <OptionName> werden unter Optionen aufgeführt.

Kategorie von Regeln

Die Syntax zum Konfigurieren einer Option für eine Kategorie von Regeln lautet wie folgt:

Syntax Beispiel
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue dotnet_code_quality.Naming.api_surface = public

In der folgenden Tabelle werden die verfügbaren Werte für <RuleCategory> aufgelistet.

Design
Documentation
Globalization
Interoperability

Maintainability
Naming
Performance
SingleFile

Reliability
Security
Usage

Bestimmte Regel

Die Syntax zum Konfigurieren einer Option für eine bestimmte Regel lautet wie folgt:

Syntax Beispiel
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> dotnet_code_quality.CA1040.api_surface = public

Tastatur

In diesem Abschnitt werden die verfügbaren Konfigurationsoptionen für Codeanalyse aufgeführt. Weitere Informationen finden Sie unter Analyser-Konfiguration.

API-Oberfläche

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Der zu analysierende Teil der API-Oberfläche public (gilt für public- und protected-APIs)
internal oder friend (gilt für internal- und private protected-APIs)
private (gilt für private-APIs)
all (gilt für alle APIs)

Trennen Sie mehrere Werte durch ein Komma (,)
public CA1000CA10002CA1003 CA1005CA1008CA10010 CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040 CA1040CA1041CA1043CA1044 CA1045CA1046 CA1047CA1051CA1054CA1054CA1055CA1056CA1058CA1062 CA1063CA1068CA1070CA1700CA1707CA1708 CA1708CA1711CA1714CA1715CA1716CA1717CA1721CA1721 CA17211725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob asynchrone Methoden ignoriert werden sollen, die keinen Wert zurückgeben. true
false
false CA2007

Hinweis

Diese Option trug in einer früheren Version den Namen skip_async_void_methods.

Ausschließen_von_einzelnen_Buchstaben_Typ-Parametern

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob Typparameter mit einem Zeichen aus der Regel ausgeschlossen werden sollen, z. B. S in Collection<S>. true
false
false CA1715

Hinweis

Diese Option trug in einer früheren Version den Namen allow_single_letter_type_parameters.

output_kind

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, dass Code in einem Projekt analysiert werden soll, der diesen Assemblytyp generiert. Mindestens ein Feld der OutputKind-Enumeration

Trennen Sie mehrere Werte durch ein Komma (,)
Alle Ausgabearten CA1515CA2007

erforderliche Modifikatoren

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt die erforderlichen Modifizierer für APIs an, die analysiert werden sollen. Mindestens ein Wert aus der Tabelle unten mit zulässigen Modifizierern

Trennen Sie mehrere Werte durch ein Komma (,)
Hängt von jeweiligen Regel ab CA1802
Zulässiger Modifizierer Zusammenfassung
none Keine Modifiziereranforderung
static oder Shared Muss als static (Shared in Visual Basic) deklariert werden.
const Muss als const deklariert werden.
readonly Muss als readonly deklariert werden.
abstract Muss als abstract deklariert werden.
virtual Muss als virtual deklariert werden.
override Muss als override deklariert werden.
sealed Muss als sealed deklariert werden.
extern Muss als extern deklariert werden.
async Muss als async deklariert werden.

Ausschluss_des_Erweiterungsmethoden_dieses_Parameters

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob die Analyse für den this-Parameter von Erweiterungsmethoden übersprungen werden soll. true
false
false CA1062

null_check_validation_methods

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Namen von Validierungsmethoden für NULL-Überprüfung, die überprüfen, ob die an die Methode übergebenen Argumente nicht NULL sind. Zulässige Methodennamenformate (durch | getrennt):
– Nur Methodenname (schließt alle Methoden mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
– Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen Präfix M:
Keine CA1062

zusätzliche Zeichenformatierungsmethoden

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Namen von zusätzlichen Zeichenfolgen-Formatierungsmethoden Zulässige Methodennamenformate (durch | getrennt):
– Nur Methodenname (schließt alle Methoden mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
– Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen Präfix M:
Keine CA2241

ausgeschlossene_Typnamen_mit_abgeleiteten_Typen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Namen von Typen, sodass der Typ und alle abgeleiteten Typen für die Analyse ausgeschlossen sind Zulässige Symbolnamenformate (durch | getrennt):
– Nur Typname (schließt alle Typen mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
– Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen Präfix T:
Keine CA1001CA1054CA1055CA1056CA1062 CA1068CA1303 CA1304CA1305CA1508CA2000CA2100CA2301CA2302 CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005CA3006CA3007CA3008CA3009 CA3009CA3011CA3012CA5361CA5376CA5377CA5378CA5380 CA5381CA5382CA5383CA5384CA5387CA5388CA5388 CA5389CA5390CA5399CA5400

ausgeschlossene_Symbolnamen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Namen von Symbolen, die für die Analyse ausgeschlossen sind Zulässige Symbolnamenformate (durch | getrennt):
– Nur Symbolname (schließt alle Symbole mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
– Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols. Jeder Symbolname erfordert ein Symbolartpräfix, z. B. das Präfix M: für Methoden, das Präfix T: für Typen und das Präfix N: für Namespaces.
- .ctor für Konstruktoren und .cctor für statische Konstruktoren
Keine CA1001CA1054CA1055CA1056CA1062 CA1068CA1303 CA1304CA1305CA1508CA2000CA2100CA2301CA2302 CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005CA3006CA3007CA3008CA3009 CA3009CA3011CA3012CA5361CA5376CA5377CA5378CA5380 CA5381CA5382CA5383CA5384CA5387CA5388CA5388 CA5389CA5390CA5399CA5400

nicht erlaubte Symbolnamen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Namen von Symbolen, die im Kontext der Analyse unzulässig sind Zulässige Symbolnamenformate (durch | getrennt):
– Nur Symbolname (schließt alle Symbole mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
– Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols. Jeder Symbolname erfordert ein Symbolartpräfix, z. B. das Präfix M: für Methoden, das Präfix T: für Typen und das Präfix N: für Namespaces.
- .ctor für Konstruktoren und .cctor für statische Konstruktoren
Keine CA1031

exclude_ordefault_methods

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Schließt die Methoden FirstOrDefault und LastOrDefault von der Analyse aus. true oder false false CA1826

ignore_internalsvisibleto

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Enthält Assemblys, die in der Analyse mit InternalsVisibleToAttribute gekennzeichnet sind. true oder false true CA1812CA1852

Versuche, zusätzliche Methoden zur Zeichenformatierung automatisch zu bestimmen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Boolesche Option zum Aktivieren der heuristischen Erkennung zusätzlicher Zeichenfolgenformatierungsmethoden.
Eine Methode, die über einen string format-Parameter gefolgt von einem params object[]-Parameter verfügt, wird als Zeichenfolgen-Formatierungsmethode betrachtet.
true oder false false CA2241

unsicher_DllImportSearchPath_bits

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Konfigurieren Sie, welcher Wert von DllImportSearchPath für die Analyse unsicher ist. Ganzzahlige Werte von System.Runtime.InteropServices.DllImportSearchPath 770 (d. h. AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory) CA5393

exclude_aspnet_core_mvc_controllerbase

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Ausschließen von ASP.NET Core MVC ControllerBase bei Berücksichtigung von CSRF true oder false true CA5391

enum_values_prefix_trigger

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt den Schwellenwert zum Auslösen der Benennungsregel für Enumerationswerte an. - AnyEnumValue: Die Regel wird ausgelöst, wenn irgendeiner der Enumerationswerte mit dem Enumerationstypnamen beginnt.
- AllEnumValues: Die Regel wird ausgelöst, wenn alle Enumerationswerte mit dem Enumerationstypnamen beginnen.
- Heuristic: Die Regel wird mit der FxCop-Standardheuristik ausgelöst (d. h. wenn mindestens 75 % der Enumerationswerte mit dem Enumerationstypnamen beginnen).
Heuristic CA1712

indirkte_Grundtypen_ausschließen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Ausschließen indirekter Basistypen true oder false true CA1710

zusätzliche_erforderliche_Suffixe

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt weitere erforderliche Suffixe an. Liste der Typnamen (getrennt durch |) mit dem erforderlichen Suffix (getrennt durch ->). Zulässige Formate für Typnamen:
- Nur Typname (schließt alle Typen mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace)
- Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen T:-Präfix.
Keine CA1710

zusätzliche_erforderliche_generische_Schnittstellen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt weitere erforderliche generische Schnittstellen an. Liste der Schnittstellennamen (getrennt durch |) mit der erforderlichen generischen vollqualifizierten Schnittstelle (getrennt durch ->). Zulässige Schnittstellenformate:
- Nur Schnittstellenname (schließt alle Schnittstellen mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace).
- Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen T:-Präfix.
Keine CA1010

Beispiele:

Optionswert Zusammenfassung
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 Alle Typen, die ISomething implementieren, müssen unabhängig von Ihrem Namespace auch System.Collections.Generic.IEnumerable\`1 implementieren.
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 Alle Typen, die System.Collections.IDictionary implementieren, müssen auch System.Collections.Generic.IDictionary`2 implementieren.

zusätzliche_zur_Vererbung_ausgeschlossene_Symbolnamen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt Typen oder Namespaces an, die von der Vererbungshierarchiestruktur ausgeschlossen werden sollen. Zulässige Formate für Typnamen:
- Typ- oder Namespacename (schließt alle Typen mit dem Namen ein unabhängig vom enthaltenden Typ oder Namespace und alle Typen, deren Namespace den Namen enthält).
- Typ- oder Namespacename, der mit einem Platzhalterzeichen endet (enthält alle Typen, deren Name mit dem angegebenen Namen beginnt, unabhängig vom enthaltenden Typ oder Namespace sowie alle Typen, deren Namespace den Namen enthält).
- Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit dem optionalen Präfix T: für Typen bzw. dem Präfix N: für Namespaces
- Vollqualifizierter Typ- oder Namespacename mit einem optionalen T:-Präfix für Typ oder N:-Präfix für Namespace und Endet mit dem Wildcardsymbol (enthält alle Typen, deren vollqualifizierter Name mit dem angegebenen Typnamen beginnt, oder alle Typen, deren vollqualifizierter Name mit dem angegebenen Namespacenamen beginnt).
N:System.* (Dieser Wert wird immer automatisch zum angegebenen Wert hinzugefügt.) CA1501

analysierte_Symbolarten

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt die zu analysierenden Symboltypen an. Mindestens ein Feld von SymbolKind als durch Trennzeichen getrennte Liste. Namespace, NamedType, Method, Property, Event, Parameter CA1716

use_naming_heuristic

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Konfigurieren Sie, ob Parameter- oder Eigenschaftsnamen, die Text, Message oder Caption enthalten, diese Regel auslösen. true oder false false CA1303

zusätzliche_Nutzung_Ergebnisse_Methoden

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt zusätzliche benutzerdefinierte APIs an, deren Ergebnisse verwendet werden müssen. Namen zusätzlicher Methoden (getrennt durch |). Zulässige Formate für Methodennamen:
- Nur Methodenname (schließt alle Methoden mit dem Namen ein, unabhängig vom enthaltenden Typ oder Namespace).
- Vollqualifizierte Namen im Dokumentations-ID-Format des Symbols mit einem optionalen M:-Präfix.
Keine CA1806

erlaubte_Suffixe

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt zulässige Suffixe an. Liste (getrennt durch |) zulässiger Suffixe. Keine CA1711

Plattform-Analyse auf Vor-Net5-Ziel aktivieren

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob die Analyse für TFMs vor .NET 5 aktiviert werden soll. true oder false false CA1416

Strukturen ausschließen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob Strukturen aus der Analyse ausgeschlossen werden sollen. true oder false false CA1051

zusätzliche_enum_keine_namen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt zusätzliche zulässige Namen für ein Nullwert-Enumerationsfeld an. Liste zusätzlicher Namen (durch | getrennt). Keine CA1008

Aufzählungsmethoden

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt zusätzliche benutzerdefinierte Methoden an, die IEnumerable aufzählen. Vollqualifizierte Namen zusätzlicher Methoden (getrennt durch |). Keine CA1851

linq_chain_methods

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt zusätzliche angepasste LINQ-Kettenmethoden an (d. h. Methoden verwenden ein IEnumerable-Argument und geben eine neue IEnumerable-Instanz zurück) Vollqualifizierte Namen zusätzlicher Methoden (getrennt durch |). Keine CA1851

assume_method_enumerates_parameters

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob davon ausgegangen werden soll, dass benutzerdefinierte Methoden ihre IEnumerable-Parameter aufzählen. true oder false false CA1851

Analyseoptionen für Datenflüsse

Die Optionen in diesem Abschnitt konfigurieren Datenflussanalyseregeln. Die Optionen sind:

Weitere Informationen zur Datenflussanalyse finden Sie unter Schreiben von auf Datenflussanalyse basierenden Analysewerkzeugen.

dispose_analysis_kind

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, welche Pfade für Dispose-Verstöße analysiert werden sollen. - AllPaths: Nachverfolgen und Melden fehlender Dispose-Verstöße in allen Pfaden (Pfade ohne und mit Ausnahmen). Kennzeichnen Sie darüber hinaus auch die Verwendung von nicht empfohlenen Dispose-Mustern, die zu potenziellen Dispose-Verlusten führen können.
- AllPathsOnlyNotDisposed: Nachverfolgen und Melden fehlender Dispose-Verstöße in allen Pfaden (Pfade ohne und mit Ausnahmen). Kennzeichnen Sie nicht die Verwendung von nicht empfohlenen Dispose-Mustern, die zu potenziellen Dispose-Verlusten führen können.
- NonExceptionPaths: Nachverfolgen und Melden fehlender Dispose-Verstöße nur für Programmpfade ohne Ausnahmen. Kennzeichnen Sie darüber hinaus auch die Verwendung von nicht empfohlenen Dispose-Mustern, die zu potenziellen Dispose-Verlusten führen können.
- NonExceptionPathsOnlyNotDisposed: Nachverfolgen und Melden fehlender Dispose-Verstöße nur für Programmpfade ohne Ausnahmen. Kennzeichnen Sie nicht die Verwendung von nicht empfohlenen Dispose-Mustern, die zu potenziellen Dispose-Verlusten führen können.
NonExceptionPaths CA2000

Eigentumsübertragung_beim_Konstruktor_verwerfen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Konfigurieren der Dispose-Besitzübertragung für Argumente, die an den Konstruktoraufruf übergeben werden true oder false false CA2000

übertragen_des_Besitzes_bei_Methodenaufruf

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Konfigurieren der Dispose-Besitzübertragung für verwerfbare Objekte, die als Argumente an Methodenaufrufe übergeben werden true oder false false CA2000

Art der interprozeduralen Analyse

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob interprocedurale Analysen für Quellmethodenaufrufe ausgeführt werden sollen. None, NonContextSensitiveContextSensitive Spezifisch für jede konfigurierbare Regel CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

Max_Interprozedurale_Methodenaufrufkette

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt die maximale Länge der Methodenaufrufkette an, die für interprocedurale Datenanalysen analysiert werden soll. Ganze Zahl ohne Vorzeichen 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_Lambda-oder-Kette-von-lokalen-Funktionsaufrufen

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt die maximale Länge der Lambda- oder lokalen Funktionsaufrufkette an, die für die interprozedurale Datenflussanalyse berücksichtigt wird. Ganze Zahl ohne Vorzeichen 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

Punkte-zur-Analyse-Art

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob PointsToAnalysis durchgeführt werden soll. None, PartialWithoutTrackingFieldsAndPropertiesComplete Spezifisch für jede Regel CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

Kopieranalyse

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Gibt an, ob Kopieranalyse ausgeführt werden soll (Werte- und Referenzkopien nachverfolgen) true oder false true für die meisten Regeln CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

ausreichende_Iterationsanzahl_für_schwachen_KDF_Algorithmus

Beschreibung Zulässige Werte Standardwert Konfigurierbare Regeln
Konfiguriert eine ausreichende Anzahl von Iterationen bei der Verwendung eines schwachen Schlüsselableitungsalgorithmus (KDF). Ganzzahl 1000000 für die meisten Regeln CA1062, CA1303, CA1508, CA2000, CA2100, CA2213