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.

Note

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 scopes

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.

All rules

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

Syntax Example
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 Example
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

Specific rule

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

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

Options

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

api_surface

Description Allowable values Default value Configurable rules
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 CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040CA1041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714CA1715CA1716CA1717CA1720CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226CA2231CA2234

exclude_async_void_methods

Description Allowable values Default value Configurable rules
Gibt an, ob asynchrone Methoden ignoriert werden sollen, die keinen Wert zurückgeben. true
false
false CA2007

Note

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

exclude_single_letter_type_parameters

Description Allowable values Default value Configurable rules
Gibt an, ob Typparameter mit einem Zeichen aus der Regel ausgeschlossen werden sollen, z. B. S in Collection<S>. true
false
false CA1715

Note

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

output_kind

Description Allowable values Default value Configurable rules
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 CA1515, CA1516, CA2007

required_modifiers

Description Allowable values Default value Configurable rules
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
Allowed Modifier Summary
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.

exclude_extension_method_this_parameter

Description Allowable values Default value Configurable rules
Gibt an, ob die Analyse für den this-Parameter von Erweiterungsmethoden übersprungen werden soll. true
false
false CA1062

null_check_validation_methods

Description Allowable values Default value Configurable rules
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:
None CA1062

additional_string_formatting_methods

Description Allowable values Default value Configurable rules
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:
None CA2241

excluded_type_names_with_derived_types

Description Allowable values Default value Configurable rules
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:
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

excluded_symbol_names

Description Allowable values Default value Configurable rules
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
None CA1001CA1054CA1055CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003CA3004CA3005CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377CA5378CA5380CA5381CA5382CA5383CA5384CA5387CA5388CA5389CA5390CA5399CA5400

disallowed_symbol_names

Description Allowable values Default value Configurable rules
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
None CA1031

exclude_ordefault_methods

Description Allowable values Default value Configurable rules
Schließt die Methoden FirstOrDefault und LastOrDefault von der Analyse aus. true oder false false CA1826

ignore_internalsvisibleto

Description Allowable values Default value Configurable rules
Enthält Assemblys, die in der Analyse mit InternalsVisibleToAttribute gekennzeichnet sind. true oder false true CA1812CA1852

try_determine_additional_string_formatting_methods_automatically

Description Allowable values Default value Configurable rules
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

unsafe_DllImportSearchPath_bits

Description Allowable values Default value Configurable rules
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

Description Allowable values Default value Configurable rules
Ausschließen von ASP.NET Core MVC ControllerBase bei Berücksichtigung von CSRF true oder false true CA5391

enum_values_prefix_trigger

Description Allowable values Default value Configurable rules
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

exclude_indirect_base_types

Description Allowable values Default value Configurable rules
Ausschließen indirekter Basistypen true oder false true CA1710

additional_required_suffixes

Description Allowable values Default value Configurable rules
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.
None CA1710

additional_required_generic_interfaces

Description Allowable values Default value Configurable rules
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.
None CA1010

Examples:

Option Value Summary
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.

additional_inheritance_excluded_symbol_names

Description Allowable values Default value Configurable rules
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

analyzed_symbol_kinds

Description Allowable values Default value Configurable rules
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

Description Allowable values Default value Configurable rules
Konfigurieren Sie, ob Parameter- oder Eigenschaftsnamen, die Text, Message oder Caption enthalten, diese Regel auslösen. true oder false false CA1303

additional_use_results_methods

Description Allowable values Default value Configurable rules
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.
None CA1806

allowed_suffixes

Description Allowable values Default value Configurable rules
Gibt zulässige Suffixe an. Liste (getrennt durch |) zulässiger Suffixe. None CA1711

enable_platform_analyzer_on_pre_net5_target

Description Allowable values Default value Configurable rules
Gibt an, ob die Analyse für TFMs vor .NET 5 aktiviert werden soll. true oder false false CA1416

exclude_structs

Description Allowable values Default value Configurable rules
Gibt an, ob Strukturen aus der Analyse ausgeschlossen werden sollen. true oder false false CA1051

additional_enum_none_names

Description Allowable values Default value Configurable rules
Gibt zusätzliche zulässige Namen für ein Nullwert-Enumerationsfeld an. Liste zusätzlicher Namen (durch | getrennt). None CA1008

enumeration_methods

Description Allowable values Default value Configurable rules
Gibt zusätzliche benutzerdefinierte Methoden an, die IEnumerable aufzählen. Vollqualifizierte Namen zusätzlicher Methoden (getrennt durch |). None CA1851

linq_chain_methods

Description Allowable values Default value Configurable rules
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 |). None CA1851

assume_method_enumerates_parameters

Description Allowable values Default value Configurable rules
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

Description Allowable values Default value Configurable rules
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

dispose_ownership_transfer_at_constructor

Description Allowable values Default value Configurable rules
Konfigurieren der Dispose-Besitzübertragung für Argumente, die an den Konstruktoraufruf übergeben werden true oder false false CA2000

dispose_ownership_transfer_at_method_call

Description Allowable values Default value Configurable rules
Konfigurieren der Dispose-Besitzübertragung für verwerfbare Objekte, die als Argumente an Methodenaufrufe übergeben werden true oder false false CA2000

interprocedural_analysis_kind

Description Allowable values Default value Configurable rules
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_interprocedural_method_call_chain

Description Allowable values Default value Configurable rules
Gibt die maximale Länge der Methodenaufrufkette an, die für interprocedurale Datenanalysen analysiert werden soll. Unsigned integer 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_interprocedural_lambda_or_local_function_call_chain

Description Allowable values Default value Configurable rules
Gibt die maximale Länge der Lambda- oder lokalen Funktionsaufrufkette an, die für die interprozedurale Datenflussanalyse berücksichtigt wird. Unsigned integer 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

points_to_analysis_kind

Description Allowable values Default value Configurable rules
Gibt an, ob PointsToAnalysis durchgeführt werden soll. None, PartialWithoutTrackingFieldsAndPropertiesComplete Spezifisch für jede Regel CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

copy_analysis

Description Allowable values Default value Configurable rules
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

sufficient_IterationCount_for_weak_KDF_algorithm

Description Allowable values Default value Configurable rules
Konfiguriert eine ausreichende Anzahl von Iterationen bei der Verwendung eines schwachen Schlüsselableitungsalgorithmus (KDF). Integer 1000000 für die meisten Regeln CA1062, CA1303, CA1508, CA2000, CA2100, CA2213