Språk och onödiga regler
Regler för 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 något 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_line
ellernever
.Allvarlighetsgrad (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: i utvecklings-ID:er och under kommandoradsversioner. I .NET 8 och tidigare versioner respekteras den här allvarlighetsinställningen endast i utvecklings-ID:er, till exempel Visual Studio, och inte under kompilering.
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 AnalysisLevel> eller
<AnalysisLevelStyle>
egenskapen till9.0
eller 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 AnalysisLevel> eller
Dricks
Från och med Visual Studio 2019 kan du konfigurera regler för kodformat från menyn Snabbåtgärder glödlampa när en stilöverträdelse inträffar.
Regelindex
Språkregler och onödiga kodregler kategoriseras ytterligare i underkategorier, till exempel inställningar på uttrycksnivå, inställningar för kodblock och modifierare.
using
direktivpreferenser- Inställningar för kodblock
- Medlemmar i uttrycksfyllnad
- 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ällningarvar
Instä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 toppnivåinstruktioner (IDE0210)
- Konvertera till "Program.Main"-formatprogrammet (IDE0211)
- Använd den primära konstruktorn (IDE0290)
Medlemmar i uttrycksfyllnad
C#-formatregler:
- Använda uttryckstext för konstruktorer (IDE0021)
- Använda uttryckstext för metoder (IDE0022)
- Använda uttryckstext för operatorer (IDE0023, IDE0024)
- Använda uttryckstext för egenskaper (IDE0025)
- Använda uttryckstext för indexerare (IDE0026)
- Använda uttryckstext 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ödiga gjutna (IDE0004)
- Lägg till saknade fall för att växla instruktion (IDE0010)
- Använda objektinitierare (IDE0017)
- Använda insamlingsinitierare (IDE0028)
- Null-kontrollen kan förenklas (IDE0029, IDE0030, IDE0270)
- Använda null-spridning (IDE0031)
- Använda automatiskt implementerad egenskap (IDE0032)
- Använd uttryckligen angivet tuppelns namn (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 tuppeln (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
typeof
tillnameof
(IDE0082) - Ta bort onödig likhetsoperator (IDE0100)
- Förenkla LINQ-uttryck (IDE0120)
- Namnområdet matchar inte mappstrukturen (IDE0130)
C#-formatregler:
- Använda utkastsuttryck (IDE0016)
- Infogad 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
new
uttryck (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 gjuten i foreach-loop (IDE0220)
- Använd UTF-8 strängliteral (IDE0230)
- Nullable-direktivet är redundant (IDE0240)
- Det går inte att upphäva direktivet (IDE0241)
- Använda samlingsuttryck för matris (IDE0300)
- Använd samlingsuttryck för tomt (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)
Visual Basic-formatregler:
- Ta bort
ByVal
(IDE0081) - Använda 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)
- Medlemmen kan göras "skrivskyddad" (IDE0251)
Inställningar för ny rad
- Tillåt flera tomma rader (IDE2000)
- Tillåt inbäddade instruktioner på samma rad (IDE2001)
- Tillåt tomma linjer mellan efterföljande klammerparenteser (IDE2002)
- Tillåt -instruktion omedelbart efter blockering (IDE2003)
- Tillåt tom rad efter kolon i konstruktorinitieraren (IDE2004)
- Tillåt tom rad efter token i villkorsuttryck (IDE2005)
- Tillåt tom rad efter token i piluttryck (IDE2006)
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ända switch-uttryck (IDE0066)
- Använda mönstermatchning (IDE0078 och IDE0260)
- Använda mönstermatchning (
not
operator) (IDE0083) - Förenkla egenskapsmönster (IDE0170)
Inställningar för undertryckning
.NET-formatregler (C# och Visual Basic):
This.
och me.
inställningar
.NET-formatregler (C# och Visual Basic):
var
Inställningar
C#-formatregler: