Udostępnij za pośrednictwem


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 dostępne opcje konfiguracji analizatorów kodu. Aby uzyskać więcej informacji, zobacz konfigurację analizatora.

powierzchnia API

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 CA1000CA1002CA1003CA1005CA1008CA1010CA1012CA1021CA1024CA1027CA1028CA1030CA1036CA1040 CA10401041CA1043CA1044CA1045CA1046CA1047CA1051CA1052CA1054CA1055CA1056CA1058CA1062CA1063CA1068CA1070CA1700CA1707CA1708CA1710CA1711CA1714 CA1715 CA1716CA1717CA1720CA1721 CA1721 CA1721CA1725CA1801CA1802CA1815CA1819CA1822CA1859CA2208CA2217CA2225CA2226 CA2231CA2234

wyklucz_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.

wyklucz_typy_parametrów_jednoliterowych

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Czy wykluczyć parametry typu jednoznakowego z reguły, na przykład w SCollection<S> true
false
false CA1715

Uwaga

Ta opcja została nazwana allow_single_letter_type_parameters we wcześniejszej wersji.

rodzaj_wyjścia

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 CA1515CA2007

wymagane_modyfikatory

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

wyklucz_parametr_this_metody_rozszerzenia

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Czy pominąć analizę this parametru metod rozszerzeń true
false
false CA1062

metody_walidacji_sprawdzania_null

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

dodatkowe_metody_formatowania_łańcucha_znaków

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

wykluczone_nazwy_typów_z_typami_pochodnymi

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 CA1001CA1054CA1055 CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005 CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377 CA5377CA53378CA5380 CA5381 CA5382CA5383 CA5384CA5387 CA5388CA5389CA5390 CA5390 CA5400

wykluczone_nazwy_symboli

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 CA1001CA1054CA1055 CA1056CA1062CA1068CA1303CA1304CA1305CA1508CA2000CA2100CA2301CA2302CA2311CA2312CA2321CA2322CA2327CA2328CA2329CA2330CA3001CA3002CA3003 CA3004CA3005 CA3006CA3007CA3008CA3009CA3010CA3011CA3012CA5361CA5376CA5377 CA5377CA53378CA5380 CA5381 CA5382CA5383 CA5384CA5387 CA5388CA5389CA5390 CA5390 CA5400

niedozwolone_nazwy_symboli

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

wyklucz_metody_ordefault

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 CA1812CA1852

Spróbuj automatycznie określić dodatkowe metody formatowania łańcuchów.

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

niebezpieczne_DllImportSearchPath_bity

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

No change necessary, retain as "enum_values_prefix_trigger" to preserve the technical integrity and specificity.

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

wyklucz pośrednie typy bazowe

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Wykluczanie typów baz pośrednich true lub false true CA1710

dodatkowe_wymagane_sufiksy

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

dodatkowe wymagane generyczne interfejsy

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\`1wartość .
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.

dodatkowe_wykluczone_z_symbole_dziedziczenia

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

analizowane_typy_symboli

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

użyj_heurystyki_nazewnictwa

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa, czy parametry lub nazwy właściwości zawierają Text, Messagelub Caption wyzwalają tę regułę true lub false false CA1303

dodatkowe_metody_zastosowania_wyników

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

dozwolone sufiksy

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa dozwolone sufiksy Lista (oddzielona przez |) dozwolonych sufiksów. Brak CA1711

włącz_analizator_platformy_na_przed_net5_cel

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

wyklucz_struktury

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa, czy należy wykluczyć struktury z analizy true lub false false CA1051

dodatkowy_enum_brak_nazw

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

metody wyliczania

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

metody_łańcuchowe_LINQ

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

założyć_metodę_wylicza_parametry

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

Opcje analizy przepływu danych

Opcje w tej sekcji umożliwiają konfigurowanie reguł analizy przepływu danych. Dostępne są następujące opcje:

Aby uzyskać więcej informacji na temat analizy przepływu danych, zobacz Pisanie analizatorów opartych na przepływach danych.

rodzaj analizy usuwania

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

redenicja_przeniesienia_własności_w_konstruktorze

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

przekazanie_własności_przy_wywołaniu_metody

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

rodzaj_analizy_międzyproceduralnej

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa, czy przeprowadzić analizę międzyprocjową dla wywołań metod źródłowych None NonContextSensitive, ContextSensitive specyficzne dla każdej konfigurowalnej reguły CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

max_łańcuch_wywołań_metod_międzyprocedurowych

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa maksymalną długość łańcucha wywołań metody do międzoproceduralnej analizy przepływu danych. Liczba całkowita bez znaku 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

maksymalna_łańcuch_wywołań_lambda_lub_lokalnej_funkcji_międzyproceduralnej

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa maksymalną długość łańcucha wywołań funkcji lambda lub lokalnej do analizy międzyprocedurowego przepływu danych. Liczba całkowita bez znaku 3 CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

rodzaj analizy wskazań

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa, czy wykonać PointsToAnalysis None PartialWithoutTrackingFieldsAndProperties, Complete specyficzne dla każdej reguły CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

analiza_tekstu

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Określa, czy należy wykonać analizę kopiowania (śledzi kopiowanie wartości i referencji) true lub false true dla większości reguł CA1062, CA1303, CA1508, CA2000, CA2100, CA2213

wystarczająca_liczba_iteracji_dla_słabego_algorytmu_KDF

opis Dozwolone wartości Domyślna wartość Konfigurowalne reguły
Konfiguruje wystarczającą liczbę iteracji w przypadku korzystania ze słabego algorytmu funkcji wyprowadzania kluczy (KDF) Liczba całkowita 100000 dla większości reguł CA1062, CA1303, CA1508, CA2000, CA2100, CA2213