/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:ruleset
ruleset_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 C26100 až C26167.
K načtení LocalEspC.dll
použijte možnost /analyze:plugin LocalEspC.dll
kompilá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 C26100 až C26167.
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:env
nebo /external:anglebrackets
možností můžete určit adresáře jako "externí" adresáře. Všechny soubory, které jsou zahrnuté pomocí externího #include
adresář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_directory
polož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_directories
souborem . 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 Sets
souboru .
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 *.ruleset
pří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
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností konfigurace>– Obecné vlastnosti kódu>.
Upravte jednu nebo více vlastností analýzy kódu.
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ší:
Otevřete dialogové okno Stránky vlastností projektu.
Vyberte stránku vlastností konfigurace>C/C++>External Includes.
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.
Změny uložíte kliknutím na OK nebo Použít .
Programové nastavení tohoto parametru kompilátoru
- Viz třída EnablePREfast.
Viz také
Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC