Možnosti konfigurace pro analýzu kódu

Pravidla analýzy kódu mají různé možnosti konfigurace. Některé z těchto možností jsou zadány jako páry klíč-hodnota v konfiguračním souboru analyzátoru pomocí syntaxe <option key> = <option value>. Další možnosti, které konfigurují analýzu kódu jako celek, jsou ve vašem souboru projektu k dispozici jako vlastnosti MSBuild.

Nejběžnější možností, kterou nakonfigurujete, je závažnost pravidla. Úroveň závažnosti můžete nakonfigurovat pro jakékoli pravidlo, včetně pravidel kvality kódu a pravidel stylu kódu. Pokud chcete například povolit pravidlo jako upozornění, přidejte do konfiguračního souboru analyzátoru následující pár klíč-hodnota:

dotnet_diagnostic.<rule ID>.severity = warning

Můžete také nakonfigurovat další možnosti pro přizpůsobení chování pravidla:

  • Pravidla kvality kódu mají možnosti chování, jako je například názvy metod, na které se má pravidlo použít.
  • Pravidla stylu kódu mají možnosti předvoleb stylu, například tam, kde jsou nové řádky žádoucí.
  • Pravidla analyzátoru třetích stran mohou definovat vlastní možnosti konfigurace s vlastními názvy klíčů a formáty hodnot.

Obecné možnosti

Tyto možnosti platí pro analýzu kódu jako celek. Nelze je použít pouze na konkrétní pravidlo.

Další možnosti najdete v tématu Vlastnosti analýzy kódu.

Režim analýzy

I když sada .NET SDK obsahuje všechna pravidla analýzy kódu, ve výchozím nastavení jsou povoleny pouze některé z nich. Režim analýzy určuje, která sada pravidel, která se mají povolit, pokud existuje. Můžete zvolit agresivnější režim analýzy, ve kterém je povolená většina nebo všechna pravidla. Nebo můžete zvolit konzervativnější režim analýzy, ve kterém je většina nebo všechna pravidla zakázaná, a podle potřeby se můžete přihlásit ke konkrétním pravidlům. Nastavte režim analýzy přidáním <Vlastnosti AnalysisMode> MSBuild do vašeho souboru projektu.

<PropertyGroup>
  <AnalysisMode>Recommended</AnalysisMode>
</PropertyGroup>

Počínaje rozhraním .NET 6 můžete také hromadně povolit kategorii pravidel pomocí vlastnosti MsBuild Kategorie>> AnalysisMode<.<

Poznámka:

Pokud konfigurujete analýzu kódu pomocí vlastností MSBuild, jako AnalysisModejsou , všechny možnosti hromadné konfigurace, které jste nastavili v konfiguračním souboru , budou ignorovány. Pokud jste například hromadně povolili všechna pravidla nebo kategorii pravidel v souboru .editorconfig , bude tato konfigurace ignorována.

Povolení analýzy kódu

Analýza kódu je ve výchozím nastavení povolená pro projekty, které cílí na .NET 5 a novější verze. Pokud máte sadu .NET 5+ SDK, ale váš projekt cílí na jinou implementaci .NET, můžete analýzu kódu povolit ručně nastavením vlastnosti EnableNETAnalyzers v souboru projektu na true.

<PropertyGroup>
  <EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>

Vyloučit vygenerovaný kód

Upozornění analyzátoru kódu .NET nejsou užitečná u vygenerovaných souborů kódu, jako jsou soubory generované návrhářem, které uživatelé nemůžou upravovat, aby opravili porušení. Ve většině případů analyzátory kódu přeskočí generované soubory kódu a neoznamují porušení těchto souborů.

Ve výchozím nastavení se soubory s určitými příponami souborů nebo automaticky generovanými hlavičkami souborů považují za vygenerované soubory s kódem. Například název souboru končící .designer.cs nebo .generated.cs je považován za vygenerovaný kód. Tato možnost konfigurace umožňuje zadat další vzory pojmenování, které se mají považovat za vygenerovaný kód. Další soubory a složky nakonfigurujete přidáním položky do konfiguračního generated_code = true | false souboru. Pokud chcete například zacházet se všemi soubory, jejichž název končí .MyGenerated.cs jako vygenerovaný kód, přidejte následující položku:

[*.MyGenerated.cs]
generated_code = true

Možnosti specifické pro pravidlo

Možnosti specifické pro pravidlo lze použít pro jedno pravidlo, sadu pravidel nebo všechna pravidla. Mezi možnosti specifické pro pravidlo patří:

Úroveň závažnosti

Následující tabulka uvádí různé závažnosti pravidel, které můžete nakonfigurovat pro všechna pravidla analyzátoru, včetně pravidel kvality kódu a stylu kódu.

Hodnota konfigurace závažnosti Chování v čase sestavení
error Porušení se zobrazují jako chyby sestavení a způsobují selhání sestavení.
warning Porušení se zobrazují jako upozornění sestavení, ale nezpůsobují selhání sestavení (pokud nemáte nastavenou možnost považovat upozornění za chyby).
suggestion Porušení se zobrazují jako zprávy sestavení a jako návrhy v integrovaném vývojovém prostředí sady Visual Studio. (V sadě Visual Studio se návrhy zobrazují jako tři šedé tečky pod prvními dvěma znaky.)
silent Porušení nejsou uživateli viditelná.

Pro pravidla stylu kódu ale funkce generování kódu v sadě Visual Studio stále generují kód v tomto stylu. Tato pravidla se také účastní vyčištění a zobrazí se v nabídce Rychlé akce a refaktoringy v sadě Visual Studio.
none Pravidlo je zcela potlačeno.

Pro pravidla stylu kódu ale funkce generování kódu v sadě Visual Studio stále generují kód v tomto stylu.
default Použije se výchozí závažnost pravidla. Výchozí závažnosti pro každou verzi .NET jsou uvedené v úložišti roslyn-analyzers. V této tabulce "Zakázáno" odpovídá none, "Skryté" odpovídá silenta "Informace" odpovídá suggestion.

Obor

  • Jedno pravidlo

    Pokud chcete nastavit závažnost pravidla pro jedno pravidlo, použijte následující syntaxi.

    dotnet_diagnostic.<rule ID>.severity = <severity value>
    
  • Kategorie pravidel

    Pokud chcete nastavit výchozí závažnost pravidla pro kategorii pravidel, použijte následující syntaxi. Toto nastavení závažnosti ale ovlivňuje pouze pravidla v dané kategorii, která jsou ve výchozím nastavení povolená.

    dotnet_analyzer_diagnostic.category-<rule category>.severity = <severity value>
    

    Různé kategorie jsou uvedeny a popsány v kategoriích pravidel. Kromě toho můžete kategorii konkrétního pravidla najít na stránce s referenčními informacemi, například CA1000.

  • Všechna pravidla

    Pokud chcete nastavit výchozí závažnost pravidla pro všechna pravidla analyzátoru, použijte následující syntaxi. Toto nastavení závažnosti ale má vliv jenom na pravidla, která jsou ve výchozím nastavení povolená.

    dotnet_analyzer_diagnostic.severity = <severity value>
    

Důležité

Když nakonfigurujete úroveň závažnosti pro více pravidel s jednou položkou, buď pro kategorii pravidel, nebo pro všechna pravidla, závažnost se vztahuje pouze na pravidla, která jsou ve výchozím nastavení povolená. A pokud povolíte všechna pravidla pomocí vlastností <NÁSTROJE MSBuild AnalysisMode> nebo< AnalysisLevel>, budou všechny hromadné dotnet_analyzer_diagnostic možnosti ignorovány. Z tohoto důvodu je lepší povolit kategorii pravidel nastavením AnalysisMode<Category>> na All.<

Poznámka:

Předpona pro nastavení závažnosti pro jedno pravidlo dotnet_diagnosticse mírně liší od předpony pro konfiguraci závažnosti prostřednictvím kategorie nebo pro všechna pravidla dotnet_analyzer_diagnostic.

Pořadí podle priority

Pokud máte více položek konfigurace závažnosti, které lze použít na stejné ID pravidla, priorita je zvolena v následujícím pořadí:

  • Položka pro kategorii má přednost před položkou pro všechna pravidla analyzátoru.
  • Položka pro jednotlivá pravidla podle ID má přednost před položkou pro kategorii.

Představte si následující příklad, kde CA1822 má kategorii Výkon:

[*.cs]
dotnet_diagnostic.CA1822.severity = error
dotnet_analyzer_diagnostic.category-performance.severity = warning
dotnet_analyzer_diagnostic.severity = suggestion

V předchozím příkladu platí všechny tři položky závažnosti pro CA1822. Při použití zadaných pravidel priority však první položka založená na ID pravidla vyhrává nad dalšími položkami. V tomto příkladu bude mít CA1822 účinnou závažnost error. Všechna ostatní pravidla v kategorii Výkon budou mít závažnost warning.

Informace o tom, jak je rozhodována priorita mezi soubory, najdete v části Priorita v článku Konfigurační soubory.