Konfigurationsalternativ för kodanalys

Kodanalysregler har olika konfigurationsalternativ. Några av dessa alternativ anges som nyckel/värde-par i en konfigurationsfil för analysverktyg med hjälp av syntaxen <option key> = <option value>. Andra alternativ, som konfigurerar kodanalys som helhet, är tillgängliga som MSBuild-egenskaper i projektfilen.

Det vanligaste alternativet du konfigurerar är en regels allvarlighetsgrad. Du kan konfigurera allvarlighetsgraden för alla regler, inklusive regler för kodkvalitet och regler för kodformat. Om du till exempel vill aktivera en regel som en varning lägger du till följande nyckel/värde-par i en konfigurationsfil för analysverktyg:

dotnet_diagnostic.<rule ID>.severity = warning

Du kan också konfigurera ytterligare alternativ för att anpassa regelbeteende:

  • Kodkvalitetsregler har beteendealternativ, till exempel vilka metodnamn som en regel ska tillämpas på.
  • Regler för kodformat har alternativ för formatinställningar, till exempel var nya rader är önskvärda.
  • Analysregler från tredje part kan definiera sina egna konfigurationsalternativ med anpassade nyckelnamn och värdeformat.

Allmänna alternativ

De här alternativen gäller för kodanalys som helhet. De kan inte endast tillämpas på en specifik regel.

Ytterligare alternativ finns i Egenskaper för kodanalys.

Analysläge

Även om .NET SDK innehåller alla kodanalysregler är endast vissa av dem aktiverade som standard. Analysläget avgör vilken, om någon, uppsättning regler som ska aktiveras. Du kan välja ett mer aggressivt analysläge där de flesta eller alla regler är aktiverade. Eller så kan du välja ett mer konservativt analysläge där de flesta eller alla regler är inaktiverade, och du kan sedan välja specifika regler efter behov. Ange analysläget genom att lägga till <egenskapen AnalysisMode> MSBuild i projektfilen.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

Från och med .NET 6 kan du även massaktivera en regelkategori med egenskapen <AnalysisMode<Category>> MSBuild.

Kommentar

Om du konfigurerar kodanalys med hjälp av MSBuild-egenskaper som AnalysisModeignoreras alla alternativ för masskonfiguration som du anger i konfigurationsfilen . Om du till exempel har massaktiverat alla regler eller en regelkategori i en .editorconfig-fil ignoreras den konfigurationen.

Aktivera kodanalys

Kodanalys är aktiverat som standard för projekt som riktar in sig på .NET 5 och senare versioner. Om du har .NET 5+ SDK men projektet är avsett för en annan .NET-implementering kan du aktivera kodanalys manuellt genom att ange egenskapen EnableNETAnalyzers i projektfilen till true.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Exkludera genererad kod

.NET-kodanalysvarningar är inte användbara för genererade kodfiler, till exempel designergenererade filer, som användarna inte kan redigera för att åtgärda eventuella överträdelser. I de flesta fall hoppar kodanalyserare över genererade kodfiler och rapporterar inte överträdelser på dessa filer.

Som standard behandlas filer med vissa filnamnstillägg eller automatiskt genererade filhuvuden som genererade kodfiler. Ett filnamn som slutar med .designer.cs eller .generated.cs anses till exempel vara genererad kod. Med det här konfigurationsalternativet kan du ange ytterligare namngivningsmönster som ska behandlas som genererad kod. Du konfigurerar ytterligare filer och mappar genom att lägga till en generated_code = true | false post i konfigurationsfilen. Om du till exempel vill behandla alla filer vars namn slutar med .MyGenerated.cs genererad kod lägger du till följande post:

[*.MyGenerated.cs]
generated_code = true

Regelspecifika alternativ

Regelspecifika alternativ kan tillämpas på en enda regel, en uppsättning regler eller alla regler. De regelspecifika alternativen är:

Allvarlighetsnivå

I följande tabell visas de olika allvarlighetsgraderna för regeln som du kan konfigurera för alla analysregler, inklusive regler för kodkvalitet och kodformat .

Konfigurationsvärde för allvarlighetsgrad Byggtidsbeteende
error Överträdelser visas som byggfel och gör att byggen misslyckas.
warning Överträdelser visas som byggvarningar men orsakar inte att byggen misslyckas (såvida du inte har ett alternativ inställt på att behandla varningar som fel).
suggestion Överträdelser visas som byggmeddelanden och som förslag i Visual Studio IDE. (I Visual Studio visas förslag som tre grå punkter under de två första tecknen.)
silent Överträdelser är inte synliga för användaren.

Men för regler i kodstil genererar Visual Studio-kodgenereringsfunktioner fortfarande kod i den här stilen. De här reglerna deltar också i rensningen och visas på menyn Snabbåtgärder och Omstrukturera i Visual Studio.
none Regeln ignoreras helt.

Men för regler i kodstil genererar Visual Studio-kodgenereringsfunktioner fortfarande kod i den här stilen.
default Regelns standard allvarlighetsgrad används. Standard allvarlighetsgraderna för varje .NET-version visas på lagringsplatsen roslyn-analyzeers. I den tabellen motsvarar "Inaktiverad" , none"Dold" motsvarar silent, och "Info" motsvarar suggestion.

Omfattning

  • Enskild regel

    Om du vill ange regelns allvarlighetsgrad för en enskild regel använder du följande syntax.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Kategori av regler

    Om du vill ange standardregelns allvarlighetsgrad för en regelkategori använder du följande syntax. Den här allvarlighetsinställningen påverkar dock bara regler i den kategorin som är aktiverade som standard.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    De olika kategorierna visas och beskrivs i Regelkategorier. Dessutom kan du hitta kategorin för en specifik regel på dess referenssida, till exempel CA1000.

  • Alla regler

    Om du vill ange standardregelns allvarlighetsgrad för alla analysregler använder du följande syntax. Den här allvarlighetsinställningen påverkar dock endast regler som är aktiverade som standard.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Viktigt!

När du konfigurerar allvarlighetsgraden för flera regler med en enda post, antingen för en kategori av regler eller för alla regler, gäller allvarlighetsgraden endast för regler som är aktiverade som standard. Och om du aktiverar alla regler med hjälp av MSBuild-egenskaperna AnalysisMode> eller <AnalysisLevel> ignoreras eventuella massalternativdotnet_analyzer_diagnostic.< Därför är det bättre att aktivera en kategori med regler genom att ange AnalysisMode<Category>> till All.<

Kommentar

Prefixet för att ange allvarlighetsgrad för en enskild regel, dotnet_diagnostic, skiljer sig något från prefixet för att konfigurera allvarlighetsgrad via kategori eller för alla regler, dotnet_analyzer_diagnostic.

Prioritet

Om du har flera allvarlighetsgradskonfigurationsposter som kan tillämpas på samma regel-ID väljs prioritet i följande ordning:

  • En post för en kategori har företräde framför en post för alla analysregler.
  • En post för en enskild regel efter ID har företräde framför en post för en kategori.

Tänk dig följande exempel, där CA1822 har kategorin "Prestanda":

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

I föregående exempel gäller alla tre allvarlighetsgradsposterna för CA1822. Men med de angivna prioritetsreglerna vinner den första regel-ID-baserade posten över nästa poster. I det här exemplet har CA1822 en effektiv allvarlighetsgrad på error. Alla andra regler i kategorin Prestanda har en allvarlighetsgrad på warning.

Information om hur prioritet mellan filer bestäms finns i avsnittet Prioritet i artikeln Konfigurationsfiler.