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.