/analyze (Analýza kódu)

Umožňuje zadat parametry pro analýzu a řízení kódu.

Syntaxe

Obecné možnosti analýzy:

/analyze[-]
/analyze:only
/analyze:quiet
/analyze:max_paths number
/analyze:stacksize number
/analyze:WX-

Možnosti modulu plug-in analýzy:

/analyze:plugin plugin_dll

Možnosti analýzy externích souborů:

/analyze:external-
/analyze:external:ruleset ruleset_files

Možnosti protokolu analýzy:

/analyze:autolog[-]
/analyze:autolog:ext extension
/analyze:log log_path

Možnosti formátu souboru protokolu:

/analyze:log:format:sarif
/analyze:log:format:xml

Možnosti obsahu souboru protokolu:

/analyze:sarif:analyzedfiles[-]
/analyze:sarif:configuration[-]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed

Možnosti sady pravidel:

/analyze:rulesetruleset_file

Možnosti sady pravidel:

/analyze:projectdirectory project_directory
/analyze:rulesetdirectory ruleset_directories
/analyze:ruleset ruleset_files

Argumenty

Obecné možnosti analýzy

/analyze[-]
Zapne analýzu kódu. Slouží /analyze- k explicitní vypnutí analýzy. /analyze- je výchozí chování.

Výstup analýzy ve výchozím nastavení přejde do konzoly nebo do okna Výstup sady Visual Studio, jako jsou jiné chybové zprávy. Analýza kódu také vytvoří soubor protokolu s názvem filename.nativecodeanalysis.xml, kde filename je název analyzovaného zdrojového souboru.

/analyze:only
Kompilátor ve výchozím nastavení zkompiluje kód tak, aby před spuštěním analýzy kódu vygeneroval soubory objektů. Tato /analyze:only možnost přeskočí průchod generování kódu kompilátorem a provede přímo analýzu kódu. Chyby kompilátoru stále brání spuštění analýzy kódu. Kompilátor ale nebude hlásit další upozornění, která by mohla během generování kódu najít. Pokud program neobsahuje upozornění generování kódu, výsledky analýzy můžou být nespolehlivé. Tuto možnost doporučujeme použít jenom v případě, že kód předá kontroly syntaxe generování kódu bez chyb nebo upozornění.

/analyze:quiet
Vypne výstup analýzy do konzoly nebo okna Výstup sady Visual Studio.

/analyze:max_paths number
Parametr number určuje maximální počet cest kódu k analýze. Výchozí hodnota analýzy je 256 cest. Větší hodnoty způsobují důkladnější kontrolu, ale analýza může trvat déle.

/analyze:stacksize number
Parametr number určuje velikost v bajtech rámce zásobníku, který generuje upozornění C6262. Výchozí velikost rámce zásobníku je 16 kB.

/analyze:WX-
Říká kompilátoru, aby nezachával s upozorněními analýzy kódu jako s chybami, i když /WX se používá možnost. Další informace najdete v tématu /WX (úroveň upozornění).>

Možnosti modulu plug-in analýzy

/analyze:plugin plugin_dll
Povolí zadanou knihovnu DLL modulu plug-in pro analýzu kódu.

Mezera mezi /analyze:plugin a plugin_dll cestou k souboru je volitelná, pokud cesta nevyžaduje dvojité uvozovky ("). Můžete například napsat /analyze:plugin EspxEngine.dll. Pokud je však cesta uzavřena do dvojitých uvozovek, nemůžete mít mezeru mezi /analyze:plugin a cestou k souboru. Následuje příklad: /analyze:plugin"c:\path\to\EspxEngine.dll".

Modul pro analýzu kódu používá moduly plug-in, které pomáhají najít konkrétní kategorie vad. Modul pro analýzu kódu se dodává s některými integrovanými moduly plug-in, které detekují různé vady. Pokud chcete použít jiný modul plug-in s modulem pro analýzu kódu, zadejte ho /analyze:plugin pomocí možnosti.

Modul plug-in LocalEspC.dll implementuje kontroly analýzy související s souběžností. Tyto kontroly vyvolávají upozornění v oblasti C261XX, například C26100C26167.

K načtení LocalEspC.dllpoužijte možnost /analyze:plugin LocalEspC.dllkompilátoru .

Některé moduly plug-in, například EspXEngine.dll, které jsou dodávány se sadou Visual Studio, využívají rozšíření, která mohou provádět další analýzu. Visual Studio obsahuje tato rozšíření pro EspXEngine: ConcurrencyCheck.dll, CppCoreCheck.dll, EnumIndex.dll, HResultCheck.dll, a VariantClear.dll. Kontrolují chyby problémů souběžnosti, porušení CppCoreGuidelines, nevhodné použití enum hodnot jako indexů, HRESULT hodnot nebo VARIANT hodnot.

Při sestavování na příkazovém řádku můžete pomocí Esp.Extensions proměnné prostředí určit rozšíření EspXEngine. Příklad:

set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;

K oddělení rozšíření použijte středník (;), jak je znázorněno v příkladu. Koncový středník není potřeba. Pro příponu můžete použít absolutní cestu k souboru nebo zadat relativní cestu z adresáře, který obsahuje EspXEngine.dll.

Modul EspXEngine.dll plug-in používá ConcurrencyCheck.dll k implementaci kontrol analýzy kódu související s souběžností. Tyto kontroly vyvolávají upozornění v oblasti C261XX, například C26100C26167.

Pokud vytváříte v okně příkazového řádku vývojáře, nejprve nastavte Esp.Extensions proměnnou prostředí tak, aby určila ConcurrencyCheck.dll rozšíření:

set Esp.Extensions=ConcurrencyCheck.dll

Potom použijte možnost /analyze:plugin EspXEngine.dll kompilátoru pro použití modulu plug-in EspXEngine.

Možnosti analýzy externích souborů

Počínaje sadou Visual Studio 2019 verze 16.10 můžete zadat různá pravidla analýzy a chování externích hlaviček. Pomocí parametru /external:I, /external:envnebo /external:anglebrackets možností můžete určit adresáře jako "externí" adresáře. Všechny soubory, které jsou zahrnuté pomocí externího #includeadresáře nebo jeho podadresářů, se považují za externí hlavičky. Další informace najdete v tématu /external (diagnostika externích hlaviček).>

Analýza kódu poskytuje tyto možnosti pro řízení analýzy externích souborů:

/analyze:external-
Přeskočí analýzu externích souborů hlaviček. Analýza kódu ve výchozím nastavení analyzuje externí soubory hlaviček stejně jako jiné soubory. Když je tato /analyze:external- možnost nastavená, analýza kódu přeskočí všechny soubory zadané jako externí, s výjimkou šablon z externích souborů. Šablony definované v externích záhlavích se považují za ne externí pomocí této /external:templates- možnosti. Tato /external:Wn možnost nemá vliv na analýzu kódu. Analýza kódu například analyzuje externí soubory a hlásí vady, i když /external:W0 je zadána.

/analyze:external:ruleset ruleset_files
Parametr ruleset_files určuje jeden nebo více souborů sady pravidel oddělených středníkem, které se mají použít k analýze externích souborů. Informace o sadách pravidel najdete v části Možnosti sad pravidel.

Existuje proměnná prostředí (CAExcludePath), která poskytuje podobnou, ale jednodušší schopnost přeskočit analýzu souborů v adresářích zadaných v proměnné prostředí. Pokud je adresář zadaný v /external:* obou možnostech i v CAExcludePath proměnné prostředí, považuje se za vyloučený a /analyze:external* možnosti se na tento adresář nevztahují.

Možnosti protokolu analýzy

/analyze:autolog[-]
Tento příznak se používá k povolení vytváření souboru protokolu analýzy pro každý z analyzovaných zdrojových souborů. Soubory protokolů se teď ve výchozím nastavení vytvářejí, takže tento příznak je většinou redundantní. Při použití změní výchozí rozšíření protokolu na *.pftlog místo .xml. Slouží /analyze:autolog- k zakázání protokolování do souborů.

/analyze:autolog:ext extension
Přepíše výchozí příponu souborů protokolu analýzy a použije extension místo toho. Pokud použijete příponu .sarif , soubor protokolu používá místo výchozího formátu XML formát SARIF.

/analyze:log log_path
Určuje cestu log_path k souboru protokolu místo automaticky generované cesty k souboru protokolu. log_path Pokud cesta obsahuje koncové zpětné lomítko a odkazuje na existující adresář, analýza kódu vytvoří všechny soubory protokolu v zadaném adresáři. log_path V opačném případě určuje cestu k souboru. Cesta k souboru dává kompilátoru pokyn, aby zkombinoval protokoly pro všechny analyzované zdrojové soubory do zadaného souboru protokolu. Pokud má cesta k souboru příponu .sarif , soubor protokolu používá místo výchozího formátu XML formát SARIF. Toto chování můžete přepsat pomocí /analyze:log:format:* možnosti.

Možnosti formátu souboru protokolu

Počínaje sadou Visual Studio 2019 verze 16.9 můžete zadat různé možnosti formátu protokolu pro analýzu kódu.

/analyze:log:format:xml
Vynutí použití formátu protokolu XML irelevantní z použité přípony souboru.

/analyze:log:format:sarif
Vynutí použití formátu protokolu SARIF irelevantní z použité přípony souboru.

Možnosti obsahu souboru protokolu

Od sady Visual Studio 2019 verze 16.9 můžete zadat různé možnosti obsahu protokolu pro analýzu kódu.

/analyze:sarif:analyzedfiles[-]
Přidá položky artefaktů souborů do souboru protokolu SARIF pro analyzované soubory, které nespravují upozornění. Tato možnost je ve výchozím nastavení zakázaná. Artefakty pro zdrojový soubor a soubory, které vygenerují výsledky, jsou vždy zahrnuty.

/analyze:sarif:configuration[-]
Přidá položky konfigurace pravidla, které určují, jak uživatel přepsá výchozí konfiguraci pravidla (ve výchozím nastavení je zakázaný).

/analyze:log:compilerwarnings
Přidá do souboru protokolu analýzy všechny vady, které modul analýzy najde, a všechna upozornění kompilátoru. Ve výchozím nastavení nejsou upozornění kompilátoru zahrnuta do souboru protokolu analýzy. Další informace o upozorněních kompilátoru během analýzy kódu najdete v této /analyze:only možnosti.

/analyze:log:includesuppressed
Přidá do souboru protokolu analýzy potlačené upozornění i nestiskovaná upozornění. Ve výchozím nastavení nejsou potlačená upozornění zahrnuta do souboru protokolu analýzy. Pokud jsou soubory sady pravidel zadány pro analýzu, upozornění zakázaná soubory sady pravidel se do protokolu nezahrnou, i když /analyze:log:includesuppressed je zadána.

Možnosti sady pravidel

/analyze:projectdirectory project_directory
Určuje aktuální adresář projektu. Pokud je sada pravidel (nebo položka, která obsahuje) název souboru, kompilátor nejprve vyhledá soubor pod zadanou project_directorypoložkou . Pokud ho nenajdete, vyhledá ho v zadaném parametru ruleset_directories/analyze:rulesetdirectory, pokud existuje. Pokud je sada pravidel (nebo položka, která obsahuje) relativní cestou, kompilátor nejprve vyhledá soubor v adresáři projektu. Pokud se sada pravidel nenajde, bude vypadat v aktuálním pracovním adresáři. Tato možnost je dostupná od sady Visual Studio 2019 verze 16.9.

/analyze:rulesetdirectory ruleset_directories
Určuje středník oddělený seznam cest hledání sady pravidel. Pokud je sada pravidel (nebo položka, která obsahuje) název souboru, kompilátor nejprve vyhledá soubor pod project_directory určeným parametrem /analyze:projectdirectory, pokud existuje, následovaný zadaným ruleset_directoriessouborem . Tato možnost je dostupná od sady Visual Studio 2019 verze 16.9.

/analyze:ruleset ruleset_files
Určuje jeden nebo více souborů sady pravidel, které se mají použít k analýze. Tato možnost může zefektivnit analýzu; Modul analýzy se pokusí vyloučit kontrolní moduly, které před spuštěním neobsahují žádná aktivní pravidla zadaná v souborech sady pravidel. V opačném případě modul spustí všechny kontroly povolené.

/analyze:ruleset ruleset_file
Určuje soubor sady pravidel, který se má použít k analýze. Tato možnost může zefektivnit analýzu; Modul analýzy se pokusí vyloučit kontroly, které před spuštěním neobsahují žádná aktivní pravidla zadaná v souboru sady pravidel. V opačném případě modul spustí všechny kontroly povolené.

Soubory sady pravidel, které jsou dodávány se sadou Visual Studio, jsou nalezeny v %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Setssouboru .

Následující příklad vlastní sada pravidel říká analytickému modulu, aby zkontroloval C6001 a C26494 a nahlásil je jako upozornění.

Tento soubor můžete umístit kamkoli, dokud v argumentu zadáte úplnou cestu.

Tento soubor můžete umístit kamkoli, dokud v argumentu zadáte úplnou cestu nebo pod adresáře zadané v /analyze:projectdirectory seznamu nebo /analyze:rulesetdirectory možnostech.

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="15.0">
  <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
    <Rule Id="C6001" Action="Warning" />
    <Rule Id="C26494" Action="Warning" />
  </Rules>
</RuleSet>

Ve výchozím nastavení je *.rulesetpřípona souboru pro soubory sady pravidel . Visual Studio používá výchozí rozšíření při procházení souborů sady pravidel. Můžete ale použít libovolné rozšíření.

Další informace o sadách pravidel naleznete v tématu Použití sad pravidel k určení pravidel C++, která se mají spustit.

Poznámky

Další informace najdete v tématu Analýza kódu pro přehled C/C++ a analýza kódu pro upozornění C/C++.

Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností konfigurace>– Obecné vlastnosti kódu>.

  3. Upravte jednu nebo více vlastností analýzy kódu.

  4. Změny uložíte kliknutím na OK nebo Použít .

Nastavení možností analýzy externích souborů v sadě Visual Studio 2019 verze 16.10 a novější:

  1. Otevřete dialogové okno Stránky vlastností projektu.

  2. Vyberte stránku vlastností konfigurace>C/C++>External Includes.

  3. Nastavit vlastnosti:

    • Zakázat analýzu kódu pro externí hlavičky nastaví /analyze:external- možnost.

    • Sada pravidel analýzy pro externí hlavičky nastaví /analyze:external:ruleset path možnost.

  4. Změny uložíte kliknutím na OK nebo Použít .

Programové nastavení tohoto parametru kompilátoru

  1. Viz třída EnablePREfast.

Viz také

Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC