Je trochu matoucí pochopit rozdíly mezi starší verzí FxCop (binární analýza) a analyzátory .NET (zdrojová analýza). Cílem tohoto článku je řešit některé otázky, které byste mohli mít.
Jaký je rozdíl mezi staršími analyzátory FxCop a .NET?
Starší verze FxCop spouští analýzu po sestavení na kompilovaném sestavení. Spouští se jako samostatný spustitelný soubor s názvem FxCopCmd.exe. FxCopCmd.exe načte kompilované sestavení, spustí analýzu kódu a pak nahlásí výsledky (nebo diagnostiku).
Analyzátory .NET jsou založené na platformě kompilátoru .NET (Roslyn). Povolíte je ze sady .NET SDK nebo je nainstalujete jako balíček NuGet, na který odkazuje projekt nebo řešení. Analyzátory spouští analýzu založenou na zdrojovém kódu během provádění kompilátoru. Analyzátory jsou hostované v procesu kompilátoru, a to buď csc.exe , nebo vbc.exe, a spouští analýzu při sestavování projektu. Výsledky analyzátoru se hlásí spolu s výsledky kompilátoru.
Jaký je rozdíl mezi analyzátory FxCop a analyzátory .NET?
Analyzátory FxCop i analyzátory .NET odkazují na implementace analyzátoru .NET Compiler Platform (Roslyn) pravidel ca FxCop. Před sadou Visual Studio 2019 16.8 a .NET 5.0 byly tyto analyzátory dodány jako Microsoft.CodeAnalysis.FxCopAnalyzers
balíček NuGet. Počínaje sadou Visual Studio 2019 16.8 a .NET 5.0 jsou tyto analyzátory součástí sady .NET SDK. Jsou také k dispozici jako Microsoft.CodeAnalysis.NetAnalyzers
balíček NuGet. Zvažte migraci z analyzátorů FxCop na analyzátory .NET.
Spouští příkaz Pro analýzu kódu analyzátory .NET?
Před vydáním sady Visual Studio 2019 16.5 se při výběru možnosti Analyzovat>analýzu kódu spustí starší verze analýzy. Počínaje sadou Visual Studio 2019 16.5 spustí možnost nabídky Analýza kódu analyzátory založené na Roslynu pro vybraný projekt nebo řešení. Pokud jste nainstalovali analyzátory .NET, spustí se také. Další informace naleznete v tématu Postupy: Ruční spuštění analýzy kódu pro spravovaný kód.
Spouští analyzátory vlastností projektu RunCodeAnalysis msbuild?
Ne. Vlastnost RunCodeAnalysis v souboru projektu (například .csproj) se používá pouze ke spuštění starší verze FxCop. Spustí úlohu msbuild po sestavení, která vyvolá FxCopCmd.exe.
Jak pak spustím analyzátory .NET?
Pokud chcete spustit analyzátory .NET, nejprve je povolte ze sady .NET SDK nebo je nainstalujte jako balíček NuGet. Pak sestavte projekt nebo řešení ze sady Visual Studio nebo pomocí nástroje msbuild. Upozornění a chyby, které vygenerují analyzátory Roslyn, se zobrazí v seznamu chyb nebo v příkazovém okně.
Zobrazuje se upozornění CA0507 i po instalaci balíčku NuGet analyzátorů .NET
Pokud jste nainstalovali analyzátory .NET, ale i nadále se zobrazí upozornění CA0507 Spustit analýzu kódu, je ve prospěch analyzátorů FxCop, které se spouští během sestavování, možná budete muset nastavit vlastnost RunCodeAnalysis msbuild v souboru projektu na false. V opačném případě se po každém sestavení spustí starší verze analýzy.
<RunCodeAnalysis>false</RunCodeAnalysis>
Která pravidla byla přenesena do analyzátorů .NET?
Informace o tom, která starší verze pravidel analýzy byla portována do analyzátorů .NET, najdete v tématu Stav portu pravidla Fxcop.
Upozornění analýzy kódu se považují za chyby.
Pokud váš projekt používá možnost sestavení k léčbě upozornění jako chyb, můžou se upozornění analyzátoru zobrazovat jako chyby. Pokud chcete zabránit tomu, aby se upozornění analýzy kódu považovala za chyby, postupujte podle kroků v nejčastějších dotazech k analýze kódu.