Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Språkregler i kodstil påverkar hur olika konstruktioner av .NET programmeringsspråk, till exempel modifierare och parenteser, används.
Den här kategorin innehåller även regler som identifierar delar av kodbasen som är onödiga och kan omstruktureras eller tas bort. Förekomsten av onödig kod indikerar ett eller flera av följande problem:
- Läsbarhet: Kod som i onödan försämrar läsbarheten.
- Underhåll: Kod som inte längre används efter refaktorisering och underhålls i onödan.
- Prestanda: Onödig beräkning som inte har några biverkningar och leder till onödiga prestandakostnader.
- Funktioner: Funktionsproblem i kod som gör nödvändig kod redundant. Till exempel IDE0060 flaggar oanvända parametrar där metoden av misstag ignorerar en indataparameter.
Språkreglerna är indelade i följande kategorier:
- .NET formatregler: Regler som gäller för både C# och Visual Basic. Alternativnamnen för dessa regler börjar med prefixet
dotnet_style_. - C#-formatregler: Regler som är specifika för C#-kod. Alternativnamnen för dessa regler börjar med prefixet
csharp_style_. - Visual Basic formatregler: Regler som är specifika för Visual Basic kod. Alternativnamnen för dessa regler börjar med prefixet
visual_basic_style_.
Alternativformat
Många av språkreglerna har ett eller flera associerade alternativ för att anpassa önskat format. Använd till exempel enkel "using"-instruktion (IDE0063) har det associerade alternativet csharp_prefer_simple_using_statement som gör att du kan definiera om du föredrar en using deklaration eller en using instruktion. Regeln tillämpar de alternativ som du väljer på en angiven nivå, till exempel varning eller fel.
Alternativ för språkregler kan anges i en konfigurationsfil med följande format:
option_name = value (Visual Studio 2019 och senare)
eller
option_name = value:severity
Värde
För varje språkregel anger du ett värde som definierar om eller när formatmallen ska föredras. Många regler accepterar värdet
true(föredrar det här formatet) ellerfalse(föredrar inte det här formatet). Andra regler accepterar värden somwhen_on_single_lineellernever.Severity (valfritt i Visual Studio 2019 och senare versioner)
Den andra delen av regeln anger allvarlighetsgraden för regeln. I .NET 9 och senare versioner respekteras alltid allvarlighetsgraden – det vill säga: i utvecklingsmiljöer och under kommandoradsbyggen. I .NET 8 och tidigare versioner respekteras den här allvarlighetsgraden endast i utvecklings-ID:er, till exempel Visual Studio och not under bygget.
Om du använder .NET 8 SDK eller en tidigare version och vill att allvarlighetsgraden ska respekteras vid bygget kan du göra det på något av två sätt:
- Ange egenskapen
<AnalysisLevel>eller<AnalysisLevelStyle>till9.0eller högre, eller tillpreview. - Ange allvarlighetsgraden med hjälp av den regel-ID-baserade allvarlighetsgradskonfigurationssyntaxen för analysverktyg i stället. Syntaxen har formatet
dotnet_diagnostic.<rule ID>.severity = <severity>, till exempeldotnet_diagnostic.IDE0040.severity = warning. Mer information finns i allvarlighetsgrad.
- Ange egenskapen
Tips
Från och med Visual Studio 2019 kan du konfigurera regler för kodformat från menyn Snabba åtgärder när en stilregel bryts.
Regelindex
Språkregler och onödiga kodregler kategoriseras ytterligare i underkategorier, till exempel inställningar på uttrycksnivå, inställningar för kodblock och modifierare.
-
usingdirektivpreferenser - Inställningar för kodblock
- Uttrycksbaserade medlemmar
- Inställningar på uttrycksnivå
- Fältinställningar
- Språknyckelord jämfört med inställningar för ramverkstyper
- Inställningar för modifierare
- Inställningar för ny rad
- Inställningar för null-kontroll
- Parameterinställningar
- Parentesinställningar
- Mönstermatchningsinställningar
- Inställningar för undertryckning
-
This.ochme.inställningar -
varinställningar
using direktivpreferenser
.NET formatregler (C# och Visual Basic):
C#-formatregler:
Inställningar för kodblock
C#-formatregler:
- Lägg till klammerparenteser (IDE0011)
- Använd enkel "using"-instruktion (IDE0063)
- Inställningar för namnområdesdeklaration (IDE0160, IDE0161)
- Ta bort onödigt lambda-uttryck (IDE0200)
- Konvertera till uttalanden på toppnivå (IDE0210)
- Konvertera till "Program.Main"-formatprogrammet (IDE0211)
- Använd den primära konstruktorn (IDE0290)
- Föredrar "System.Threading.Lock" (IDE0330)
Uttrycksbaserade medlemmar
C#-formatregler:
- Använd uttrycksform för konstruktorer (IDE0021)
- Använda uttryckstext för metoder (IDE0022)
- Använd uttryckskropp för operatorer (IDE0023, IDE0024)
- Använda uttryckstext för egenskaper (IDE0025)
- Använda uttryckstext för indexerare (IDE0026)
- Använd uttrycksform för accessorer (IDE0027)
- Använda uttryckstext för lambdas (IDE0053)
- Använda uttryckstext för lokala funktioner (IDE0061)
Inställningar på uttrycksnivå
.NET formatregler (C# och Visual Basic):
- Förenkla namnet (IDE0001)
- Förenkla medlemsåtkomst (IDE0002)
- Ta bort onödig typomvandling (IDE0004)
- Lägg till saknade fall i switch-satsen (IDE0010)
- Använda objektinitierare (IDE0017)
- Använd insamlingsinitierare (IDE0028)
- Null-kontrollen kan förenklas (IDE0029, IDE0030, IDE0270)
- Använd null-propagation (IDE0031)
- Använda automatiskt implementerad egenskap (IDE0032)
- Använd uttryckligen det angivna tuplnamnet (IDE0033)
- Ta bort kod som inte kan nås (IDE0035)
- Använd härledda medlemsnamn (IDE0037)
- Använd kontrollen "är null" (IDE0041)
- Använda villkorsuttryck för tilldelning (IDE0045)
- Använd villkorsuttryck för retur (IDE0046)
- Konvertera anonym typ till tuple (IDE0050)
- Ta bort oanvänd privat medlem (IDE0051)
- Ta bort oläst privat medlem (IDE0052)
- Använd sammansatt tilldelning (IDE0054, IDE0074)
- Ta bort onödigt uttrycksvärde (IDE0058)
- Ta bort onödig värdetilldelning (IDE0059)
- Använd "System.HashCode.Combine" (IDE0070)
- Förenkla interpolering (IDE0071)
- Förenkla villkorsuttryck (IDE0075)
-
Konvertera
typeoftillnameof(IDE0082) - Ta bort onödig likhetsoperator (IDE0100)
- Förenkla LINQ-uttryck (IDE0120)
- Förenkla LINQ-typkontroll och gjutning (IDE0121)
- Namnområdet matchar inte mappstrukturen (IDE0130)
C#-formatregler:
- Använda utkastsuttryck (IDE0016)
- Inlinje variabeldeklaration (IDE0018)
- Förenkla standarduttrycket (IDE0034)
- Använd lokal funktion i stället för lambda (IDE0039)
- Dekonstruera variabeldeklaration (IDE0042)
- Använda indexoperator (IDE0056)
- Använda intervalloperator (IDE0057)
- Lägg till saknade fall för att växla uttryck (IDE0072)
- Ta bort onödig undertryckningsoperator (IDE0080)
-
Förenkla
newuttryck (IDE0090) - Ta bort onödiga borttagna (IDE0110)
- Föredrar "null"-kontroll över typkontroll (IDE0150)
- Använd tuppeln för att växla värden (IDE0180)
- Lägg till explicit typomvandling i en foreach-loop (IDE0220)
- Lägg till explicit cast (IDE0221)
- Använd UTF-8 strängliteral (IDE0230)
- Nullable-direktivet är redundant (IDE0240)
- Nullable-direktivet är onödigt (IDE0241)
- Använda samlingsuttryck för matris (IDE0300)
- Använd samlingsuttryck för tom samling (IDE0301)
- Använda samlingsuttryck för stack alloc (IDE0302)
-
Använda samlingsuttryck för
Create()(IDE0303) - Använda samlingsuttryck för builder (IDE0304)
- Använda samlingsuttryck för fluent (IDE0305)
- Använd samlingsuttryck för ny (IDE0306)
- Använd obunden generisk typ (IDE0340)
- Använd implicit skrivet lambda (IDE0350)
- Förenkla egenskapsåtkomst (IDE0360)
Visual Basic formatregler:
-
Ta bort
ByVal(IDE0081) -
Använd mönstermatchning (
IsNot-operator) (IDE0084) - Förenkla skapandet av objekt (IDE0140)
Fältinställningar
.NET formatregler (C# och Visual Basic):
Språknyckelord jämfört med inställningar för ramverkstyper
.NET formatregler (C# och Visual Basic):
Inställningar för modifierare
.NET formatregler (C# och Visual Basic):
C#-formatregler:
- Gör lokal funktion statisk (IDE0062)
- Gör structfält skrivbara (IDE0064)
- Struct kan göras "readonly" (IDE0250)
- Medlem kan markeras som 'skrivskyddad' (IDE0251)
- Gör anonym funktion statisk (IDE0320)
-
Ta bort onödiga
unsafemodifierare (IDE0380)
Inställningar för ny rad
.NET formatregler (C# och Visual Basic):
- Undvik flera tomma rader (IDE2000)†
- Tom rad krävs mellan blockering och efterföljande instruktion (IDE2003)†
C#-formatregler:
- Inbäddade instruktioner måste finnas på sin egen rad (IDE2001)†
- Efterföljande klammerparenteser får inte ha en tom linje mellan sig (IDE2002)†
- Tom rad tillåts inte efter konstruktorinitieringskolon (IDE2004)†
- Tom rad tillåts inte efter token för villkorsstyrda uttryck (IDE2005)†
- Tom rad tillåts inte efter piluttryckssatsens token (IDE2006)†
†De här reglerna är experimentella och kan komma att ändras eller tas bort.
Inställningar för null-kontroll
C#-formatregler:
Parameterinställningar
.NET formatregler (C# och Visual Basic):
Parentesinställningar
.NET formatregler (C# och Visual Basic):
Mönstermatchningsinställningar
C#-formatregler:
- Använd mönstermatchning för att undvika "som" följt av "null"-kontroll (IDE0019)
- Använd mönstermatchning för att undvika is-kontroll följt av en gjuten (IDE0020, IDE0038)
- Använd switch-uttryck (IDE0066)
- Använda mönstermatchning (IDE0078 och IDE0260)
-
Använd mönstermatchning (
notoperatorn) (IDE0083) - Förenkla egenskapsmönster (IDE0170)
Inställningar för undertryckning
.NET formatregler (C# och Visual Basic):
C#-formatregler:
This. och me. inställningar
.NET formatregler (C# och Visual Basic):
var inställningar
C#-formatregler: