Sdílet prostřednictvím


Potlačení upozornění kompilátoru

V sadě Visual Studio můžete určit, která upozornění chcete potlačit, zadáním kódů upozornění v Návrháři projektu (stránky vlastností projektu). Upozornění můžete také potlačit nastavením určitých vlastností přímo v souboru projektu, přes příkazový řádek nebo v kódu, pokud chcete potlačit upozornění pouze v jednom umístění.

Některé kompilátory a nástroje sestavení mají také možnosti určit úroveň upozornění. Díky tomu můžete řídit kategorie upozornění pomocí jednoho nastavení. Tyto možnosti najdete v dokumentaci ke konkrétnímu jazyku a kompilátoru, který používáte:

  • úrovně upozornění v jazyka C#
  • V C++ úrovně 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í. Dostupná nastavení jsou normální, podrobná, nebo diagnostická. Další informace o podrobnostech najdete v tématu Postupy: Zobrazení, uložení a konfigurace souborů protokolu sestavení.

Opatrnost

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í. Nastavení sady Visual Studio zakazuje upozornění na úrovni projektu. Možná budete chtít použít cílenější přístup k zakázání upozornění, než poskytuje Visual Studio. 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.

Potlačení konkrétních upozornění pro Visual C# nebo F#

Pomocí vlastností Sestavení potlačíte určitá upozornění pro celý projekt jazyka C# a F#. Pokud chcete potlačit upozornění pouze v konkrétní části kódu v jazyce C#, použijte #pragma upozornění. Pro jazyk F# použijte #nowarn direktivu preprocesoru k zakázání upozornění pro celý zdrojový soubor.

  1. V Průzkumníku řešenízvolte projekt, ve kterém chcete potlačit upozornění.

  2. Klikněte pravým tlačítkem myši na uzel projektu a v místní nabídce zvolte Vlastnosti. Nebo vyberte uzel projektu a stiskněte Alt+Enter.

  3. Zvolte Sestavenía přejděte do pododdílu Chyby a upozornění.

  4. V poli Potlačit upozornění nebo Potlačit konkrétní upozornění zadejte kódy chyb upozornění, která chcete potlačit, oddělená středníky. Pro seznam a popisy kódů upozornění se podívejte na Zprávy kompilátoru C#.

  5. Znovu sestavte řešení.

  1. V Průzkumníku řešenízvolte projekt, ve kterém chcete potlačit upozornění.

  2. Klikněte pravým tlačítkem myši na uzel projektu a v místní nabídce zvolte Vlastnosti. Nebo vyberte uzel projektu a stiskněte Alt+Enter.

  3. Zvolte stránku nebo oddíl Sestavení a pokud jste v aktuálním uživatelském rozhraní, otevřete pododdíl Chyby a varování .

  4. V poli Potlačit varování nebo Potlačit konkrétní varování zadejte chybové kódy pro varování, která chcete potlačit, oddělené středníky. Seznam a popisy kódů upozornění najdete v části Zprávy kompilátoru C#.

  5. Znovu sestavte řešení.

Poznámka

Některá upozornění nelze potlačit. Pro seznam těchto možností viz kompilátorová možnost NoWarn.

Potlačení konkrétních upozornění pro C++

Upozornění v projektu C++ můžete potlačit pomocí vlastností projektu; pomocí stránky vlastností Konfigurace můžete pro celý projekt C++ potlačit konkrétní upozornění. Upozornění v konkrétních souborech můžete také potlačit pomocí #pragma warning. Tento článek popisuje řízení na úrovni projektu, ale pokud je vaším záměrem zakázat upozornění v určitém souboru nebo jen kolem několika řádků kódu, ale chcete pokračovat v zobrazení dalších výskytů stejného upozornění, měli byste zvážit použití #pragma warning. Viz #pragma upozornění.

  1. V Průzkumníka řešenízvolte projekt nebo zdrojový soubor, ve kterém chcete potlačit upozornění.

  2. Na řádku nabídek zvolte Zobrazit>Stránky vlastností.

  3. Zvolte kategorii Vlastnosti konfigurace, zvolte kategorii C/C++ a pak zvolte stránku Upřesnit.

  4. Proveďte jeden z následujících kroků:

    • Do pole Zakázat konkrétní upozornění zadejte kódy chyb upozornění, která chcete potlačit, oddělená středníkem.

    • V poli Zakázat konkrétní upozornění zvolte Upravit, aby se zobrazily další možnosti.

  5. Zvolte tlačítko OK a pak řešení znovu sestavte.

Pokud je upozornění z jiného nástroje, projděte si dokumentaci ke konkrétnímu nástroji a zjistěte, jak můžete potlačit upozornění pro tento nástroj. Například linker C++ obsahuje některá upozornění, která můžete zakázat pomocí možnosti /IGNORE linkeru. Viz /IGNORE (ignorovat konkrétní upozornění) a k nastavení této možnosti viz /link (předat možnosti linkeru).

Potlačení upozornění pro Visual Basic

Konkrétní upozornění kompilátoru pro Visual Basic můžete skrýt úpravou souboru .vbproj projektu. Chcete-li potlačit upozornění podle kategorie , můžete použít stránku vlastností Kompilace . Pokud chcete zakázat upozornění v konkrétní části souboru kódu, použijte #Disable a #Enable direktivy. Další informace naleznete v tématu Konfigurace upozornění v jazyce Visual Basic.

Potlačení konkrétních upozornění pro celý projekt jazyka Visual Basic

V tomto příkladu se dozvíte, jak upravit soubor .vbproj a potlačit konkrétní upozornění kompilátoru.

  1. V Průzkumníku řešenízvolte projekt, ve kterém chcete potlačit upozornění.

  2. V nabídkové liště zvolte Project>Unload Project.

  3. V Průzkumníku řešeníotevřete místní nabídku projektu pravým tlačítkem myši a pak vyberte Upravit <ProjectName>.vbproj.

    Soubor projektu XML se otevře v editoru kódu.

  4. Vyhledejte prvek <NoWarn> pro konfiguraci sestavení, kterou používáte, a přidejte jedno nebo více čísel varování jako hodnotu prvku <NoWarn>. Pokud zadáte více čísel upozornění, oddělte je čárkou.

    Následující příklad ukazuje prvek <NoWarn> pro konfiguraci sestavení debug na platformě x86 se dvěma potlačenými upozorněními kompilátoru:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineDebug>true</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <ErrorReport>prompt</ErrorReport>
        <NoWarn>40059,42024</NoWarn>
        <WarningLevel>1</WarningLevel>
      </PropertyGroup>
    

    Poznámka

    Projekty .NET Core ve výchozím nastavení neobsahují skupiny vlastností konfigurace sestavení. Pokud chcete potlačit upozornění v projektu .NET Core, přidejte do souboru ručně oddíl konfigurace sestavení. Například:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <RootNamespace>VBDotNetCore_1</RootNamespace>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <NoWarn>42016,41999,42017</NoWarn>
      </PropertyGroup>
    </Project>
    
  5. Uložte změny do souboru .vbproj.

  6. Na řádku nabídek zvolte Projekt>Aktualizovat projekt.

  7. Na řádku nabídek zvolte Sestavit>Znovu sestavit řešení.

    Okno Výstup už nezobrazuje upozornění, která jste zadali.

Další informace najdete v přepínači /nowarn pro kompilátor příkazového řádku jazyka Visual Basic.

Můžete potlačit varování pro jednotlivá varování nebo podle kategorie. Prostředí se liší v závislosti na tom, jestli pracujete s projektem rozhraní .NET Framework nebo s projektem .NET Core (nebo .NET 5 a novějším).

Pokud chcete zakázat upozornění v konkrétní části souboru kódu, použijte direktivy #Disable a #Enable. Další informace naleznete v tématu Konfigurace upozornění v jazyce Visual Basic.

Projekty .NET 5 nebo novější

Soubor projektu můžete upravit tak, aby potlačit konkrétní upozornění kompilátoru diagnostickými kódy, nebo můžete potlačit upozornění podle kategorie pomocí Návrháře projektu. Pokud chcete otevřít návrháře projektu, vyberte uzel projektu, klikněte pravým tlačítkem myši a zvolte Vlastnostinebo stiskněte Alt+Enter.

V části Kompilace zvolte Upozornění. V části Závažnost upozorněnímůžete zvolit Nastavit závažnost upozornění jednotlivě. Kategorie se zobrazí a máte možnost nastavit každou kategorii na Žádné pro zakázání kategorie upozornění nebo na Upozornění či Chyba pro její povolení buď jako upozornění, nebo chybu.

Snímek obrazovky s nastavením závažnosti upozornění pro projekt .NET jazyka Visual Basic

Projekty rozhraní .NET Framework

Konkrétní upozornění kompilátoru pro Visual Basic můžete skrýt úpravou souboru .vbproj projektu. Chcete-li potlačit upozornění kategorie , můžete použít stránku vlastností Kompilace .

Potlačení konkrétních upozornění pro celý projekt jazyka Visual Basic

V tomto příkladu se dozvíte, jak upravit soubor .vbproj a potlačit konkrétní upozornění kompilátoru.

  1. V Průzkumníku řešenízvolte projekt, ve kterém chcete potlačit upozornění.

  2. (.NET) Poklikáním na uzel projektu otevřete soubor projektu.

    (.NET Framework) Na panelu nástrojů zvolte Project>Unload Project. Potom v Průzkumníku řešení otevřete místní nabídku projektu pravým tlačítkem myši a pak zvolte Upravit <ProjectName>.vbproj.

    Soubor projektu MSBuild se otevře v editoru kódu. Toto je soubor XML.

  3. Vyhledejte prvek <NoWarn> pro konfiguraci sestavení, pro kterou sestavujete, a přidejte jedno nebo více čísel upozornění jako hodnotu elementu <NoWarn>. Pokud zadáte více čísel upozornění, oddělte je čárkou.

    Následující příklad ukazuje prvek <NoWarn> pro konfiguraci sestavení Debug na platformě x86 se dvěma potlačenými upozorněními kompilátoru:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
        <PlatformTarget>x86</PlatformTarget>
        <DebugSymbols>true</DebugSymbols>
        <DebugType>full</DebugType>
        <Optimize>false</Optimize>
        <OutputPath>bin\Debug\</OutputPath>
        <DefineDebug>true</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <ErrorReport>prompt</ErrorReport>
        <NoWarn>40059,42024</NoWarn>
        <WarningLevel>1</WarningLevel>
      </PropertyGroup>
    

    Poznámka

    Projekty .NET Core a .NET 5 a novější ve výchozím nastavení neobsahují skupiny vlastností konfigurace sestavení. Pokud chcete potlačit upozornění v projektu .NET Core, přidejte do souboru ručně oddíl konfigurace sestavení. Například:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp2.0</TargetFramework>
        <RootNamespace>VBDotNetCore_1</RootNamespace>
      </PropertyGroup>
      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <NoWarn>42016,41999,42017</NoWarn>
      </PropertyGroup>
    </Project>
    
  4. Uložte změny do souboru .vbproj.

  5. Na řádku nabídek zvolte Project>Znovu načíst projekt.

  6. Na řádku nabídek zvolte Sestavit>Znovu sestavit řešení.

    Okno Výstup už nezobrazuje upozornění, která jste zadali.

Další informace najdete v /nowarn kompilátor kompilátoru příkazového řádku jazyka Visual Basic.

Potlačení upozornění úpravou souboru projektu

Použití návrháře vlastností sady Visual Studio k potlačení upozornění způsobí změnu souboru projektu. Někdy může být vhodnější soubor projektu ručně upravit, aby se splnil úkol zakázání upozornění. Soubor projektu zpracovává nástroj MSBuild, modul sestavení Microsoftu. Viz MSBuild.

V sadě Visual Studio 2019 verze 16.7 a starších verzích navíc není možné potlačovat některá upozornění z jiných nástrojů než kompilátoru jiným způsobem.

  1. Pokud chcete otevřít soubor projektu v editoru sady Visual Studio, klikněte pravým tlačítkem myši na uzel projektu a zvolte Upravit soubor projektu. Některé typy projektů vyžadují, abyste projekt před úpravou souboru projektu odložili. Pokud potřebujete projekt uvolnit, klikněte pravým tlačítkem myši na uzel projektu a zvolte Uvolnit projekt.

  2. V nové části PropertyGroup použijte vlastnost NoWarn. Uveďte chyby, které chcete potlačit, oddělené čárkami nebo středníky. Pro upozornění kompilátoru můžete vynechat kód jazyka a zadat pouze číslo, ale pro přehlednost doporučujeme použít celý kód. Pro upozornění z jiných nástrojů v sestavení zadejte úplný kód, včetně předpony (například MSB pro upozornění vystavená samotným nástrojem MSBuild).

    Následující kód přidá do seznamu potlačené upozornění CS0028 a CS0618:

    <PropertyGroup>
       // Other properties
       <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
    </PropertyGroup>
    

    Odkazování na předchozí hodnotu $(NoWarn), jak je znázorněno v předchozím příkladu, přičte tato čísla k libovolné dříve nastavené hodnotě pro NoWarn, místo jeho přepsání.

Podívejte se na NoWarn.

Potlačení upozornění z příkazového řádku sestavení

Pokud vytváříte projekt z příkazového řádku, můžete také potlačit upozornění pomocí -warnAsMessage na příkazovém řádku MSBuild. Použijte uvozovky v seznamech více kódů upozornění.

MSBuild.exe -warnAsMessage="CS0028;CS0618" MyProject.csproj

Viz referenci příkazového řádku MSBuild.

Potlačení upozornění pro všechny projekty a řešení v adresářové struktuře

Upozornění pro mnoho projektů najednou můžete potlačit, pokud jsou všechny pod společným adresářem v systému souborů pomocí souboru MSBuild Directory.Build.props. Viz Přizpůsobení sestavení podle adresáře. Pokud například umístíte následující soubor Directory.Build.props do kořenové složky s mnoha řešeními a projekty, můžete potlačit zadaný seznam upozornění pro všechny projekty v této složce a rekurzivně do složek v ní.

<Project>
   <PropertyGroup>
      <NoWarn>$(NoWarn);CS0028;CS0618</NoWarn>
   </PropertyGroup>
</Project>

Potlačení upozornění nástroje

Způsob potlačení upozornění z jiných nástrojů než kompilátoru, například MSBuild, závisí na tom, jaký typ projektu máte a jakou verzi nástroje MSBuild používáte.

S MSBuild 16.8 a novějšími v projektech, které používají sadu SDK nebo standardní importy, můžete potlačit upozornění nástroje pomocí stejných metod popsaných výše. Musíte zadat úplný kód chyby (včetně předpony, jako je MSB pro MSBuild), nejen čísla, jako je možné s upozorněním kompilátoru. Také zpráva není eliminována; pořád se zobrazuje jako informační zpráva, ale byla z upozornění degradována.

S MSBuild 16.7 a staršími a v jakémkoli projektu, který nepoužívá sadu SDK nebo standardní importy, nejsou tato upozornění potlačována pomocí NoWarn. V takových případech je vlastnost, kterou můžete použít k potlačení upozornění nástroje, MSBuildWarningsAsMessages. Upozornění sestavení můžete potlačit úpravou souboru projektu nebo zadáním možnosti MSBuildWarningsAsMessages na příkazovém řádku MSBuild. Při použití MSBuildWarningsAsMessagespoužijte úplný kód chyby MSBuild, včetně předpony MSB.

<PropertyGroup>
    <MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3270</MSBuildWarningsAsMessages>
</PropertyGroup>

Všimněte si, že některá upozornění nástroje MSBuild nelze potlačit nastavením MSBuildWarningsAsMessages. Pokud je chcete zakázat, použijte možnost příkazového řádku warnAsMessage.

Některá upozornění mají také konkrétní vlastnosti, které můžete nastavit tak, aby se upozornění zakázalo. Například MSB3253 je zakázán nastavením vlastnosti:

 <PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
  </PropertyGroup>

Pokud je to možné, použijte explicitnější vlastnost, protože kód chyby sám o sobě není tak snadno srozumitelný. Stránka s referenčními informacemi o chybě pro tento kód obvykle obsahuje vlastnost, která se používá k jeho zakázání.

Potlačení upozornění pro balíčky NuGet

V některých případech můžete chtít potlačit upozornění kompilátoru NuGet pro jeden balíček NuGet místo pro celý projekt. Upozornění slouží k účelu, takže ho nechcete potlačit na úrovni projektu. Například jedno z upozornění NuGetu říká, že balíček nemusí být plně kompatibilní s vaším projektem. Pokud ho potlačíte na úrovni projektu a později přidáte další balíček NuGet, nikdy byste nevěděli, jestli vytváří upozornění kompatibility.

Chcete-li potlačit konkrétní upozornění pro jeden balíček NuGet

  1. V Průzkumníka řešenívyberte balíček NuGet, pro který chcete potlačit upozornění kompilátoru.

    snímek obrazovky s balíčkem NuGet v Průzkumníku řešení

    snímek obrazovky s balíčkem NuGet v Průzkumníku řešení

  2. Z kontextové nabídky nebo kliknutí pravým tlačítkem vyberte Vlastnosti.

  3. Do pole Potlačit upozornění ve vlastnostech balíčku zadejte číslo upozornění, které chcete pro tento balíček potlačit. Pokud chcete potlačit více než jedno upozornění, oddělte čísla upozornění čárkou.

    vlastnosti balíčku NuGet

    snímek obrazovky s vlastnostmi balíčku NuGet

    Upozornění zmizí z průzkumníka řešení a seznamu chyb . V souboru projektu je vlastnost NoWarn nastavena.

     <PackageReference Include="NuGet.Build.Tasks.Pack" Version="6.2.0">
       <PrivateAssets>all</PrivateAssets>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <NoWarn>NU5104</NoWarn>
     </PackageReference>
    

Potlačte upozornění analýzy kódu

Diagnostické zprávy s kódy začínajícími CA jsou porušení analýzy kódu a upozornění, která se liší od upozornění kompilátoru probíraných v tomto článku. Upozornění analýzy kódu můžete potlačit různými způsoby, včetně použití značek specifických pro weby a pro projekt nebo globálně pomocí konfiguračních souborů pravidel. Viz Potlačení upozornění analýzy kódu a Potlačení porušení analýzy kódu.