C#-kompilatoralternativ för att rapportera fel och varningar

Följande alternativ styr hur kompilatorn rapporterar fel och varningar. Den nya MSBuild-syntaxen visas i Fetstil. Den äldre csc.exe syntaxen visas i code style.

  • WarningLevel / -warn: Ange varningsnivå.
  • AnalysisLevel: Ange valfri varningsnivå.
  • TreatWarningsAsErrors / -warnaserror: Behandla alla varningar som fel
  • WarningsAsErrors / -warnaserror: Behandla en eller flera varningar som fel
  • WarningsNotAsErrors / -warnnotaserror: Behandla en eller flera varningar som inte är fel
  • NoWarn / -nowarn: Ange en lista över inaktiverade varningar.
  • CodeAnalysisRuleSet / -ruleset: Ange en regeluppsättningsfil som inaktiverar specifik diagnostik.
  • ErrorLog / -errorlog: Ange en fil för att logga all kompilator- och analysdiagnostik.
  • ReportAnalyzer / -reportanalyzer: Rapportera ytterligare analysinformation, till exempel körningstid.

WarningLevel

Alternativet WarningLevel anger varningsnivån för kompilatorn som ska visas.

<WarningLevel>3</WarningLevel>

Elementvärdet är den varningsnivå som du vill visa för kompilering: Lägre tal visar endast varningar med hög allvarlighetsgrad. Högre siffror visar fler varningar. Värdet måste vara noll eller ett positivt heltal:

Varningsnivå Innebörd
0 Inaktiverar utsläpp av alla varningsmeddelanden.
1 Visar allvarliga varningsmeddelanden.
2 Visar varningar på nivå 1 plus vissa, mindre allvarliga varningar, till exempel varningar om att dölja klassmedlemmar.
3 Visar varningar på nivå 2 plus vissa, mindre allvarliga varningar, till exempel varningar om uttryck som alltid utvärderas till true eller false.
4 (standard) Visar alla nivå 3-varningar plus informationsvarningar.

Varning

Kommandoraden för kompilatorn accepterar värden som är större än 4 för att aktivera varningsvågor. .NET SDK anger dock WarningLevel så att den matchar AnalysisLevel i projektfilen.

Om du vill få information om ett fel eller en varning kan du leta upp felkoden i hjälpindexet. Andra sätt att få information om ett fel eller en varning finns i C#-kompilatorfel. Använd TreatWarningsAsErrors för att behandla alla varningar som fel. Använd DisabledWarnings för att inaktivera vissa varningar.

Analysnivå

Alternativet AnalysisLevel anger ytterligare varningsvågor och analysverktyg som ska aktiveras. Varningsvågor är ytterligare kontroller som förbättrar koden eller ser till att den är kompatibel med kommande versioner. Analysverktyg ger lint-liknande funktioner för att förbättra koden.

<AnalysisLevel>preview</AnalysisLevel>
Analysnivå Innebörd
5 Visar alla valfria varningsvåg 5-varningar.
6 Visar alla valfria varningsvågor 6 varningar.
7 Visar alla valfria varningsvågor 7 varningar.
senaste (standard) Visar alla informationsvarningar fram till och med den aktuella versionen.
preview Visar alla informationsvarningar fram till och med den senaste förhandsversionen.
inget Inaktiverar alla informationsvarningar.

Mer information om valfria varningar finns i Varningsvågor.

Om du vill få information om ett fel eller en varning kan du leta upp felkoden i hjälpindexet. Andra sätt att få information om ett fel eller en varning finns i C#-kompilatorfel. Använd TreatWarningsAsErrors för att behandla alla varningar som fel. Använd NoWarn för att inaktivera vissa varningar.

TreatWarningsAsErrors

Alternativet TreatWarningsAsErrors behandlar alla varningar som fel. Du kan också använda WarningsAsErrors för att endast ange vissa varningar som fel. Om du aktiverar TreatWarningsAsErrors kan du använda WarningsNotAsErrors för att lista varningar som inte ska behandlas som fel.

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

Alla varningsmeddelanden rapporteras i stället som fel. Byggprocessen stoppas (inga utdatafiler skapas). Som standard gäller inte TreatWarningsAsErrors , vilket innebär att varningar inte förhindrar generering av en utdatafil. Om du vill att bara några få specifika varningar ska behandlas som fel kan du ange en kommaavgränsad lista med varningsnummer som ska behandlas som fel. Uppsättningen med alla nullabilitetsvarningar kan anges med blankningsbar blankning. Använd WarningLevel för att ange den varningsnivå som du vill att kompilatorn ska visa. Använd NoWarn för att inaktivera vissa varningar.

Viktigt!

Det finns två subtila skillnader mellan att använda elementet <TreatWarningsAsErrors> i csproj-filen och att använda warnaserror kommandoradsväxeln MSBuild. TreatWarningsAsErrors påverkar bara C#-kompilatorn, inte andra MSBuild-uppgifter i csproj-filen. Kommandoradsväxeln warnaserror påverkar alla uppgifter. För det andra producerar kompilatorn inga utdata på några varningar när TreatWarningsAsErrors används. Kompilatorn genererar utdata när kommandoradsväxeln warnaserror används.

WarningsAsErrors och WarningsNotAsErrors

Alternativen WarningsAsErrors och WarningsNotAsErrors åsidosätter alternativet TreatWarningsAsErrors för en lista med varningar. Det här alternativet kan användas med alla CS-varningar . "CS"-prefixet är valfritt. Du kan använda antingen talet eller "CS" följt av felet eller varningsnumret. Andra element som påverkar varningar finns i Vanliga MSBuild-egenskaper. Förutom listan med varnings-ID:n kan du även ange strängen nullable, som behandlar alla varningar som rör nullbarhet som fel.

Aktivera varningar 0219, 0168 och alla nullbara varningar som fel:

<WarningsAsErrors>0219,CS0168,nullable</WarningsAsErrors>

Inaktivera samma varningar som fel:

<WarningsNotAsErrors>0219,CS0168,nullable</WarningsNotAsErrors>

Du använder WarningsAsErrors för att konfigurera en uppsättning varningar som fel. Använd WarningsNotAsErrors för att konfigurera en uppsättning varningar som inte ska vara fel när du har angett alla varningar som fel.

NoWarn

Med alternativet NoWarn kan du förhindra att kompilatorn visar en eller flera varningar, där warningnumber1, warningnumber2 är varningsnummer som du vill att kompilatorn ska utelämna. Avgränsa flera varningsnummer med kommatecken. Du kan ange nullable om du vill inaktivera alla varningar som rör nullbarhet.

<NoWarn>warningnumber1,warningnumber2</NoWarn>

Du behöver bara ange den numeriska delen av varningsidentifieraren. Om du till exempel vill utelämna CS0028 kan du ange <NoWarn>28</NoWarn>. Kompilatorn ignorerar tyst varningsnummer som skickats till NoWarn som var giltiga i tidigare versioner, men som har tagits bort. Cs0679 var till exempel giltigt i kompilatorn i Visual Studio .NET 2002 men togs bort senare.

Följande varningar kan inte ignoreras av alternativet NoWarn :

  • Kompilatorvarning (nivå 1) CS2002
  • Kompilatorvarning (nivå 1) CS2023
  • Kompilatorvarning (nivå 1) CS2029

Observera att varningar är avsedda att vara en indikation på ett potentiellt problem med din kod, så du bör förstå riskerna med att inaktivera en viss varning. Använd endast NoWarn när du är säker på att en varning är en falsk positiv och inte kan vara en körningsbuggar.

Du kanske vill använda en mer riktad metod för att inaktivera varningar:

  • De flesta kompilatorer tillhandahåller sätt att inaktivera varningar bara för vissa kodrader, så att du fortfarande kan granska varningarna om de inträffar någon annanstans i samma projekt. Om du bara vill ignorera en varning i en viss del av koden i C# använder du #pragma varning.

  • Om målet är att se mer koncisa och fokuserade utdata i byggloggen kanske du vill ändra detaljnivå för byggloggen. Mer information finns i Visa, spara och konfigurera byggloggfiler.

Om du vill lägga till varningsnummer i ett tidigare angivet värde för NoWarn utan att skriva över det, refererar $(NoWarn) du till det som visas i följande exempel:

   <NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>

CodeAnalysisRuleSet

Ange en regeluppsättningsfil som konfigurerar specifik diagnostik.

<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>

Var MyConfiguration.ruleset är sökvägen till regeluppsättningsfilen. Mer information om hur du använder regeluppsättningar finns i artikeln i Visual Studio-dokumentationen om regeluppsättningar.

ErrorLog

Ange en fil för att logga all kompilator- och analysdiagnostik.

<ErrorLog>compiler-diagnostics.sarif</ErrorLog>

Alternativet ErrorLog gör att kompilatorn matar ut en SARIF-logg (Static Analysis Results Interchange Format). SARIF-loggar läss vanligtvis av verktyg som analyserar resultaten från kompilator- och analysdiagnostik.

Du kan ange SARIF-formatet med argumentet version till elementet ErrorLog :

<ErrorLog>logVersion21.json,version=2.1</ErrorLog>

Avgränsaren kan vara antingen ett kommatecken (,) eller ett semikolon (;). Giltiga värden för version är: "1", "2" och "2.1". Standardvärdet är "1". "2" och "2.1" betyder båda SARIF version 2.1.0.

ReportAnalyzer

Rapportera ytterligare analysinformation, till exempel körningstid.

<ReportAnalyzer>true</ReportAnalyzer>

Alternativet ReportAnalyzer gör att kompilatorn genererar extra MSBuild-logginformation som beskriver prestandaegenskaperna för analysverktygen i versionen. Den används vanligtvis av analyserarförfattare som en del av valideringen av analysatorn.

Viktigt!

Den extra logginformation som genereras av den här flaggan genereras bara när kommandoradsalternativet -verbosity:detailed används. Mer information finns i artikeln om växlar i MSBuild-dokumentationen.