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

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