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.
Analyzátory platformy kompilátoru .NET (Roslyn) kontrolují problémy s kvalitou a stylem kódu jazyka C# nebo Visual Basic. Tyto analyzátory jsou součástí sady .NET SDK a nemusíte je instalovat samostatně. Pokud váš projekt cílí na .NET 5 nebo novější, je ve výchozím nastavení povolená analýza kódu. (Informace o povolení analýzy kódu v projektech, které cílí na rozhraní .NET Framework, naleznete v tématu Povolení analýzy kódu ve starších projektech.)
Pokud analyzátor najde porušení pravidel, zobrazí se v závislosti na konfiguraci jednotlivých pravidel jako návrh, upozornění nebo chyba. Porušení analýzy kódu se zobrazí s předponou CA nebo IDE, aby se odlišila od chyb kompilátoru.
Analýza kvality kódu
Pravidla analýzy kvality kódu (CAxxxx) kontrolují kód jazyka C# nebo Visual Basic a kontrolují zabezpečení, výkon, návrh a další problémy. Analýza je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 nebo novější. Analýzu kódu můžete povolit u projektů, které cílí na starší verze rozhraní .NET, nastavením vlastnosti EnableNETAnalyzers na truehodnotu . Analýzu kódu projektu můžete také zakázat nastavením EnableNETAnalyzers na false.
Tip
Pokud používáte Visual Studio, mnoho pravidel analyzátoru má přidružené opravy kódu, které můžete použít pro automatické odstranění problému. Opravy kódu se zobrazují v nabídce ikon žárovky.
Povolená pravidla
Následující pravidla jsou ve výchozím nastavení povolená jako chyby nebo upozornění v .NET 10. Další pravidla jsou povolená jako návrhy.
| ID diagnostiky | Kategorie | Závažnost | Přidaná verze | Popis |
|---|---|---|---|---|
| CA1416 | Vzájemná funkční spolupráce | Upozorňující | .NET 5 | Ověřit kompatibilitu platformy |
| CA1417 | Vzájemná funkční spolupráce | Upozorňující | .NET 5 | Nepoužívejte OutAttribute u parametrů řetězce pro volání nespravovaného kódu. |
| CA1418 | Vzájemná funkční spolupráce | Upozorňující | .NET 6 | Použití platného řetězce platformy |
| CA1420 | Vzájemná funkční spolupráce | Upozorňující | .NET 7 | Použití vlastností, které vyžadují marshalling za běhu, když je tento zakázán, způsobí výjimky během běhu. |
| CA1422 | Vzájemná funkční spolupráce | Upozorňující | .NET 7 | Ověřit kompatibilitu platformy |
| CA1831 | Výkon | Upozorňující | .NET 5 | Místo AsSpan indexerů založených na rozsahu pro řetězec použijte, pokud je to vhodné. |
| CA1856 | Výkon | Chyba | .NET 8 | Nesprávné použití atributu ConstantExpected |
| CA1857 | Výkon | Upozorňující | .NET 8 | Pro parametr se očekává konstanta. |
| CA2013 | Spolehlivost | Upozorňující | .NET 5 | Nepoužívejte ReferenceEquals s typy hodnot |
| CA2014 | Spolehlivost | Upozorňující | .NET 5 | Nepoužívat stackalloc ve smyčce |
| CA2015 | Spolehlivost | Upozorňující | .NET 5 | Nedefinujte finalizační metody pro typy odvozené z MemoryManager<T> |
| CA2017 | Spolehlivost | Upozorňující | .NET 6 | Neshoda počtu parametrů |
| CA2018 | Spolehlivost | Upozorňující | .NET 6 | Argument count , který má Buffer.BlockCopy určovat počet bajtů, které se mají zkopírovat |
| CA2021 | Spolehlivost | Upozorňující | .NET 8 | Nevyvolávat Enumerable.Cast<T> nebo Enumerable.OfType<T> s nekompatibilními typy |
| CA2022 | Spolehlivost | Upozorňující | .NET 9 | Vyhněte se neexaktnímu čtení pomocí Stream.Read |
| CA2023 | Spolehlivost | Upozorňující | .NET 10 | Neplatné složené závorky v šabloně zprávy |
| CA2200 | Využití | Upozorňující | .NET 5 | Znovu vyvolejte pro zachování podrobností zásobníku |
| CA2247 | Využití | Upozorňující | .NET 5 | Argument předaný konstruktoru TaskCompletionSource by měl být TaskCreationOptions výčt místo TaskContinuationOptions |
| CA2252 | Využití | Chyba | .NET 6 | Přihlášení k funkcím ve verzi Preview |
| CA2255 | Využití | Upozorňující | .NET 6 | Atribut ModuleInitializer by se neměl používat v knihovnách. |
| CA2256 | Využití | Upozorňující | .NET 6 | Všechny členy deklarované v nadřazených rozhraních musí mít implementaci v DynamicInterfaceCastableImplementationrozhraní -attributed. |
| CA2257 | Využití | Upozorňující | .NET 6 | Členy definované v rozhraní s DynamicInterfaceCastableImplementationAttributestatic |
| CA2258 | Využití | Upozorňující | .NET 6 |
DynamicInterfaceCastableImplementation Poskytnutí rozhraní v jazyce Visual Basic není podporováno |
| CA2259 | Využití | Upozorňující | .NET 7 |
ThreadStatic má vliv pouze na statická pole. |
| CA2260 | Využití | Upozorňující | .NET 7 | Použít správný parametr typu |
| CA2261 | Využití | Upozorňující | .NET 8 | Nepoužívejte s ConfigureAwaitOptions.SuppressThrowingTask<TResult> |
| CA2264 | Využití | Upozorňující | .NET 9 | Nepředávejte nenulovou hodnotu do ArgumentNullException.ThrowIfNull |
| CA2265 | Využití | Upozorňující | .NET 9 | Nerovnávejte se ani Span<T> nerovnávejte nulldefault |
Můžete změnit závažnost těchto pravidel a zakázat je nebo zvýšit jejich úroveň na chyby. Můžete také povolit další pravidla.
- Seznam pravidel, která jsou součástí každé verze sady .NET SDK, najdete v tématu Verze Analyzátoru.
- Seznam všech pravidel kvality kódu najdete v tématu Pravidla kvality kódu.
Povolení dalších pravidel
Režim analýzy odkazuje na předdefinovanou konfiguraci analýzy kódu, kde nejsou povolená žádná, některá nebo všechna pravidla. Ve výchozím režimu analýzy (Default) je jako upozornění sestavení povolen pouze malý počet pravidel. Režim analýzy projektu můžete změnit nastavením <AnalysisMode> vlastnosti v souboru projektu. Povolené hodnoty jsou:
| Hodnota | Popis |
|---|---|
None |
Všechna pravidla jsou zakázaná. Můžete selektivně vyjádřit výslovný souhlas s jednotlivými pravidly, která je povolí. |
Default |
Výchozí režim, kdy jsou určitá pravidla povolená jako upozornění sestavení, jsou určitá pravidla povolená jako návrhy integrovaného vývojového prostředí sady Visual Studio a zbytek je zakázaný. |
Minimum |
Agresivnější režim než Default režim. Některé návrhy, které důrazně doporučujeme pro vynucování sestavení, jsou povolené jako upozornění sestavení. Pokud chcete zjistit, která pravidla zahrnují, zkontrolujte soubor %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig. (Pro .NET 7 a starší verze je přípona souboru .editorconfig.) |
Recommended |
Agresivnější režim než Minimum režim, kdy je jako upozornění sestavení povoleno více pravidel. Chcete-li zjistit, jaká pravidla jsou zahrnuta, zkontrolujte soubor %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig. (Pro .NET 7 a starší verze je přípona souboru .editorconfig.) |
All |
Všechna pravidla jsou povolená jako upozornění* sestavení. Můžete selektivně vyjádřit výslovný nesouhlas s individuálními pravidly a zakázat je. * Následující pravidla nejsou povolena nastavením AnalysisModeAll na : AnalysisLevellatest-allCA1017, CA1045, CA1005, CA1014, CA1060, CA1021 a pravidly analyzátoru metrik kódu (CA1501, CA1502, CA1505, CA1506 a CA1509). Tato starší pravidla můžou být v budoucí verzi zastaralá. Přesto je ale můžete povolit jednotlivě pomocí dotnet_diagnostic.CAxxxx.severity = <severity> položky. |
Můžete také vynechat <AnalysisMode> ve prospěch složené hodnoty pro <AnalysisLevel> vlastnost. Například následující hodnota umožňuje doporučenou sadu pravidel pro nejnovější verzi: <AnalysisLevel>latest-Recommended</AnalysisLevel>. Další informace najdete na webu AnalysisLevel.
Pokud chcete zjistit výchozí závažnost pro každé dostupné pravidlo a jestli je pravidlo povolené v Default režimu analýzy, podívejte se na úplný seznam pravidel.
Zacházení s upozorněními jako s chybami
Pokud při sestavování projektů použijete -warnaserror příznak, budou se všechna upozornění analýzy kódu považovat také za chyby. Pokud nechcete, aby se upozornění na kvalitu kódu (CAxxxx) zacházelo jako s chybami v přítomnosti -warnaserror, můžete vlastnost MSBuild nastavit CodeAnalysisTreatWarningsAsErrors v false souboru projektu.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
Stále se zobrazí upozornění analýzy kódu, ale nebudou přerušovat vaše sestavení.
Nejnovější aktualizace
Ve výchozím nastavení získáte nejnovější pravidla analýzy kódu a výchozí závažnosti pravidel při upgradu na novější verze sady .NET SDK. Pokud například nechcete toto chování používat, pokud chcete zajistit, aby nebyla povolena nebo zakázána žádná nová pravidla, můžete ho přepsat jedním z následujících způsobů:
AnalysisLevelNastavte vlastnost MSBuild na určitou hodnotu, chcete-li uzamknout upozornění na danou sadu. Když upgradujete na novější sadu SDK, stále se zobrazí opravy chyb pro tato upozornění, ale nebudou povolena žádná nová upozornění a nebudou zakázána žádná existující upozornění. Pokud chcete například uzamknout sadu pravidel na ty, které jsou součástí sady .NET SDK verze 8.0, přidejte do souboru projektu následující položku.<PropertyGroup> <AnalysisLevel>8.0</AnalysisLevel> </PropertyGroup>Tip
Výchozí hodnota
AnalysisLevelvlastnosti jelatest, což znamená, že při přechodu na novější verze sady .NET SDK vždy získáte nejnovější pravidla analýzy kódu.Další informace a zobrazení seznamu možných hodnot naleznete v tématu AnalysisLevel.
Nainstalujte balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers a oddělte aktualizace pravidel od aktualizací sady .NET SDK. U projektů, které cílí na .NET 5 nebo novější, vypne instalace balíčku integrované analyzátory sady SDK. Pokud sada SDK obsahuje novější verzi sestavení analyzátoru, než je verze balíčku NuGet, zobrazí se upozornění na sestavení sestavení. Chcete-li upozornění zakázat, nastavte
_SkipUpgradeNetAnalyzersNuGetWarningvlastnost natruehodnotu .Poznámka:
Pokud nainstalujete balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers, neměli byste přidat vlastnost EnableNETAnalyzers do souboru projektu nebo do souboru Directory.Build.props . Při instalaci balíčku NuGet a
EnableNETAnalyzersvlastnost je nastavena natrue, vygeneruje se upozornění sestavení.
Analýza stylu kódu
Pravidla analýzy stylu kódu (IDExxxx) umožňují definovat a udržovat konzistentní styl kódu v základu kódu. Výchozí nastavení povolení jsou:
Sestavení příkazového řádku: Analýza stylu kódu je ve výchozím nastavení zakázaná pro všechny projekty .NET v sestaveních příkazového řádku.
Analýzu stylu kódu můžete povolit při sestavování, a to jak na příkazovém řádku, tak v sadě Visual Studio. Porušení stylu kódu se zobrazují jako upozornění nebo chyby s předponou IDE. To vám umožní vynucovat konzistentní styly kódu v době sestavení.
Visual Studio: Analýza stylu kódu je ve výchozím nastavení povolená pro všechny projekty .NET v sadě Visual Studio jako refaktoring rychlých akcí kódu.
Úplný seznam pravidel analýzy stylu kódu najdete v tématu Pravidla stylu kódu.
Povolení při sestavení
Analýzu stylu kódu můžete povolit při sestavování z příkazového řádku a v sadě Visual Studio. (Z důvodů výkonu však bude několik pravidel stylu kódu platit pouze v integrovaném vývojovém prostředí sady Visual Studio.)
Pokud chcete povolit analýzu stylu kódu při sestavení, postupujte takto:
Nastavte vlastnost MSBuild EnforceCodeStyleInBuild na
true.V souboru .editorconfig nakonfigurujte každé pravidlo stylu kódu IDE, které chcete spustit při sestavení jako upozornění nebo chybu. Příklad:
[*.{cs,vb}] # IDE0040: Accessibility modifiers required (escalated to a build warning) dotnet_diagnostic.IDE0040.severity = warningTip
Od verze .NET 9 můžete také použít formát možnosti k určení závažnosti a jeho dodržování v době sestavení. Příklad:
[*.{cs,vb}] # IDE0040: Accessibility modifiers required (escalated to a build warning) dotnet_style_require_accessibility_modifiers = always:warningPřípadně můžete nakonfigurovat celou kategorii tak, aby byla ve výchozím nastavení upozorněním nebo chybou, a pak v této kategorii selektivně vypnout pravidla, která nechcete spouštět při sestavení. Příklad:
[*.{cs,vb}] # Default severity for analyzer diagnostics with category 'Style' (escalated to build warnings) dotnet_analyzer_diagnostic.category-Style.severity = warning # IDE0040: Accessibility modifiers required (disabled on build) dotnet_diagnostic.IDE0040.severity = silent
Potlačení upozornění
Jedním ze způsobů, jak potlačit porušení pravidla, je nastavit možnost závažnosti pro toto ID pravidla v none souboru EditorConfig. Příklad:
dotnet_diagnostic.CA1822.severity = none
Další informace a další způsoby potlačení upozornění naleznete v tématu Jak potlačit upozornění analýzy kódu.
Povolení analýzy kódu ve starších projektech
Pokud váš projekt cílí na .NET 5 nebo novější, je ve výchozím nastavení povolená analýza kódu. Pokud váš projekt cílí na .NET Standard nebo .NET Framework, musíte ručně povolit analýzu kódu nastavením EnableNETAnalyzers vlastnost true.
Pokud váš projekt používá starší formát souboru projektu, znamená to, že neodkazuje na sadu SDK projektu, je potřeba provést několik dalších kroků pro povolení analýzy kódu:
- Přidejte odkaz na 📦 balíček NuGet Microsoft.CodeAnalysis.NetAnalyzers.
- Místo nastavení
AnalysisLevel, které není srozumitelné pro projekty ve stylu sady SDK, přidejte do souboru projektu následující vlastnosti:
<EffectiveAnalysisLevel>9</EffectiveAnalysisLevel>
<AnalysisMode>Recommended</AnalysisMode>
Analyzátory jiných výrobců
Kromě oficiálních analyzátorů .NET můžete nainstalovat také analyzátory třetích stran, jako jsou StyleCop, Roslynator, Meziantou.Analyzer, XUnit Analyzer a Sonar Analyzer.