Sprache und unnötige Regeln
Sprachregeln für die Codeformatierung wirken sich darauf aus, wie verschiedene Konstrukte von .NET-Programmiersprachen, z. B. Modifizierer und Klammern, verwendet werden.
Diese Kategorie beinhaltet auch Regeln, die verschiedene Teile der Codebasis identifiziert, die unnötig sind und neu faktoriert oder entfernt werden können. Das Vorhandensein von unnötigem Code weist auf eines der folgenden Probleme hin:
- Lesbarkeit: Code, der eine unnötige Verringerung der Lesbarkeit verursacht.
- Wartbarkeit: Code, der nach dem Refactoring nicht mehr verwendet wird und unnötig verwaltet wird.
- Leistung: unnötige Berechnung, die keine Nebenwirkungen hat und zu unnötigem Leistungsaufwand führt.
- Funktionalität: Funktionales Problem im Code, das dazu führt, dass erforderlicher Code redundant wird. IDE0060 kennzeichnet beispielsweise nicht verwendete Parameter, bei denen die Methode versehentlich einen Eingabeparameter ignoriert.
Die Sprachregeln werden in die folgenden Kategorien eingeteilt:
- .NET-Formatierungsregeln: Regeln, die sowohl für C# als auch für Visual Basic gelten. Die Optionsnamen für diese Regeln beginnen mit dem Präfix
dotnet_style_
. - C#-Formatregeln: Regeln, die speziell für C#-Code gelten. Die Optionsnamen für diese Regeln beginnen mit dem Präfix
csharp_style_
. - Visual Basic-Formatregeln: Regeln, die speziell für Visual Basic-Code gelten. Die Optionsnamen für diese Regeln beginnen mit dem Präfix
visual_basic_style_
.
Optionsformat
Viele der Sprachregeln verfügen über eine oder mehrere zugeordnete Optionen zum Anpassen des bevorzugten Stils. Verwenden einer einfachen "using"-Anweisung (IDE0063) verfügt beispielsweise über die zugehörige Option csharp_prefer_simple_using_statement
, mit der Sie definieren können, ob Sie eine using
Deklaration oder eine using
Anweisung bevorzugen. Die Regel erzwingt, welche Optionen Sie auf einer angegebenen Ebene auswählen, z. B. Warnung oder Fehler.
Optionen für Sprachregeln können in einer Konfigurationsdatei im folgenden Format angegeben werden:
option_name = value
(Visual Studio 2019 und höher)
oder
option_name = value:severity
Wert
Für jede Sprachregel geben Sie einen Wert an, der definiert, ob oder wann Sie das Format bevorzugen. Viele Regeln akzeptieren den Wert
true
(dieses Format bevorzugen) oderfalse
(dieses Format nicht bevorzugen). Andere Regeln akzeptieren Werte wiewhen_on_single_line
odernever
.Schweregrad (optional in Visual Studio 2019 und höheren Versionen)
Der zweite Teil der Regel gibt den Schweregrad für die Regel an. In .NET 9 und höheren Versionen wird der Schweregrad immer beachtet – d. h. innerhalb von Entwicklungs-IDEs und während Befehlszeilenbuilds. In .NET 8 und früheren Versionen wird diese Schweregradeinstellung nur innerhalb von Entwicklungs-IDEs wie Visual Studio und nicht während des Builds berücksichtigt.
Wenn Sie das .NET 8 SDK oder eine frühere Version verwenden und den Schweregrad zur Buildzeit beachten möchten, können Sie dies auf zwei Arten tun:
- Legen Sie den AnalysisLevel oder die Eigenschaft auf
9.0
oder höher oder aufpreview
.<<AnalysisLevelStyle>
> - Legen Sie den Schweregrad mithilfe der Regel-ID-basierten Schweregradkonfigurationssyntax für Analysegeräte fest. Die Syntax sieht wie folgt aus:
dotnet_diagnostic.<rule ID>.severity = <severity>
. Beispiel:dotnet_diagnostic.IDE0040.severity = warning
. Weitere Informationen finden Sie unter Schweregrad.
- Legen Sie den AnalysisLevel oder die Eigenschaft auf
Tipp
Ab Visual Studio 2019 können Sie Regeln für Codeformate über das Fehlerbehebungsmenü Schnellaktionen konfigurieren, wenn ein Formatverstoß auftritt.
Regelindex
Sprach- und unnötige Coderegeln werden weiter in Unterkategorien unterteilt, z. B. Einstellungen auf Ausdrucksebene, Codeblockeinstellungen und Modifizierereinstellungen.
using
Anweisungseinstellungen- Codeblockeinstellungen
- Ausdruckskörpermember
- Einstellungen auf Ausdrucksebene
- Feldeinstellungen
- Einstellungen für Sprach- Schlüsselwort und Frameworktypen
- Einstellungen von Modifizierern
- Einstellungen für neue Zeilen
- Einstellungen für die NULL-Überprüfung
- Parametereinstellungen
- Einstellungen für Klammern
- Einstellungen für den Musterabgleich
- Unterdrückungseinstellungen
This.
undme.
Einstellungenvar
Einstellungen
using
Anweisungseinstellungen
.NET-Stilregeln (C# und Visual Basic):
C#-Formatregeln:
Codeblockeinstellungen
C#-Formatregeln:
- Geschweifte Klammern hinzufügen (IDE0011)
- Einfache using-Anweisung verwenden (IDE0063)
- Namespacedeklarationseinstellungen (IDE0160, IDE0161)
- Unnötigen Lambdaausdruck entfernen“ (IDE0200)
- In Anweisungen der obersten Ebene konvertieren (IDE0210)
- Zu „Programm.Main“-Formatprogramm konvertieren (IDE0211)
- Verwenden des primären Konstruktors (IDE0290)
- Bevorzugen Sie "System.Threading.Lock" (IDE0330)
Ausdruckskörpermember
C#-Formatregeln:
- Ausdruckskörper für Konstruktoren verwenden (IDE0021)
- Ausdruckskörper für Methoden verwenden (IDE0022)
- Verwenden des Ausdruckstexts für Operatoren (IDE0023, IDE0024)
- Ausdruckskörper für Eigenschaften verwenden (IDE0025)
- Ausdruckskörper für Indexer verwenden (IDE0026)
- Ausdruckskörper für Zugriffsmethoden verwenden (IDE0027)
- Ausdruckskörper für Lambdaausdrücke verwenden (IDE0053)
- Ausdruckskörper für lokale Funktionen verwenden (IDE0061)
Einstellungen auf Ausdrucksebene
.NET-Stilregeln (C# und Visual Basic):
- Namen vereinfachen (IDE0001)
- Memberzugriff vereinfachen (IDE0002)
- Entfernen nicht benötigter Umwandlungen (IDE0004)
- Fehlende Fälle zu switch-Anweisung hinzufügen (IDE0010)
- Objektinitialisierer verwenden (IDE0017)
- Auflistungsinitialisierer verwenden (IDE0028)
- Überprüfung auf Nullwerte kann vereinfacht werden (IDE0029, IDE0030, IDE0270)
- NULL-Weitergabe verwenden (IDE0031)
- Automatisch implementierte Eigenschaft verwenden (IDE0032)
- Explizit angegebenen Tupelelementnamen verwenden (IDE0033)
- Nicht erreichbaren Code entfernen (IDE0035)
- Abgeleitete Membernamen verwenden (IDE0037)
- „is null“-Überprüfung verwenden (IDE0041)
- Bedingten Ausdruck für die Zuweisung verwenden (IDE0045)
- Bedingten Ausdruck für die Rückgabe verwenden (IDE0046)
- Anonymen Typ in Tupel konvertieren (IDE0050)
- Nicht verwendete private Member entfernen (IDE0051)
- Ungelesene private Member entfernen (IDE0052)
- Verbundzuweisung verwenden (IDE0054, IDE0074)
- Unnötigen Ausdruckswert entfernen (IDE0058)
- Unnötige Wertzuweisung entfernen (IDE0059)
- 'System.HashCode.Combine' verwenden (IDE0070)
- Interpolation vereinfachen (IDE0071)
- Bedingten Ausdruck vereinfachen (IDE0075)
typeof
innameof
konvertieren (IDE0082)- Entfernen nicht benötigter Gleichheitsoperatoren (IDE0100)
- LINQ-Ausdruck vereinfachen (IDE0120)
- Namespace entspricht nicht der Ordnerstruktur (IDE0130)
C#-Formatregeln:
- throw-Ausdruck verwenden (IDE0016)
- Inlinevariablendeklaration (IDE0018)
- "default"-Ausdruck vereinfachen (IDE0034)
- Lokale Funktion anstelle von Lambda verwenden (IDE0039)
- Variablendeklaration dekonstruieren (IDE0042)
- Indexoperator verwenden (IDE0056)
- Bereichsoperator verwenden (IDE0057)
- Fehlende Fälle zu switch-Ausdruck hinzufügen (IDE0072)
- Unnötigen Unterdrückungsoperator entfernen (IDE0080)
new
-Ausdruck vereinfachen (IDE0090)- Nicht benötigte Ausschussvariable entfernen (IDE0110)
- „NULL“-Überprüfung vor Typüberprüfung bevorzugen (IDE0150)
- Tupel zum Tauschen von Werten verwenden (IDE0180)
- Hinzufügen eines expliziten Cast in foreach-Schleife (IDE0220)
- Verwenden des UTF-8-Zeichenfolgenliterals (IDE0230)
- Nullable-Direktive ist überflüssig (IDE0240)
- Nullable-Anweisung ist unnötig (IDE0241)
- Sammlungsausdruck für Array verwenden (IDE0300)
- Sammlungsausdruck für „Empty“ verwenden (IDE0301)
- Sammlungsausdruck für „stack alloc“ verwenden (IDE0302)
- Sammlungsausdruck für
Create()
verwenden (IDE0303) - Sammlungsausdruck für Generator verwenden (IDE0304)
- Sammlungsausdruck für „fluent“ verwenden (IDE0305)
Visual Basic-Formatregeln:
- Entfernen von
ByVal
(IDE0081) - Musterabgleich verwenden (
IsNot
-Operator) (IDE0084) - Vereinfachen der Objekterstellung (IDE0140)
Einstellungen für Felder
.NET-Stilregeln (C# und Visual Basic):
Einstellungen für Sprach- Schlüsselwort und Frameworktypen
.NET-Stilregeln (C# und Visual Basic):
Einstellungen von Modifizierern
.NET-Stilregeln (C# und Visual Basic):
C#-Formatregeln:
- Lokale Funktion als „static“ festlegen (IDE0062)
- Beschreibbare Strukturfelder erstellen (IDE0064)
- Struktur kann „readonly“ gemacht werden (IDE0250)
- Member kann als „readonly“ festgelegt werden (IDE0251)
- Anonyme Funktion statisch machen (IDE0320)
Einstellungen für neue Zeilen
- Mehrere Leerzeilen zulassen (IDE2000)
- Eingebettete Anweisungen in derselben Zeile zulassen (IDE2001)
- Leerzeilen zwischen aufeinanderfolgenden Klammern zulassen (IDE2002)
- Anweisung direkt nach Block zulassen (IDE2003)
- Leere Zeile nach Doppelpunkt in Konstruktorinitialisierer zulassen (IDE2004)
- Leerzeile nach Token im bedingten Ausdruck zulassen (IDE2005)
- Leere Zeile nach Token im Pfeilausdruck zulassen (IDE2006)
Einstellungen für die NULL-Überprüfung
C#-Formatregeln:
Parametereinstellungen
.NET-Stilregeln (C# und Visual Basic):
Einstellungen für Klammern
.NET-Stilregeln (C# und Visual Basic):
Einstellungen für den Musterabgleich
C#-Formatregeln:
- Musterabgleich verwenden, um „as“ gefolgt von einer NULL-Überprüfung zu vermeiden (IDE0019)
- Verwenden des Musterabgleichs zur Vermeidung einer Überprüfung vom Typ „is“ gefolgt von einer Umwandlung (IDE0020, IDE0038)
- Verwenden des switch-Ausdrucks (IDE0066)
- Verwenden des Musterabgleichs (IDE0078 und IDE0260)
- Musterabgleich verwenden (
not
-Operator) (IDE0083) - Eigenschaftenmuster vereinfachen (IDE0170)
Unterdrückungseinstellungen
.NET-Stilregeln (C# und Visual Basic):
This.
und me.
Einstellungen
.NET-Stilregeln (C# und Visual Basic):
var
Einstellungen
C#-Formatregeln: