Modifier

Questions fréquentes sur les analyseurs FxCop hérités et .NET

Il peut être un peu compliqué de comprendre les différences entre les analyseurs FxCop hérités (analyse binaire) et .NET (analyse source). Cet article vise à répondre à certaines des questions que vous pouvez vous poser.

Quelle est la différence entre les analyseurs FxCop hérités et .NET ?

FxCop hérité exécute une analyse post-build sur un assembly compilé. Il s’exécute en tant qu’exécutable distinct appelé FxCopCmd.exe. FxCopCmd.exe charge l’assembly compilé, exécute l’analyse du code, puis signale les résultats (ou diagnostics).

Les analyseurs .NET sont basés sur .NET Compiler Platform (« Roslyn »). Vous pouvez les activer à partir du SDK .NET ou les installer comme package NuGet référencé par le projet ou la solution. Les analyseurs exécutent une analyse basée sur le code source pendant l’exécution du compilateur. Les analyseurs sont hébergés dans le processus du compilateur (csc.exe ou vbc.exe) et exécutent l’analyse quand le projet est généré. Les résultats des analyseurs sont signalés en même temps que les résultats du compilateur.

Quelle est la différence entre les analyseurs FxCop et les analyseurs .NET ?

Les analyseurs FxCop et les analyseurs .NET sont basés sur les implémentations d’analyseur .NET Compiler Platform (« Roslyn ») des règles CA FxCop. Avant Visual Studio 2019 version 16.8 et .NET 5.0, ces analyseurs étaient fournis sous forme de Microsoft.CodeAnalysis.FxCopAnalyzerspackage NuGet. À partir de Visual Studio 2019 version 16.8 et .NET 5.0, ces analyseurs sont inclus dans le SDK .NET. Ils sont également disponibles sous forme de Microsoft.CodeAnalysis.NetAnalyzerspackage NuGet. Envisagez de migrer des analyseurs FxCop vers des analyseurs .NET.

La commande Exécuter Code Analysis exécute-t-elle des analyseurs .NET ?

Avant Visual Studio 2019 version 16.5, quand vous sélectionniez Analyser>Exécuter Code Analysis, une analyse héritée était exécutée. À partir de Visual Studio 2019 16.5, l’option de menu Exécuter Code Analysis lance l’exécution d’analyseurs basés sur Roslyn pour le projet ou la solution sélectionné. Si vous avez installé des analyseurs .NET, ils sont également exécutés. Pour plus d’informations, consultez Comment exécuter l’analyse du code managé manuellement.

La propriété de projet msbuild RunCodeAnalysis exécute-t-elle des analyseurs ?

Non. La propriété RunCodeAnalysis dans un fichier projet (par exemple, .csproj) est utilisée uniquement pour exécuter FxCop hérité. Elle s’exécute une tâche msbuild post-build qui appelle FxCopCmd.exe.

Comment exécuter des analyseurs .NET ?

Pour exécuter des analyseurs .NET, commencez par les activer à partir du SDK .NET ou les installer comme package NuGet. Générez ensuite votre projet ou solution à partir de Visual Studio ou à l’aide de msbuild. Les avertissements et erreurs que génèrent les analyseurs Roslyn s’affichent dans la liste d’erreurs ou la fenêtre Commande.

Je reçois l’avertissement CA0507 même après avoir installé le package NuGet d’analyseurs .NET

Si vous avez installé les analyseurs .NET, mais que vous recevez toujours l'avertissement CA0507 « « Exécuter l'analyse de code » a été déprécié en faveur des analyseurs FxCop, qui s'exécutent pendant la phase de génération », il peut être nécessaire de définir la propriété msbuild RunCodeAnalysis de votre fichier projet sur faux. Sinon, l’analyse héritée s’exécute après chaque génération.

<RunCodeAnalysis>false</RunCodeAnalysis>

Quelles règles ont été transférées vers des analyseurs .NET ?

Pour obtenir des informations sur les règles d’analyse héritées qui ont été transférées vers des analyseurs .NET, consultez État du port de la règle FxCop.

Les avertissements d’analyse du code sont traités comme des erreurs

Si votre projet utilise l'option de génération pour traiter les avertissements comme des erreurs, les avertissements des analyseurs peuvent apparaître comme des erreurs. Pour éviter que les avertissements d’analyse du code soient traités comme des erreurs, effectuez les étapes décrites dans Questions fréquentes (FAQ) sur l’analyse du code.

Voir aussi