Język i niepotrzebne reguły
Reguły języka w stylu kodu wpływają na sposób użycia różnych konstrukcji języków programowania .NET, na przykład modyfikatorów i nawiasów.
Ta kategoria zawiera również reguły identyfikujące części bazy kodu, które są niepotrzebne i mogą być refaktoryzowane lub usuwane. Obecność niepotrzebnego kodu wskazuje co najmniej jeden z następujących problemów:
- Czytelność: kod, który niepotrzebnie obniża czytelność.
- Łatwość konserwacji: kod, który nie jest już używany po refaktoryzacji i jest niepotrzebnie utrzymywany.
- Wydajność: Niepotrzebne obliczenia, które nie mają skutków ubocznych i prowadzą do niepotrzebnych obciążeń związanych z wydajnością.
- Funkcjonalność: problem funkcjonalny w kodzie, który sprawia, że wymagany kod jest nadmiarowy. Na przykład IDE0060 flaguje nieużywane parametry, w których metoda przypadkowo ignoruje parametr wejściowy.
Reguły języka należą do następujących kategorii:
- Reguły stylu platformy .NET: reguły dotyczące języków C# i Visual Basic. Nazwy opcji dla tych reguł zaczynają się od prefiksu
dotnet_style_
. - Reguły stylu języka C#: reguły specyficzne dla kodu C#. Nazwy opcji dla tych reguł zaczynają się od prefiksu
csharp_style_
. - Reguły stylu języka Visual Basic: reguły specyficzne dla kodu Języka Visual Basic. Nazwy opcji dla tych reguł zaczynają się od prefiksu
visual_basic_style_
.
Format opcji
Wiele reguł języka ma co najmniej jedną skojarzną opcję dostosowywania preferowanego stylu. Na przykład użyj prostej instrukcji "using" (IDE0063) ma skojarzona opcja csharp_prefer_simple_using_statement
, która umożliwia określenie, czy wolisz deklarację using
, czy instrukcję using
. Reguła wymusza wybrane opcje na określonym poziomie, na przykład ostrzeżenie lub błąd.
Opcje reguł języka można określić w pliku konfiguracji o następującym formacie:
option_name = value
(Visual Studio 2019 i nowsze)
lub
option_name = value:severity
Wartość
Dla każdej reguły języka należy określić wartość, która określa, czy lub kiedy wolisz styl. Wiele reguł akceptuje wartość
true
(preferuj ten styl) lubfalse
(nie preferuj tego stylu). Inne reguły akceptują wartości, takie jakwhen_on_single_line
lubnever
.Ważność (opcjonalnie w programie Visual Studio 2019 i nowszych wersjach)
Druga część reguły określa poziom ważności reguły. W wersjach .NET 9 i nowszych ważność jest zawsze przestrzegana — czyli wewnątrz środowisk IDE programowania i podczas kompilacji wiersza polecenia. W programie .NET 8 i starszych wersjach to ustawienie ważności jest przestrzegane tylko w środowiskach IDE programowania, takich jak Visual Studio, a nie podczas kompilacji.
Jeśli używasz zestawu .NET 8 SDK lub starszej wersji i chcesz, aby ważność była przestrzegana w czasie kompilacji, możesz to zrobić na jeden z dwóch sposobów:
- Ustaw właściwość <
9.0
AnalysisLevel> na<AnalysisLevelStyle>
lub wyższą lub napreview
. - Ustaw ważność przy użyciu składni konfiguracji ważności opartej na identyfikatorze reguły dla analizatorów. Składnia przyjmuje postać
dotnet_diagnostic.<rule ID>.severity = <severity>
, na przykładdotnet_diagnostic.IDE0040.severity = warning
. Aby uzyskać więcej informacji, zobacz poziom ważności.
- Ustaw właściwość <
Napiwek
Począwszy od programu Visual Studio 2019, można skonfigurować reguły stylu kodu z menu żarówki Szybkie akcje po wystąpieniu naruszenia stylu.
Indeks reguły
Język i niepotrzebne reguły kodu są dodatkowo podzielone na podkategorie, takie jak preferencje na poziomie wyrażenia, preferencje bloku kodu i preferencje modyfikatora.
using
preferencje dyrektywy- Preferencje bloku kodu
- Elementy członkowskie z wyrażeniem w treści
- Preferencje na poziomie wyrażeń
- Preferencje pól
- Preferencje dotyczące słów kluczowych języka a typów struktur
- Preferencje modyfikatora
- Preferencje nowego wiersza
- Preferencje sprawdzania wartości null
- Preferencje parametrów
- Preferencje nawiasów
- Preferencje dopasowywania wzorców
- Preferencje pomijania
This.
ime.
preferencjevar
preferencje
using
preferencje dyrektywy
Reguły stylu platformy .NET (C# i Visual Basic):
Reguły stylu języka C#:
Preferencje bloku kodu
Reguły stylu języka C#:
- Dodawanie nawiasów klamrowych (IDE0011)
- Użyj prostej instrukcji "using" (IDE0063)
- Preferencje deklaracji przestrzeni nazw (IDE0160, IDE0161)
- Usuwanie niepotrzebnego wyrażenia lambda (IDE0200)
- Konwertowanie na instrukcje najwyższego poziomu (IDE0210)
- Konwertuj na program stylu "Program.Main" (IDE0211)
- Używanie konstruktora podstawowego (IDE0290)
- Preferuj opcję "System.Threading.Lock" (IDE0330)
Składowe z wyrażeniem w treści
Reguły stylu języka C#:
- Używanie treści wyrażenia dla konstruktorów (IDE0021)
- Używanie treści wyrażenia dla metod (IDE0022)
- Używanie treści wyrażenia dla operatorów (IDE0023, IDE0024)
- Używanie treści wyrażenia dla właściwości (IDE0025)
- Używanie treści wyrażenia dla indeksatorów (IDE0026)
- Używanie treści wyrażenia dla metod dostępu (IDE0027)
- Używanie treści wyrażenia dla lambd (IDE0053)
- Używanie treści wyrażenia dla funkcji lokalnych (IDE0061)
Preferencje na poziomie wyrażeń
Reguły stylu platformy .NET (C# i Visual Basic):
- Uprość nazwę (IDE0001)
- Uproszczenie dostępu do składowych (IDE0002)
- Usuń niepotrzebne rzutowanie (IDE0004)
- Dodawanie brakujących przypadków do instrukcji switch (IDE0010)
- Używanie inicjatorów obiektów (IDE0017)
- Używanie inicjatorów kolekcji (IDE0028)
- Sprawdzanie wartości null można uprościć (IDE0029, IDE0030, IDE0270)
- Używanie propagacji wartości null (IDE0031)
- Używanie automatycznie zaimplementowanej właściwości (IDE0032)
- Użyj jawnie podanej nazwy krotki (IDE0033)
- Usuwanie nieochwytnego kodu (IDE0035)
- Użyj wywnioskowanych nazw elementów członkowskich (IDE0037)
- Użyj sprawdzania "is null" (IDE0041)
- Używanie wyrażenia warunkowego do przypisania (IDE0045)
- Użyj wyrażenia warunkowego do zwracania (IDE0046)
- Konwertowanie typu anonimowego na krotkę (IDE0050)
- Usuń nieużywany element członkowski (IDE0051)
- Usuń nieprzeczytany prywatny element członkowski (IDE0052)
- Używanie przypisania złożonego (IDE0054, IDE0074)
- Usuń niepotrzebną wartość wyrażenia (IDE0058)
- Usuwanie niepotrzebnego przypisania wartości (IDE0059)
- Użyj polecenia "System.HashCode.Combine" (IDE0070)
- Upraszczanie interpolacji (IDE0071)
- Uproszczenie wyrażenia warunkowego (IDE0075)
- Konwertowanie
typeof
nanameof
(IDE0082) - Usuwanie niepotrzebnego operatora równości (IDE0100)
- Uproszczenie wyrażenia LINQ (IDE0120)
- Przestrzeń nazw nie jest zgodna ze strukturą folderów (IDE0130)
Reguły stylu języka C#:
- Używanie wyrażenia throw (IDE0016)
- Deklaracja zmiennej wbudowanej (IDE0018)
- Uproszczenie wyrażenia "default" (IDE0034)
- Użyj funkcji lokalnej zamiast lambda (IDE0039)
- Dekonstrukcja zmiennej deklaracji (IDE0042)
- Używanie operatora indeksu (IDE0056)
- Używanie operatora zakresu (IDE0057)
- Dodawanie brakujących przypadków do wyrażenia switch (IDE0072)
- Usuwanie niepotrzebnego operatora pomijania (IDE0080)
- Uproszczenie
new
wyrażenia (IDE0090) - Usuń niepotrzebne odrzucenie (IDE0110)
- Preferuj sprawdzanie typu "null" (IDE0150)
- Użyj krotki, aby zamienić wartości (IDE0180)
- Dodawanie jawnego rzutu w pętli foreach (IDE0220)
- Użyj literału ciągu UTF-8 (IDE0230)
- Dyrektywa dopuszczana do wartości null jest nadmiarowa (IDE0240)
- Dyrektywa dopuszczana do wartości null jest niepotrzebna (IDE0241)
- Używanie wyrażenia kolekcji dla tablicy (IDE0300)
- Użyj wyrażenia kolekcji dla pustego (IDE0301)
- Użyj wyrażenia kolekcji dla alloc stosu (IDE0302)
- Użyj wyrażenia kolekcji dla
Create()
(IDE0303) - Używanie wyrażenia kolekcji dla konstruktora (IDE0304
- Używanie wyrażenia kolekcji dla płynnego (IDE0305)
Reguły stylu języka Visual Basic:
- Usuń
ByVal
(IDE0081) - Używanie dopasowywania wzorca (
IsNot
operator) (IDE0084) - Uproszczenie tworzenia obiektów (IDE0140)
Preferencje pól
Reguły stylu platformy .NET (C# i Visual Basic):
Preferencje dotyczące słów kluczowych języka a typów struktur
Reguły stylu platformy .NET (C# i Visual Basic):
Preferencje dotyczące modyfikatorów
Reguły stylu platformy .NET (C# i Visual Basic):
Reguły stylu języka C#:
- Utwórz statyczną funkcję lokalną (IDE0062)
- Tworzenie pól struktury zapisywalnych (IDE0064)
- Można dokonać struktury "readonly" (IDE0250)
- Element członkowski może być "readonly" (IDE0251)
- Utwórz statyczną funkcję anonimową (IDE0320)
Preferencje nowego wiersza
- Zezwalaj na wiele pustych wierszy (IDE2000)
- Zezwalaj na instrukcje osadzone w tym samym wierszu (IDE2001)
- Zezwalaj na puste wiersze między kolejnymi nawiasami klamrowymi (IDE2002)
- Zezwalaj na instrukcję natychmiast po bloku (IDE2003)
- Zezwalaj na puste wiersze po dwukropku w inicjatorze konstruktora (IDE2004)
- Zezwalaj na pusty wiersz po tokenie w wyrażeniu warunkowym (IDE2005)
- Zezwalaj na pusty wiersz po tokenie w wyrażeniu strzałki (IDE2006)
Preferencje dotyczące sprawdzania wartości null
Reguły stylu języka C#:
Preferencje dotyczące parametrów
Reguły stylu platformy .NET (C# i Visual Basic):
Preferencje dotyczące nawiasów
Reguły stylu platformy .NET (C# i Visual Basic):
Preferencje dopasowywania wzorców
Reguły stylu języka C#:
- Użyj dopasowania wzorca, aby uniknąć sprawdzania wartości "as", a następnie sprawdzania wartości null (IDE0019)
- Użyj dopasowania wzorca, aby uniknąć sprawdzania "is", po którym następuje rzutowanie (IDE0020, IDE0038)
- Używanie wyrażenia przełącznika (IDE0066)
- Używanie dopasowania wzorca (IDE0078 i IDE0260)
- Używanie dopasowywania wzorca (
not
operator) (IDE0083) - Upraszczanie wzorca właściwości (IDE0170)
Preferencje pomijania
Reguły stylu platformy .NET (C# i Visual Basic):
This.
i me.
preferencje
Reguły stylu platformy .NET (C# i Visual Basic):
var
preferencje
Reguły stylu języka C#: