Sdílet prostřednictvím


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 -warnaserror- 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 Podávejte zprávy o dodatečných informacích analyzátoru, jako je čas provedení. Další informace.

Poznámka:

Další informace o konfiguraci těchto možností pro váš projekt naleznete v tématu Možnosti kompilátoru. Další informace o dostupných přepínačích viz článek přepínače příkazového řádku MSBuild v dokumentaci k sadě Visual Studio.

Úroveň varování

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í.

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 vyšší vlny upozornění a analyzátory, které se povolí v projektech .NET 7 a novějších. Varování o aktualizacích jsou dodatečné kontroly, které zlepšují váš kód nebo zajišťují, že zůstane kompatibilní s nadcházejícími verzemi. Analyzátory poskytují funkce podobné lint pro vylepšení kódu.

Počínaje sadou .NET 7 SDK, AnalysisLevel a WarningLevel jsou nastaveny na základě těchto pravidel:

  • Výchozí hodnota AnalysisLevel odpovídá identifikátoru cílového rozhraní (TFM) ze souboru projektu.
  • Výchozí hodnota WarningLevel odpovídá hodnotě AnalysisLevel.
  • Výchozí úroveň WarningLevel je 4 pro projekty rozhraní .NET Framework.

Před sadou .NET 7 SDK úroveň AnalysisLevel přepsala úroveň WarningLevel.

<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.
náhled 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.

Zacházet s varováními jako s chybami

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í WarningsNotAsErrors nakonfigurujte sadu upozornění, která by neměla být chybná, když 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 warningnumber1jsou 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 tiše ignoruje čísla upozornění předaná NoWarn, která byla platná v předchozích verzích, ale nejsou generována aktuálním kompilátorem. 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

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í jakéhokoli 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). Nástroje, které analyzují výsledky kompilátoru a analyzátoru, čtou protokoly SARIF.

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

Podávejte zprávy o dodatečných informacích analyzátoru, jako je čas provedení.

<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 naleznete v článku přepínače v dokumentaci nástroje MSBuild.