Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud při vytváření kódu spolupracujete s týmem, je často užitečné označit, že upozornění není použitelné. Potlačení hlášení o porušení v analýze kódu naznačuje členům týmu, že kód byl zkontrolován a že lze upozornění potlačit. Následující části popisují různé způsoby potlačení porušení analýzy kódu pomocí integrovaného vývojového prostředí sady Visual Studio.
Potlačení porušení pomocí souboru EditorConfig
V souboru EditorConfig pro vaše řešení nebo projekt přidejte položku pro každé pravidlo, které chcete konfigurovat, a nastavte jeho závažnost na none. Například: dotnet_diagnostic.CA1822.severity = none. Další informace naleznete v tématu Ruční konfigurace závažnosti pravidla v souboru EditorConfig. Pokud chcete přidat soubor EditorConfig, přečtěte si téma Přidání souboru EditorConfig do projektu.
Potlačení porušení ve zdrojovém kódu
Porušení ve zdrojovém kódu můžete potlačit pomocí direktivy preprocesoru, která potlačuje porušení určitého řádku kódu:
- C#: upozornění #pragma
- Visual Basic: Zakázat upozornění
Nebo můžete použít atribut SuppressMessageAttribute k potlačení upozornění v kódu jazyka C# a Visual Basic.
Potlačení porušení pomocí editoru kódu
Chcete-li potlačit porušení pomocí editoru kódu, postupujte takto:
Umístěte kurzor na řádek kódu s porušením a stisknutím kombinace kláves Ctrl+Period (.) nebo Alt+Enter otevřete nabídku Rychlé akce .
Vyberte Potlačit nebo konfigurovat problémy>Potlačit <pravidlo číslo> a pak zvolte buď ve zdroji, nebo ve zdroji (atributu).
Pokud se rozhodnete ve zdroji, zobrazí se náhled direktivy preprocesoru přidané do kódu.
Pokud se rozhodnete ve zdroji (atributu), zobrazí se náhled atributu SuppressMessageAttribute přidaného do kódu.
Potlačení porušení pomocí seznamu chyb
Chcete-li potlačit porušení pomocí okna Seznam chyb , postupujte takto:
V okně Seznam chyb vyberte pravidla, která chcete potlačit.
Klikněte pravým tlačítkem myši a pak vyberte Potlačit>ve zdroji.
Otevře se dialogové okno Náhled změn a zobrazí náhled direktivy #pragma warning pro C# nebo direktivy #Disable warning pro Visual Basic, které byly přidány do zdrojového kódu.
Výběrem možnosti Použít uložte změny v souboru kódu.
Vyloučit diagnostiku sestavení seznamu chyb
Pokud v okně Seznam chyb nevidíte možnost Potlačit, je pravděpodobné, že narušení pochází ze sestavení a nikoliv z živé analýzy. V okně Seznam chyb se zobrazí diagnostika nebo porušení pravidel z živé analýzy kódu i sestavení. Vzhledem k tomu, že diagnostika sestavení může být zastaralá, například pokud jste upravili kód tak, aby opravili porušení, ale neprovedli jste nové sestavení, nelze vždy potlačit tyto diagnostiky v seznamu chyb.
Diagnostika z živé analýzy nebo Technologie IntelliSense je vždy up-todatum s aktuálními zdroji a je možné je vždy potlačit ze seznamu chyb. Pokud chcete z vašeho výběru vyloučit diagnostiku sestavení, postupujte takto:
V rozbalovacím seznamu filtru seznamu chyb změňte výběr z Sestavení + IntelliSense na IntelliSense pouze.
Vyberte diagnostiku, kterou chcete potlačit, a pokračujte podle předchozího popisu.
Potlačení porušení pomocí globálního souboru potlačení
Globální soubor potlačení používá atribut SuppressMessageAttribute k potlačení porušení kódu.
Použijte soubor globálního potlačení z editoru kódu
Chcete-li potlačit porušování pomocí globálního souboru pro potlačení v editoru kódu, postupujte takto:
V editoru kódu umístěte kurzor na řádek kódu s porušením a stisknutím kláves Ctrl+Period (.) nebo Alt+Enter otevřete nabídku Rychlé akce .
Vyberte Potlačit <pravidlo číslo>, a pak zvolte v Souboru potlačení.
Visual Studio vytvoří v editoru kódu kartu obsahující nový soubor globálního potlačení.
Použít globální soubor pro potlačení ze seznamu chyb
Chcete-li potlačit porušení pomocí globálního souboru potlačení pomocí okna Seznam chyb, postupujte takto:
V okně Seznam chyb vyberte pravidla, která chcete potlačit.
Klikněte pravým tlačítkem myši a pak vyberte Potlačit>v souboru potlačení.
Otevře se dialogové okno Náhled změn a zobrazí náhled atributu SuppressMessageAttribute přidaného do souboru globálního potlačení.
Výběrem možnosti Použít uložíte soubor globálního potlačení.
Potlačení všech aktuálních porušení
Potlačení všech aktuálních porušení se někdy označuje jako nastavení základní linie. Chcete-li potlačit všechna aktuální porušení v řešení nebo projektu, postupujte takto:
V řádku nabídek sady Visual Studio vyberte Analyzovat>, poté Sestavení a potlačit aktivní problémy.
Pokud chcete potlačit porušení pro celé řešení, vyberte Pro řešení, nebo vyberte Pro <název projektu>, abyste potlačili porušení pouze pro svůj projekt.
Potlačení porušení pomocí nastavení projektu
Chcete-li potlačit porušení pomocí nastavení projektu Průzkumníka řešení, postupujte takto:
V Průzkumníku řešení vyberte projekt.
Klikněte pravým tlačítkem myši a vyberte Vlastnosti (nebo stiskněte Alt+Enter).
V okně Vlastnosti vyberte v levém podokně Analýza kódu, a poté zrušte zaškrtnutí u možnosti Potlačit výsledky vygenerovaného kódu.
Potlačení porušení pomocí sady pravidel
V editoru sad pravidel zrušte zaškrtnutí políčka vedle názvu nebo nastavte Akci na Žádná.
Potlačení ve zdroji a atribut SuppressMessageAttribute
Potlačení ve zdroji (ISS) používá SuppressMessageAttribute atribut k potlačení upozornění. Atribut můžete přidat SuppressMessageAttribute do zdrojového souboru poblíž segmentu kódu, který vygeneroval upozornění.
Atribut můžete buď zadat ručně v editoru kódu, nebo atribut přidat automaticky následujícím způsobem:
V editoru kódu umístěte kurzor na řádek kódu s porušením a stisknutím kláves Ctrl+Period (.) nebo Alt+Enter otevřete nabídku Rychlé akce .
V nabídce Rychlé akce vyberte ><Potlačit >číslo pravidla.
Proveďte jednu z následujících akcí:
Vyberte ve zdroji (atributu).
Visual Studio přidá atribut
SuppressMessageAttributedo kódu.Vyberte v souboru potlačení.
Visual Studio vytvoří v editoru kódu kartu obsahující nový soubor globálního potlačení s
SuppressMessageAttributeatributy.
Atribut SuppressMessageAttribute je podmíněný atribut, který je součástí metadat sestavení spravovaného kódu. Tento atribut je zahrnut pouze v případě, že CODE_ANALYSIS je symbol kompilace definován v době kompilace.
Pouze v kódu jazyka C++ a CLI přidejte atribut pomocí maker CA_SUPPRESS_MESSAGE nebo CA_GLOBAL_SUPPRESS_MESSAGE v hlavičkovém souboru.
Pokud migrujete projekt na nejnovější verzi sady Visual Studio, může se zobrazit velký počet upozornění analýzy kódu. Pokud nejste připraveni opravit upozornění, můžete je potlačit výběrem možnosti Analyzovat>Sestavit a potlačit aktivní problémy.
Poznámka:
Nepoužívejte u produkčních buildů zdrojová potlačení, abyste zabránili náhodnému dodání metadat zdrojových potlačení.
SuppressMessageAttribute – formát atributu
Atribut SuppressMessageAttribute má následující formát:
[Scope:SuppressMessage("Rule Category", "Rule Id", Justification = "Justification", MessageId = "MessageId", Scope = "Scope", Target = "Target")]
Mezi vlastnosti atributu patří:
Category: Kategorie pravidla. Další informace o kategoriích pravidel analýzy kódu najdete v tématu Pravidla kvality kódu.CheckId:Identifikátor pravidla. Podpora obsahuje krátký i dlouhý název identifikátoru pravidla. Krátký název jeCAXXXX; dlouhý název jeCAXXXX:FriendlyTypeName.Justification: Text použitý k zdokumentování důvodu potlačení zprávy.MessageId: Jedinečný identifikátor problému pro každou zprávu.Scope: Cíl, na kterém je upozornění potlačováno. Pokud cíl není zadaný, systém ho nastaví na cíl atributu. Mezi podporované obory patří:module: Tato působnost potlačuje varování proti sestavení. Jedná se o globální potlačení, které platí pro celý projekt.resource: pouze pro starší verzi analýzy tento rozsah potlačí upozornění v diagnostických informacích zapsaných do souborů prostředků, které jsou součástí modulu (sestavení). Tento obor se v kompilátorech C#/VB nečte ani nerespektuje pro diagnostiku analyzátoru Roslyn, která analyzuje pouze zdrojové soubory.type: Tento rozsah potlačuje upozornění na typ.member: Tento rozsah potlačí upozornění na člena.namespace: Tento obor potlačí upozornění na samotný obor názvů. Nepotlačuje varování týkající se typů v rámci oboru názvů.namespaceanddescendants: (Vyžaduje kompilátor verze 3.x nebo vyšší a Visual Studio 2019 nebo novější) Tento rozsah potlačuje varování v oboru názvů a všechny jeho podřízené symboly. Zastaralá analýza ignorujenamespaceanddescendantshodnotu.
Target: Identifikátor, který určuje cíl, na kterém je upozornění potlačeno. Musí obsahovat plně kvalifikovaný název komponenty.
Když vidíte upozornění ve Visual Studio, můžete zobrazit příklady SuppressMessageAttribute tím, že přidáte potlačení do globálního souboru potlačení. Atribut potlačení a jeho požadované vlastnosti se zobrazí v okně náhledu.
Použití atributu SuppressMessage
Upozornění analýzy kódu jsou potlačena na úrovni, na kterou se atribut SuppressMessageAttribute používá. Atribut lze například použít na úrovni sestavení, modulu, typu, člena nebo parametru. Účelem použití tohoto atributu je úzce spojit informace potlačení s kódem, ve kterém dojde k porušení.
Obecná forma potlačení zahrnuje kategorii pravidla a identifikátor pravidla, který obsahuje volitelnou čitelný reprezentaci názvu pravidla. Například:
[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
Pokud existují přísné důvody týkající se výkonu pro minimalizaci potlačení v metadatech zdroje, název pravidla může být vynechán. Kategorie pravidla a id pravidla společně tvoří dostatečně jedinečný identifikátor pravidla. Například:
[SuppressMessage("Microsoft.Design", "CA1039")]
Z důvodu udržovatelnosti se nedoporučuje vynechat název pravidla.
Potlačení selektivních porušení v těle metody (pouze starší analýza)
Atributy potlačení lze použít u metody, ale nelze je vložit do těla metody. Pokud do metody přidáte SuppressMessageAttribute atribut, potlačí se všechna porušení konkrétního pravidla.
V některých případech můžete chtít potlačit konkrétní instanci porušení. Představte si příklad, kdy budoucí kód není automaticky vyloučený z pravidla analýzy kódu. Určitá pravidla analýzy kódu umožňují potlačit konkrétní instanci porušení pomocí MessageId vlastnosti atributu SuppressMessageAttribute . Obecně platí, že starší pravidla pro porušení konkrétního symbolu (místní proměnná nebo parametr) respektují MessageId vlastnost.
CA1500:VariableNamesShouldNotMatchFieldNames je příkladem takového pravidla. Starší pravidla pro porušování spustitelného kódu (bez symbolů) však nerespektují vlastnost MessageId. Analyzátory platformy .NET Compiler Platform (Roslyn) také nerespektují MessageId vlastnost.
Chcete-li potlačit konkrétní porušení pravidla týkající se symbolu, zadejte název symbolu pro vlastnost MessageId u atributu SuppressMessageAttribute. Následující příklad ukazuje kód se dvěma porušeními pravidla CA1500:VariableNamesShouldNotMatchFieldNames: jedno porušení se týká proměnné name a druhé porušení proměnné age. Je potlačeno pouze porušení vztahující se k symbolu age.
public class Animal
{
int age;
string name;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1500:VariableNamesShouldNotMatchFieldNames", MessageId = "age")]
private void PrintInfo()
{
int age = 5;
string name = "Charlie";
Console.WriteLine($"Age {age}, Name {name}");
}
}
Potlačení na globální úrovni
Nástroj pro analýzu spravovaného SuppressMessageAttribute kódu zkoumá atributy použité na úrovni sestavení, modulu, typu, člena nebo parametru. Odesílá také porušení proti zdrojům a oborům názvů. Tato porušení musí být použita na globální úrovni a jsou vymezena a cílená. Například následující zpráva potlačuje porušení jmenného prostoru:
[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")]
Pro potlačení na globální úrovni:
Když potlačíte upozornění s oborem
namespace, potlačí se upozornění na samotný obor názvů. Nepotlačuje upozornění na datové typy v rámci názvového prostoru.Targetvždy obsahuje plně kvalifikovaný název položky.Jakékoli potlačení lze vyjádřit zadáním explicitního oboru. Tato omezení musí být uplatňována na globální úrovni. Potlačení na úrovni člena nelze určit úpravou typu.
Potlačení na globální úrovni představují jediný způsob, jak potlačit zprávy, které odkazují na kód vygenerovaný kompilátorem, který se nemapuje na explicitně zadaný zdroj uživatele. Například následující kód potlačí porušení proti konstruktoru generovanému kompilátorem:
[module: SuppressMessage("Microsoft.Design", "CA1055:AbstractTypesDoNotHavePublicConstructors", Scope="member", Target="Microsoft.Tools.FxCop.Type..ctor()")]
Globální soubor potlačení
Globální soubor potlačení zahrnuje potlačení, která jsou buď na úrovni celosvětového použití, nebo potlačení, která neuvádějí konkrétní cíl. Například potlačení pro porušení na úrovni sestavení jsou uložena v tomto souboru. Některé potlačení ASP.NET jsou navíc uloženy v tomto souboru, protože nastavení na úrovni projektu nejsou k dispozici pro kód za formulářem. Visual Studio vytvoří soubor s globálním potlačením a přidá jej do projektu, když poprvé vyberete možnost V souboru potlačení projektu příkazu Potlačit v okně Seznam chyb.
Rozsah tlumení modulu
Porušení kvality kódu pro celé sestavení můžete potlačit pomocí module rozsahu.
Například následující atribut v souboru projektu GlobalSuppressions potlačí porušení pravidla ConfigureAwait pro projekt ASP.NET Core:
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2007:Consider calling ConfigureAwait on the awaited task", Justification = "ASP.NET Core doesn't use thread context to store request context.", Scope = "module")]
Vygenerovaný kód
Kompilátory spravovaného kódu a některé externí nástroje generují kód, který pomáhá rychle vyvíjet kód. Kód vygenerovaný kompilátorem, který se zobrazí ve zdrojových souborech, je označen atributem GeneratedCodeAttribute .
Pro analýzu zdrojového kódu můžete potlačit zprávy ve vygenerovaném kódu v souboru .editorconfig . Další informace naleznete v tématu Vyloučení generovaného kódu.
U starších verzí analýzy kódu můžete zvolit, jestli chcete potlačit upozornění analýzy kódu a chyby pro vygenerovaný kód. Informace o tom, jak potlačit taková upozornění a chyby, naleznete v tématu Potlačení upozornění analýzy kódu pro vygenerovaný kód.
Poznámka:
Analýza kódu ignoruje GeneratedCodeAttribute , když se použije na celé sestavení nebo na jeden parametr.