Modifier

FAQ sur l’analyse de code dans Visual Studio

Cette page contient des réponses à certaines questions fréquentes sur l’analyse de code basée sur .NET Compiler Platform dans Visual Studio.

Analyse de code et EditorConfig

Dois-je utiliser l’analyse de code ou EditorConfig pour vérifier le style du code ?

L’analyse de code et les fichiers EditorConfig fonctionnent main dans la main. Quand vous définissez des styles de code dans un fichier EditorConfig ou dans la page Options de l’éditeur de texte, vous configurez en fait les analyseurs de code intégrés à Visual Studio. Les fichiers EditorConfig peuvent être utilisés pour activer ou désactiver des règles d’analyseur, ainsi que pour configurer des packages d’analyseur NuGet.

EditorConfig et ensembles de règles

Dois-je configurer mes analyseurs avec un ensemble de règles ou un fichier EditorConfig ?

Les ensembles de règles et les fichiers EditorConfig peuvent coexister et peuvent être utilisés pour configurer des analyseurs. Les fichiers EditorConfig et les ensembles de règles vous permettent d’activer et de désactiver des règles, et de définir leur gravité.

Toutefois, les fichiers EditorConfig offrent également des moyens supplémentaires de configurer des règles :

En plus des ensembles de règles et des fichiers EditorConfig, certains analyseurs sont configurés en utilisant des fichiers texte marqués comme fichiers supplémentaires pour les compilateurs C# et VB.

Notes

  • Les fichiers EditorConfig peuvent uniquement être utilisés pour activer des règles et définir leur gravité dans Visual Studio 2019 version 16.3 et ultérieures.
  • Les fichiers EditorConfig ne peuvent pas être utilisés pour configurer l’analyse héritée, contrairement aux ensembles de règles.

Analyse de code dans les builds d'intégration continue (CI)

L’analyse de code basée sur .NET Compiler Platform fonctionne-t-elle dans les builds d’intégration continue (CI) ?

Oui. Pour les analyseurs installés à partir d’un package NuGet, ces règles sont appliquées pendant la génération, y compris pour une build CI. Les analyseurs utilisés dans les builds CI respectent la configuration de règle des ensembles de règles et des fichiers EditorConfig. Actuellement, les analyseurs de code qui sont intégrés à Visual Studio ne sont pas disponibles sous forme de package NuGet. Par conséquent, ces règles ne sont pas applicables dans une build CI.

Analyseurs IDE et StyleCop

Quelle est la différence entre les analyseurs de code de l’IDE Visual Studio et les analyseurs StyleCop ?

L’IDE Visual Studio comprend des analyseurs intégrés qui recherchent à la fois les problèmes de style et de qualité du code. Ces règles vous aident à utiliser les nouvelles fonctionnalités de langage introduites et à améliorer la maintenance de votre code. Les analyseurs IDE sont continuellement mis à jour avec chaque version de Visual Studio.

Les analyseurs StyleCop sont des analyseurs tiers installés sous forme de package NuGet qui recherchent la cohérence du style dans votre code. En général, les règles StyleCop vous permettent de définir des préférences personnelles pour un codebase sans recommander un style plutôt qu’un autre.

Analyseurs de code et analyse héritée

Quelle est la différence entre l’analyse héritée et l’analyse de code basée sur .NET Compiler Platform ?

L’analyse de code basée sur .NET Compiler Platform analyse le code source en temps réel et pendant la compilation, tandis que l’analyse héritée analyse les fichiers binaires une fois la génération terminée. Pour plus d’informations, consultez Analyse basée sur .NET Compiler Platform et analyse héritée.

Analyseurs FxCop et analyseurs .NET

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

Les analyseurs FxCop et les analyseurs .NET référence les implémentations d’analyseurs .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.

Considérer les avertissements comme des erreurs

Mon projet utilise l’option de génération qui traite les avertissements comme des erreurs. Après la migration de l’analyse héritée vers l’analyse du code source, tous les avertissements de l’analyse du code s’affichent désormais comme des erreurs. Comment l’éviter ?

Pour éviter que les avertissements d’analyse du code soient traités comme des erreurs, suivez ces étapes :

  1. Créez un fichier .props avec le contenu suivant :

    <Project>
       <PropertyGroup>
          <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
       </PropertyGroup>
    </Project>
    
  2. Ajoutez une ligne à votre fichier projet .csproj ou .vbproj pour importer le fichier .props que vous avez créé à l’étape précédente. Cette ligne doit être placée avant toutes les lignes qui importent les fichiers .props de l’analyseur. Par exemple, si votre fichier .props est nommé codeanalysis.props :

    ...
    <Import Project="..\..\codeanalysis.props" Condition="Exists('..\..\codeanalysis.props')" />
    <Import Project="..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props" Condition="Exists('..\packages\Microsoft.CodeAnalysis.NetAnalyzers.5.0.0\build\Microsoft.CodeAnalysis.NetAnalyzers.props')" />
    ...
    

Page de propriétés de la solution d’analyse du code

Où se trouve la page de propriétés Analyse du code pour la solution ?

La page de propriétés Analyse du code au niveau de la solution a été supprimée au profit du groupe de propriétés partagées plus fiable. Pour la gestion de l’analyse du code au niveau du projet, la page de propriétés Analyse du code est toujours disponible. (Pour les projets managés, nous vous recommandons également de migrer des ensembles de règles vers EditorConfig pour la configuration des règles.) Pour partager des ensembles de règles entre plusieurs projets/tous les projets dans une solution ou un dépôt, nous vous recommandons de définir un groupe de propriétés avec la propriété CodeAnalysisRuleSet dans un fichier props/targets partagé ou un fichier Directory.props/Directory.targets. Si vous n’avez pas de fichier props ou targets commun que tous vos projets importent, vous devez ajouter ce type de groupe de propriétés à un fichier Directory.props ou Directory.targets dans un répertoire de solution de niveau supérieur, qui est automatiquement importé dans tous les fichiers projet définis dans le répertoire ou ses sous-répertoires.