Opcje konfiguracji reguły jakości kodu
Reguły jakości kodu mają dodatkowe opcje konfiguracji, oprócz konfigurowania ich ważności. Na przykład każdy analizator jakości kodu można skonfigurować tak, aby dotyczył tylko określonych części bazy kodu. Te opcje można określić, dodając pary klucz-wartość do tego samego EditorConfig pliku, w którym określasz ważność reguły i preferencje edytora ogólnego.
Uwaga
W tym artykule nie opisano szczegółowo sposobu konfigurowania ważności reguły. Opcja .editorconfig ustawiania ważności reguły ma inny prefiks (dotnet_diagnostic
) do opcji opisanych tutaj (dotnet_code_quality
). Ponadto opisane tutaj opcje odnoszą się tylko do reguł jakości kodu, natomiast opcja ważności ma zastosowanie również do reguł stylu kodu. W ramach krótkiej dokumentacji można skonfigurować ważność reguły przy użyciu następującej składni opcji:
dotnet_diagnostic.<rule ID>.severity = <severity value>
Aby uzyskać szczegółowe informacje na temat konfigurowania ważności reguły, zobacz Poziom ważności.
Zakresy opcji
Każdą opcję u rafinacji można skonfigurować dla wszystkich reguł, dla kategorii reguł (na przykład zabezpieczeń lub projektu) lub dla określonej reguły.
Wszystkie reguły
Składnia konfigurowania opcji dla wszystkich reguł jest następująca:
Składnia | Przykład |
---|---|
dotnet_code_quality.<OptionName> = <OptionValue> | dotnet_code_quality.api_surface = public |
Wartości dla <OptionName>
są wymienione w obszarze Opcje.
Kategoria reguł
Składnia konfigurowania opcji dla kategorii reguł jest następująca:
Składnia | Przykład |
---|---|
dotnet_code_quality.<RuleCategory>.<OptionName> = OptionValue | dotnet_code_quality.Naming.api_surface = public |
W poniższej tabeli wymieniono dostępne wartości dla elementu <RuleCategory>
.
Design
Documentation
Globalization
Interoperability
Maintainability
Naming
Performance
SingleFile
Reliability
Security
Usage
Określona reguła
Składnia konfigurowania opcji dla określonej reguły jest następująca:
Składnia | Przykład |
---|---|
dotnet_code_quality.<RuleId>.<OptionName> = <OptionValue> | dotnet_code_quality.CA1040.api_surface = public |
Opcje
W tej sekcji wymieniono niektóre dostępne opcje. Aby wyświetlić pełną listę dostępnych opcji, zobacz Konfiguracja analizatora.
- api_surface
- exclude_async_void_methods
- exclude_single_letter_type_parameters
- output_kind
- required_modifiers
- exclude_extension_method_this_parameter
- null_check_validation_methods
- additional_string_formatting_methods
- excluded_type_names_with_derived_types
- excluded_symbol_names
- disallowed_symbol_names
- exclude_ordefault_methods
- ignore_internalsvisibleto
- try_determine_additional_string_formatting_methods_automatically
- unsafe_DllImportSearchPath_bits
- exclude_aspnet_core_mvc_controllerbase
- dispose_analysis_kind
- dispose_ownership_transfer_at_constructor
- dispose_ownership_transfer_at_method_call
- enum_values_prefix_trigger
- exclude_indirect_base_types
- additional_required_suffixes
- additional_required_generic_interfaces
- additional_inheritance_excluded_symbol_names
- analyzed_symbol_kinds
- use_naming_heuristic
- additional_use_results_methods
- allowed_suffixes
- enable_platform_analyzer_on_pre_net5_target
- exclude_structs
- additional_enum_none_names
- enumeration_methods
- linq_chain_methods
- assume_method_enumerates_parameters
api_surface
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Która część powierzchni interfejsu API do przeanalizowania | public (dotyczy interfejsów public API i protected )internal lub friend (dotyczy internal interfejsów API i private protected )private (dotyczy private Interfejsy API)all (dotyczy wszystkich interfejsów API)Oddzielanie wielu wartości przecinkami (,) |
public |
CA1000 CA1002 CA1003 CA1005 CA1008 CA1010 CA1012 CA1021 CA1024 CA1027 CA1027 CA1028 CA1030 CA1036 CA10361040 CA1041 CA1043 CA10444 CA1045 CA1046 CA1047 CA1051 CA1052 CA1054 CA10555 CA1056 CA1058 CA1062 CA1063 CA1068 CA1070 CA1700 CA1707 CA1708 CA1710 CA1711 CA1714 CA1715 CA1716 CA1716 CA171717 CA1720 CA1721 CA1725 CA1801 CA1802 CA1815 CA1819 CA1822 CA1859 CA2208 CA2217 CA22225 CA2226 CA2231 CA2234 |
exclude_async_void_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Czy ignorować metody asynchroniczne, które nie zwracają wartości | true false |
false |
CA2007 |
Uwaga
Ta opcja została nazwana skip_async_void_methods
we wcześniejszej wersji.
exclude_single_letter_type_parameters
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Czy wykluczyć parametry typu jednoznakowego z reguły, na przykład w S Collection<S> |
true false |
false |
CA1715 |
Uwaga
Ta opcja została nazwana allow_single_letter_type_parameters
we wcześniejszej wersji.
output_kind
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa, że kod w projekcie, który generuje tego typu zestaw, powinien być analizowany | Co najmniej jedno pole OutputKind wyliczenia Oddzielanie wielu wartości przecinkami (,) |
Wszystkie rodzaje danych wyjściowych | CA2007 |
required_modifiers
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa wymagane modyfikatory dla interfejsów API, które powinny być analizowane | Co najmniej jedna wartość z poniższej tabeli dozwolonych modyfikatorów Oddzielanie wielu wartości przecinkami (,) |
Zależy od każdej reguły | CA1802 |
Dozwolony modyfikator | Podsumowanie |
---|---|
none |
Brak wymagania modyfikatora |
static lub Shared |
Musi być zadeklarowany jako static (Shared w Visual Basic) |
const |
Należy zadeklarować jako const |
readonly |
Należy zadeklarować jako readonly |
abstract |
Należy zadeklarować jako abstract |
virtual |
Należy zadeklarować jako virtual |
override |
Należy zadeklarować jako override |
sealed |
Należy zadeklarować jako sealed |
extern |
Należy zadeklarować jako extern |
async |
Należy zadeklarować jako async |
exclude_extension_method_this_parameter
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Czy pominąć analizę this parametru metod rozszerzeń |
true false |
false |
CA1062 |
null_check_validation_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Nazwy metod weryfikacji sprawdzania wartości null, które weryfikują, czy argumenty przekazywane do metody są inne niż null | Dozwolone formaty nazw metod (oddzielone |): - Tylko nazwa metody (zawiera wszystkie metody o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw) - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym M: prefiksem |
Brak | CA1062 |
additional_string_formatting_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Nazwy dodatkowych metod formatowania ciągów | Dozwolone formaty nazw metod (oddzielone |): - Tylko nazwa metody (zawiera wszystkie metody o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw) - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym M: prefiksem |
Brak | CA2241 |
excluded_type_names_with_derived_types
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Nazwy typów, tak aby typ i wszystkie jego typy pochodne zostały wykluczone do analizy | Dozwolone formaty nazw symboli (oddzielone |): - Nazwa typu (zawiera tylko wszystkie typy o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw) - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym T: prefiksem |
Brak | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5377 CA53378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5390 CA5400 |
excluded_symbol_names
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Nazwy symboli, które są wykluczone do analizy | Dozwolone formaty nazw symboli (oddzielone |): - Tylko nazwa symboli (zawiera wszystkie symbole o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw) - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu. Każda nazwa symboli wymaga prefiksu typu symboli, takiego jak M: prefiks dla metod, T: prefiks dla typów i N: prefiks dla przestrzeni nazw.- .ctor dla konstruktorów i .cctor konstruktorów statycznych |
Brak | CA1001 CA1054 CA1055 CA1056 CA1062 CA1068 CA1303 CA1304 CA1305 CA1508 CA2000 CA2100 CA2301 CA2302 CA2311 CA2312 CA2321 CA2322 CA2327 CA2328 CA2329 CA2330 CA3001 CA3002 CA3003 CA3004 CA3005 CA3006 CA3007 CA3008 CA3009 CA3010 CA3011 CA3012 CA5361 CA5376 CA5377 CA5377 CA53378 CA5380 CA5381 CA5382 CA5383 CA5384 CA5387 CA5388 CA5389 CA5390 CA5390 CA5400 |
disallowed_symbol_names
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Nazwy symboli, które są niedozwolone w kontekście analizy | Dozwolone formaty nazw symboli (oddzielone |): - Tylko nazwa symboli (zawiera wszystkie symbole o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw) - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu. Każda nazwa symboli wymaga prefiksu typu symboli, takiego jak M: prefiks dla metod, T: prefiks dla typów i N: prefiks dla przestrzeni nazw.- .ctor dla konstruktorów i .cctor konstruktorów statycznych |
Brak | CA1031 |
exclude_ordefault_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
FirstOrDefault Wyklucza metody i LastOrDefault z analizy. |
true lub false |
false |
CA1826 |
ignore_internalsvisibleto
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Zawiera zestawy oznaczone InternalsVisibleToAttribute w analizie. | true lub false |
true |
CA1812 CA1852 |
try_determine_additional_string_formatting_methods_automatically
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Opcja logiczna umożliwiająca wykrywanie heurystyczne dodatkowych metod formatowania ciągów. Metoda jest uznawana za metodę formatowania ciągów, jeśli ma string format parametr, po którym następuje params object[] parametr. |
true lub false |
false |
CA2241 |
unsafe_DllImportSearchPath_bits
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Konfigurowanie wartości niebezpiecznej DllImportSearchPath dla analizy |
Wartości całkowite System.Runtime.InteropServices.DllImportSearchPath |
770 (czyli AssemblyDirectory | UseDllDirectoryForDependencies | ApplicationDirectory ) |
CA5393 |
exclude_aspnet_core_mvc_controllerbase
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Wykluczanie ASP.NET Core MVC ControllerBase podczas rozważania csrf | true lub false |
true |
CA5391 |
dispose_analysis_kind
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa ścieżki do analizy pod kątem naruszeń usuwania | - AllPaths — Śledzenie i zgłaszanie brakujących naruszeń usuwania we wszystkich ścieżkach (ścieżki wyjątków i wyjątków). Ponadto flaguje również użycie nielecanych wzorców usuwania, które mogą powodować potencjalne wycieki usuwania.- AllPathsOnlyNotDisposed — Śledzenie i zgłaszanie brakujących naruszeń usuwania we wszystkich ścieżkach (ścieżki wyjątków i wyjątków). Nie flaguj stosowania niezalecanych wzorców usuwania, które mogą powodować potencjalne wycieki usuwania.- NonExceptionPaths — Śledzenie i zgłaszanie brakujących naruszeń usuwania tylko w ścieżkach programów innych niż wyjątki. Ponadto flaguje również użycie nielecanych wzorców usuwania, które mogą powodować potencjalne wycieki usuwania.- NonExceptionPathsOnlyNotDisposed — Śledzenie i zgłaszanie brakujących naruszeń usuwania tylko w ścieżkach programów innych niż wyjątki. Nie flaguj stosowania niezalecanych wzorców usuwania, które mogą powodować potencjalne wycieki usuwania. |
NonExceptionPaths |
CA2000 |
dispose_ownership_transfer_at_constructor
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Konfigurowanie przenoszenia własności usuwania dla argumentów przekazywanych do wywołania konstruktora | true lub false |
false |
CA2000 |
dispose_ownership_transfer_at_method_call
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Konfigurowanie przenoszenia własności usuwania dla jednorazowych obiektów przekazywanych jako argumenty do wywołań metod | true lub false |
false |
CA2000 |
enum_values_prefix_trigger
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa próg wyzwalający regułę nazewnictwa wartości wyliczeniowych | - AnyEnumValue — Reguła jest wyzwalana, jeśli którakolwiek z wartości wyliczenia zaczyna się od nazwy typu wyliczenia.- AllEnumValues — Reguła jest wyzwalana, jeśli wszystkie wartości wyliczenia zaczynają się od nazwy typu wyliczenia.- Heuristic — Reguła jest wyzwalana przy użyciu domyślnej heurystyki FxCop (czyli wtedy, gdy co najmniej 75% wartości wyliczenia zaczyna się od nazwy typu wyliczenia). |
Heuristic |
CA1712 |
exclude_indirect_base_types
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Wykluczanie typów baz pośrednich | true lub false |
true |
CA1710 |
additional_required_suffixes
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe wymagane sufiksy | Lista nazw typów (oddzielonych przez |) z ich wymaganym sufiksem (oddzielone przez -> ). Dozwolone formaty nazw typów:— tylko nazwa typu (obejmuje wszystkie typy o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw). - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym T: prefiksem. |
Brak | CA1710 |
additional_required_generic_interfaces
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe wymagane interfejsy ogólne | Lista nazw interfejsów (oddzielonych przez |) ich wymaganym w pełni kwalifikowanym interfejsem ogólnym (oddzielonym przez -> ). Dozwolone formaty interfejsu:— nazwa interfejsu (zawiera tylko wszystkie interfejsy o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw). - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym T: prefiksem. |
Brak | CA1010 |
Przykłady:
Wartość opcji | Podsumowanie |
---|---|
dotnet_code_quality.CA1010.additional_required_generic_interfaces = ISomething->System.Collections.Generic.IEnumerable`1 |
Wszystkie typy implementowane ISomething niezależnie od jej przestrzeni nazw mają również zaimplementować System.Collections.Generic.IEnumerable\`1 wartość . |
dotnet_code_quality.CA1010.additional_required_generic_interfaces = T:System.Collections.IDictionary->T:System.Collections.Generic.IDictionary`2 |
Oczekuje się również, że wszystkie typy implementują System.Collections.IDictionary funkcję System.Collections.Generic.IDictionary`2 . |
additional_inheritance_excluded_symbol_names
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa typy lub przestrzenie nazw do wykluczenia z drzewa hierarchii dziedziczenia | Dozwolone formaty nazw typów: — nazwa typu lub przestrzeni nazw (zawiera wszystkie typy o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw oraz wszystkich typów, których przestrzeń nazw zawiera nazwę). - Nazwa typu lub przestrzeni nazw kończąca się symbolem wieloznacznymi (zawiera wszystkie typy, których nazwa zaczyna się od podanej nazwy, niezależnie od typu zawierającego typ lub przestrzeń nazw, oraz wszystkich typów, których przestrzeń nazw zawiera nazwę). - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym T: prefiksem dla typów lub N: prefiksu dla przestrzeni nazw.- W pełni kwalifikowana nazwa typu lub przestrzeni nazw z opcjonalnym T: prefiksem dla typu lub N: prefiksu przestrzeni nazw i kończąca się symbolem wieloznacznymi (zawiera wszystkie typy, których w pełni kwalifikowana nazwa zaczyna się od podanej nazwy typu lub wszystkich typów, których w pełni kwalifikowana nazwa zaczyna się od danej nazwy przestrzeni nazw). |
N:System.* (Ta wartość jest zawsze automatycznie dodawana do podanej wartości) |
CA1501 |
analyzed_symbol_kinds
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa rodzaje symboli do przeanalizowania | Co najmniej jedno pole SymbolKind listy rozdzielone przecinkami. | Namespace, NamedType, Method, Property, Event, Parameter |
CA1716 |
use_naming_heuristic
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa, czy parametry lub nazwy właściwości zawierają Text , Message lub Caption wyzwalają tę regułę |
true lub false |
false |
CA1303 |
additional_use_results_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe niestandardowe interfejsy API, których wyniki muszą być używane | Nazwy dodatkowych metod (oddzielone |). Dozwolone formaty nazw metod: — nazwa metody (zawiera tylko wszystkie metody o nazwie, niezależnie od typu zawierającego lub przestrzeni nazw). - W pełni kwalifikowane nazwy w formacie identyfikatora dokumentacji symbolu z opcjonalnym M: prefiksem. |
Brak | CA1806 |
allowed_suffixes
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dozwolone sufiksy | Lista (oddzielona przez |) dozwolonych sufiksów. | Brak | CA1711 |
enable_platform_analyzer_on_pre_net5_target
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa, czy włączyć analizę dla serwera TFM przed platformą .NET 5 | true lub false |
false |
CA1416 |
exclude_structs
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa, czy należy wykluczyć struktury z analizy | true lub false |
false |
CA1051 |
additional_enum_none_names
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe dozwolone nazwy dla pola wyliczania zerowej wartości | Lista dodatkowych nazw (oddzielona |). | Brak | CA1008 |
enumeration_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe metody niestandardowe, które wyliczają element IEnumerable | W pełni kwalifikowane nazwy dodatkowych metod (oddzielone przez |). | Brak | CA1851 |
linq_chain_methods
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa dodatkowe dostosowane metody łańcucha LINQ (czyli metody przyjmują IEnumerable argument i zwracają nowe IEnumerable wystąpienie) |
W pełni kwalifikowane nazwy dodatkowych metod (oddzielone przez |). | Brak | CA1851 |
assume_method_enumerates_parameters
opis | Dozwolone wartości | Domyślna wartość | Konfigurowalne reguły |
---|---|---|---|
Określa, czy zakładać, że dostosowane metody wyliczają swoje IEnumerable parametry |
true lub false |
false |
CA1851 |