Forum aux questions sur les analyseurs FxCop et .NET hérités

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

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

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 le .NET Compiler Platform (« Roslyn »). Vous les activez à partir du kit de développement logiciel (SDK) .net ou vous les installez en tant que package NuGet référencé par le projet ou la solution. Les analyseurs exécutent une analyse basée sur le code source lors de l’exécution du compilateur. Les analyseurs sont hébergés dans le processus du compilateur, csc.exe ou vbc.exe, et exécuter une analyse lorsque 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 font référence aux implémentations de l’analyseur de .NET Compiler Platform (« Roslyn ») des règles d’autorité de certification FxCop. Avant Visual Studio 2019 16,8 et .NET 5,0, ces analyseurs étaient fournis sous forme de Microsoft.CodeAnalysis.FxCopAnalyzers package NuGet. À compter de Visual Studio 2019 16,8 et .NET 5,0, ces analyseurs sont inclus dans le kit de développement logiciel (SDK) .net. Ils sont également disponibles en tant que Microsoft.CodeAnalysis.NetAnalyzers package NuGet. Envisagez de migrer des analyseurs FxCop vers des analyseurs .net.

La commande exécuter l’analyse du code exécute-t-elle des analyseurs .NET ?

Avant Visual Studio 2019, version 16,5, lorsque vous sélectionnez analyser > exécuter l’analyse du code, l’analyse héritée est exécutée. À compter de Visual Studio 2019 16,5, l’option de menu exécuter l’analyse du code exécute des analyseurs Roslyn pour la solution ou le projet sélectionné. Si vous avez installé les analyseurs .NET, ils sont également exécutés. Pour plus d’informations, consultez Comment : exécuter l’analyse du code manuellement pour le code managé.

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 puis-je exécuter des analyseurs .NET ?

Pour exécuter des analyseurs .NET, commencez par les activer à partir du kit de développement logiciel (SDK) .net ou installez-les en tant que package NuGet. Générez ensuite votre projet ou solution à partir de Visual Studio ou à l’aide de msbuild. Les avertissements et erreurs générés par les analyseurs Roslyn s’affichent dans la liste d’erreurs ou dans la fenêtre de commande.

J’obtiens un avertissement CA0507 même après l’installation du package NuGet des analyseurs .NET

Si vous avez installé les analyseurs .NET, mais que vous continuez à obtenir l’avertissement CA0507 « l’exécution de l’analyse du code » est dépréciée en faveur des analyseurs FxCop, qui s’exécutent pendant la génération», vous devrez peut-être affecter la valeur false à la propriété MSBuild RunCodeAnalysis dans votre fichier projet . Dans le cas contraire, l’analyse héritée s’exécutera après chaque génération.

<RunCodeAnalysis>false</RunCodeAnalysis>

Quelles règles ont été portées vers les analyseurs .NET ?

Pour plus d’informations sur les règles d’analyse héritées qui ont été portées vers les analyseurs .NET, consultez l’é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 build pour traiter les avertissements comme des erreurs, les avertissements de l’analyseur peuvent apparaître comme des erreurs. Pour empêcher que des avertissements d’analyse du code ne soient traités comme des erreurs, suivez les étapes indiquées dans FAQ sur l' analyse du code.

Voir aussi