Možnosti kompilátoru jazyka C# pro hlášení chyb a upozornění
Následující možnosti určují, jak kompilátor hlásí chyby a upozornění.
Syntaxe nástroje MSBuild | Syntaxe csc.exe | Popis |
---|---|---|
WarningLevel |
-warn |
Nastavte úroveň upozornění. Další informace. |
AnalysisLevel |
/ | Nastavte volitelnou úroveň upozornění. Další informace. |
TreatWarningsAsErrors |
-warnaserror |
Zachází se všemi upozorněními jako s chybami. Další informace. |
WarningsAsErrors |
-warnaserror |
Považujte jedno nebo více upozornění za chyby. Další informace. |
WarningsNotAsErrors |
-warnnotaserror |
Považujte jedno nebo více upozornění nikoliv jako chyby. Další informace. |
NoWarn |
-nowarn |
Nastavte seznam zakázaných upozornění. Další informace. |
CodeAnalysisRuleSet |
-ruleset |
Zadejte soubor sady pravidel, který zakazuje konkrétní diagnostiku. Další informace. |
ErrorLog |
-errorlog |
Zadejte soubor, který bude protokolovat všechny diagnostiky kompilátoru a analyzátoru. Další informace. |
ReportAnalyzer |
-reportanalyzer |
Nahlašte další informace analyzátoru, například dobu provádění. Další informace. |
Poznámka:
Další informace o konfiguraci těchto možností pro váš projekt najdete v možnostech kompilátoru.
WarningLevel
Možnost WarningLevel určuje úroveň upozornění pro zobrazení kompilátoru.
<WarningLevel>3</WarningLevel>
Hodnota prvku je úroveň upozornění, kterou chcete zobrazit pro kompilaci: Nižší čísla zobrazují pouze upozornění s vysokou závažností. Vyšší čísla zobrazují více upozornění. Hodnota musí být nula nebo kladné celé číslo:
Úroveň upozornění | Význam |
---|---|
0 | Vypne emise všech upozornění. |
0 | Zobrazí závažné zprávy s upozorněním. |
2 | Zobrazí upozornění úrovně 1 plus určitá méně závažná upozornění, jako jsou upozornění na skrytí členů třídy. |
3 | Zobrazí upozornění úrovně 2 plus určitá méně závažná upozornění, například upozornění na výrazy, které se vždy vyhodnotí jako true nebo false . |
4 (výchozí) | Zobrazí všechna upozornění úrovně 3 a informační upozornění. |
Upozorňující
Příkazový řádek kompilátoru přijímá hodnoty větší než 4, aby se povolila upozornění na varování. Sada .NET SDK však nastaví úroveň WarningLevel tak, aby odpovídala hodnotě AnalysisLevel v souboru projektu.
Pokud chcete získat informace o chybě nebo upozornění, můžete vyhledat kód chyby v rejstříku nápovědy. Další způsoby získání informací o chybě nebo upozornění najdete v tématu Chyby kompilátoru jazyka C#. Ke zpracování všech upozornění jako chyb použijte TreatWarningsAsErrors. Pomocí disabledWarnings zakažte určitá upozornění.
Úroveň analýzy
Možnost AnalysisLevel určuje další vlny upozornění a analyzátory, které se mají povolit. Upozornění varovných vln jsou další kontroly, které zlepšují váš kód, nebo se ujistěte, že bude kompatibilní s nadcházejícími verzemi. Analyzátory poskytují funkce podobné lint pro vylepšení kódu.
<AnalysisLevel>preview</AnalysisLevel>
Úroveň analýzy | Význam |
---|---|
5 | Zobrazí všechna volitelná upozornění s 5 upozorněními. |
6 | Zobrazí všechna volitelná upozornění ve vlně 6. |
7 | Zobrazí všechna volitelná upozornění 7 upozornění. |
nejnovější (výchozí) | Zobrazí všechna informační upozornění až do aktuální verze a včetně aktuální verze. |
preview | Zobrazí všechna informační upozornění až do nejnovější verze Preview. |
Žádná | Vypne všechna informační upozornění. |
Další informace o volitelných upozorněních naleznete v tématu Vlny upozornění.
Pokud chcete získat informace o chybě nebo upozornění, můžete vyhledat kód chyby v rejstříku nápovědy. Další způsoby získání informací o chybě nebo upozornění najdete v tématu Chyby kompilátoru jazyka C#. Ke zpracování všech upozornění jako chyb použijte TreatWarningsAsErrors. K zakázání určitých upozornění použijte NoWarn.
TreatWarningsAsErrors
Možnost TreatWarningsAsErrors považuje všechna upozornění za chyby. Upozornění AsAsErrors můžete také použít k nastavení pouze některých upozornění jako chyb. Pokud zapnete TreatWarningsAsErrors, můžete pomocí UpozorněníNotAsErrors zobrazit seznam upozornění, která by neměla být považována za chyby.
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Všechny zprávy upozornění se místo toho oznamují jako chyby. Proces sestavení se zastaví (nejsou vytvořeny žádné výstupní soubory). Ve výchozím nastavení není Funkce TreatWarningsAsErrors platná, což znamená, že upozornění nezabrání generování výstupního souboru. Pokud chcete, aby se jako s chybami zacházelo jenom několik konkrétních upozornění, můžete zadat čárkami oddělený seznam čísel upozornění, která se mají považovat za chyby. Sadu všech upozornění nullability lze zadat pomocí zkratky Nullable . Pomocí úrovně WarningLevel určete úroveň upozornění, která má kompilátor zobrazit. K zakázání určitých upozornění použijte NoWarn.
Důležité
Existují dva drobné rozdíly mezi použitím elementu <TreatWarningsAsErrors>
v souboru csproj a pomocí přepínače příkazového warnaserror
řádku MSBuild.
TreatWarningsAsErrors má vliv jenom na kompilátor C#, ne na žádné jiné úlohy NÁSTROJE MSBuild v souboru csproj . Přepínač příkazového warnaserror
řádku má vliv na všechny úkoly. Za druhé, kompilátor negeneruje žádný výstup pro žádná upozornění při použití TreatWarningsAsErrors . Kompilátor vytvoří výstup při použití přepínače příkazového warnaserror
řádku.
WarningsAsErrors a WarningsNotAsErrors
Možnosti WarningsAsErrors a WarningsNotAsErrors přepíší možnost TreatWarningsAsErrors pro seznam upozornění. Tuto možnost lze použít se všemi upozorněními CS . Předpona CS je volitelná. Můžete použít číslo nebo cs následované chybou nebo číslem upozornění. Další prvky, které mají vliv na upozornění, naleznete v části Common MSBuild vlastnosti. Kromě seznamu ID upozornění můžete také zadat řetězec nullable
, který zpracovává všechna upozornění týkající se nullability jako chyby.
Povolte upozornění 0219, 0168 a všechna upozornění s možnou hodnotou null jako chyby:
<WarningsAsErrors>0219,CS0168,nullable</WarningsAsErrors>
Zakažte stejná upozornění jako chyby:
<WarningsNotAsErrors>0219,CS0168,nullable</WarningsNotAsErrors>
Pomocí upozorněníAsErrors nakonfigurujete sadu upozornění jako chyby. Pomocí upozorněníNotAsErrors nakonfigurujte sadu upozornění, která by neměla být chybná, pokud nastavíte všechna upozornění jako chyby.
NoWarn
Možnost NoWarn umožňuje potlačit kompilátor z zobrazení jednoho nebo více upozornění, kde warningnumber1
jsou warningnumber2
čísla upozornění, která chcete kompilátoru potlačit. Oddělte několik čísel upozornění čárkou. Můžete určit nullable
, že chcete zakázat všechna upozornění týkající se možnosti null.
<NoWarn>warningnumber1,warningnumber2</NoWarn>
Musíte zadat pouze číselnou část identifikátoru upozornění. Pokud například chcete potlačit CS0028, můžete zadat <NoWarn>28</NoWarn>
. Kompilátor bezobslužně ignoruje čísla upozornění předaná noWarnu , která byla platná v předchozích verzích, ale byla odebrána. Například CS0679 byl platný v kompilátoru v sadě Visual Studio .NET 2002, ale byl odebrán později.
Možnost NoWarn nemůže potlačit následující upozornění:
- Upozornění kompilátoru (úroveň 1) CS2002
- Upozornění kompilátoru (úroveň 1) CS2023
- Upozornění kompilátoru (úroveň 1) CS2029
Všimněte si, že upozornění jsou určená jako označení potenciálního problému s vaším kódem, takže byste měli rozumět rizikům zakázání konkrétního upozornění. NoWarn používejte jenom v případě, že jste si jistí, že upozornění je falešně pozitivní a nemůže se jednat o chybu za běhu.
K zakázání upozornění můžete použít cílenější přístup:
Většina kompilátorů poskytuje způsoby, jak zakázat upozornění jenom pro určité řádky kódu, abyste mohli upozornění stále zkontrolovat, pokud se vyskytují jinde ve stejném projektu. Pokud chcete potlačit upozornění pouze v konkrétní části kódu v jazyce C#, použijte #pragma upozornění.
Pokud je vaším cílem zobrazit v protokolu sestavení výstižnější a zaměřený výstup, můžete změnit úroveň podrobností protokolu sestavení. Další informace naleznete v tématu Postupy: Zobrazení, uložení a konfigurace souborů protokolu sestavení.
Pokud chcete přidat čísla upozornění k jakékoli dříve nastavené hodnotě NoWarn bez přepsání, použijte odkaz $(NoWarn)
, jak je znázorněno v následujícím příkladu:
<NoWarn>$(NoWarn);newwarningnumber3;newwarningnumber4</NoWarn>
CodeAnalysisRuleSet
Zadejte soubor sady pravidel, který konfiguruje konkrétní diagnostiku.
<CodeAnalysisRuleSet>MyConfiguration.ruleset</CodeAnalysisRuleSet>
Kde MyConfiguration.ruleset
je cesta k souboru sady pravidel. Další informace o používání sad pravidel najdete v článku v dokumentaci k sadě Visual Studio o sadách pravidel.
Protokol chyb
Zadejte soubor, který bude protokolovat všechny diagnostiky kompilátoru a analyzátoru.
<ErrorLog>compiler-diagnostics.sarif</ErrorLog>
Možnost ErrorLog způsobí, že kompilátor vypíše protokol SARIF (Static Analysis Results Interchange Format). Protokoly SARIF obvykle čtou nástroje, které analyzují výsledky z diagnostiky kompilátoru a analyzátoru.
Formát SARIF můžete zadat pomocí version
argumentu ErrorLog
prvku:
<ErrorLog>logVersion21.json,version=2.1</ErrorLog>
Oddělovač může být čárka (,
) nebo středník (;
). Platné hodnoty pro verzi jsou: 1, 2 a 2.1. Výchozí hodnota je 1. "2" a "2.1" oba znamenají SARIF verze 2.1.0.
ReportAnalyzer
Nahlašte další informace analyzátoru, například dobu provádění.
<ReportAnalyzer>true</ReportAnalyzer>
Možnost ReportAnalyzer způsobí, že kompilátor vygeneruje další informace protokolu MSBuild, které podrobně popisuje charakteristiky výkonu analyzátorů v sestavení. Autoři analyzátoru ho obvykle používají jako součást ověřování analyzátoru.
Důležité
Dodatečné informace protokolu vygenerované tímto příznakem se generují pouze při použití možnosti příkazového -verbosity:detailed
řádku.
Další informace najdete v článku o přepínačích v dokumentaci nástroje MSBuild.