Vue d’ensemble de l’analyse héritée pour le code managé dans Visual Studio
Visual Studio peut effectuer l’analyse du code managé de deux manières : avec l’analyse héritée, également appelée analyse statique FxCop des assemblys managés, et avec les analyseurs de code basés sur .NET Compiler Platform plus modernes. Cette rubrique traite de l’analyse héritée. Pour en savoir plus sur l’analyse de code basée sur .NET Compiler Platform, consultez Vue d’ensemble des analyseurs basés sur .NET Compiler Platform.
L’outil d’analyse du code managé analyse les assemblys managés et signale les informations à leur sujet, notamment les violations des règles de programmation et de design présentées dans les règles de conception de .NET.
L'outil d'analyse représente les contrôles effectués lors d'une analyse comme messages d'avertissement. Les messages d'avertissement identifient les problèmes de programmation et de conception pertinents et, si possible, fournissent des informations relatives à leur résolution.
Notes
L’analyse héritée (analyse statique du code) n’est pas prise en charge pour les projets .NET Core et .NET Standard dans Visual Studio. Si vous exécutez l’analyse du code sur un projet .NET Core ou .NET Standard dans le cadre de msbuild, vous verrez une erreur similaire à l’erreur : CA0055 : Impossible d’identifier la plateforme pour <your.dll>. Pour analyser du code dans des projets .NET Core ou .NET Standard, utilisez plutôt des analyseurs de code.
Intégration IDE (environnement de développement intégré)
Vous pouvez exécuter l’analyse du code sur votre projet manuellement ou automatiquement.
Pour exécuter l’analyse du code chaque fois que vous générez un projet, sélectionnez l’option dans la page de propriétés Analyse du code du projet. Pour plus d’informations, consultez Guide pratique pour activer et désactiver l’analyse du code automatique.
Pour exécuter l’analyse du code manuellement sur un projet, dans la barre de menus, choisissez Analyser>Exécuter l’analyse du code>Exécuter l’analyse du code sur le <projet>.
Ensembles de règles
Les règles d’analyse du code pour le code managé sont regroupées dans des ensembles de règles. Vous pouvez utiliser l’un des ensembles de règles standard Microsoft ou créer un ensemble de règles personnalisé pour répondre à un besoin particulier.
Supprimer les avertissements
Bien souvent, il est utile d'indiquer qu'un avertissement ne s'applique pas. Cela permet d’informer le développeur et les éventuels réviseurs de code, qu’un avertissement a fait l’objet d’une analyse, puis a été supprimé ou ignoré.
La suppression à la source d’avertissements est implémentée via des attributs personnalisés. Pour supprimer un avertissement, ajoutez l'attribut SuppressMessage
au code source comme indiqué dans l'exemple suivant :
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
Public class MyClass
{
// code
}
Pour plus d’informations, consultez Supprimer des avertissements.
Notes
Lorsque vous migrez un projet vers Visual Studio 2019, vous pouvez soudainement vous trouver face à un grand nombre d’avertissements d’analyse du code. Si vous n’avez pas la possibilité de corriger les avertissements, vous pouvez tous les supprimer en choisissant Analyser>Générer et supprimer les problèmes actifs.
Exécuter l’analyse du code dans le cadre de la stratégie d’archivage
En tant qu’organisation, vous pourriez demander à ce que tous les archivages respectent certaines stratégies. En particulier, vous souhaitez vous assurer que vous suivez ces règles :
Il n’y a aucune erreur de build dans le code en cours d’archivage.
L’analyse du code a été effectuée sur la version de code la plus récente.
Vous pouvez l'effectuer en spécifiant des stratégies d'archivage. Pour plus d’informations, consultez Amélioration de la qualité du code avec des stratégies d’archivage de projet.
Intégration de Team Build
Vous pouvez utiliser les fonctionnalités intégrées du système de génération pour exécuter l'outil d'analyse dans le cadre du processus de génération. Pour plus d’informations, consultez Azure Pipelines.