Partager via


Outils IDE Visual Studio pour la mise à niveau du code C++

Visual Studio vous aide à mettre à niveau le code C++ hérité avec les options du compilateur, les avertissements d’analyse du code et les fonctionnalités de l’éditeur, telles que les correctifs rapides, les informations rapides et la barre de défilement améliorée. Le terme « code hérité » fait référence à l’une de ces catégories :

  • Code qui a été précédemment autorisé par le compilateur Microsoft C++ (MSVC), mais qui n’a jamais été conforme à la norme C++.

    Pour mettre à niveau un ancien code MSVC non conforme, activez l’option du /permissive- compilateur. Toutes les instances d’utilisations non conformes sont soulignées avec desquiggles rouges dans l’éditeur de code. Les messages d’erreur dans la fenêtre Liste d’erreurs incluent une recommandation pour résoudre l’erreur. Cliquez sur le code d’erreur pour accéder à sa page d’aide dans la documentation. Si la correction de toutes les erreurs à la fois est irrécupérable, vous pouvez mettre à niveau le code non conforme en phases en activant l’option /permissive- , en corrigeant certaines erreurs, puis en désactivant l’option à nouveau. Le code est compilé avec les nouvelles améliorations, et vous pouvez revenir en arrière et résoudre les problèmes restants ultérieurement. Consultez la /permissive- page pour obtenir des exemples de code MSVC non conforme.

  • Code autorisé dans une version antérieure de la norme C++, mais qui a été déconseillé ou supprimé dans une version ultérieure.

    Pour effectuer une mise à niveau vers une norme de langage plus récente, définissez l’option C++ Language Standard sur la norme souhaitée et corrigez les erreurs de compilation générées. En général, nous vous recommandons de définir la norme de langue sur /std:c++17 ou /std:c++20. Les erreurs générées lors de la mise à niveau vers une norme plus récente ne sont pas liées aux erreurs générées lors de l’utilisation de l’option /permissive- .

  • Code conforme à toutes les versions de la norme, mais qui n’est plus considéré comme une meilleure pratique en C++moderne.

    Pour identifier le code dans lequel les modifications sont recommandées, exécutez l’analyse du code.

Ouvrir et convertir un projet hérité

Si votre projet hérité est basé sur une version antérieure de Visual Studio, vous pouvez l’ouvrir dans Visual Studio 2017 ou Visual Studio 2019. Visual Studio le convertit automatiquement en schéma de projet actuel avec prise en charge de toutes les dernières fonctionnalités du compilateur et de l’IDE.

Screenshot of the Upgrade a project dialog.

Pour plus d’informations, consultez Mettre à niveau des projets C++ à partir de versions antérieures de Visual Studio.

Rechercher dans la base de code

La mise à niveau d’une base de code implique souvent la recherche dans plusieurs fichiers. Pour rechercher tout ce qui se trouve dans votre base de code, appuyez sur Ctrl+T pour afficher la zone de recherche Atteindre tout .

Screenshot of the Go to all dialog.

Pour affiner l’étendue de recherche, tapez l’un des filtres de 1 lettre, suivis d’un espace, puis de la chose que vous recherchez.

Liste d’erreurs

Après avoir défini la norme de langage C++ souhaitée et toutes les autres options du compilateur (>Propriétés>du projet Général), appuyez sur Ctrl+Maj+B pour compiler votre projet. Vous pouvez vous attendre à voir certaines erreurs et avertissements sous la forme d’équiggles rouges à différents endroits dans le code. Les erreurs apparaissent également dans la liste des erreurs. Pour plus d’informations sur une erreur spécifique, cliquez sur le code d’erreur pour accéder à la page d’aide de la documentation. Les codes d’erreur commençant par un « C » sont des erreurs de compilateur. Les codes commençant par « MSB » sont des erreurs MSBuild qui indiquent un problème avec la configuration du projet.

Screenshot showing compiler and MSBuild errors in Error List.

Indicateur d’intégrité du document

L’indicateur d’intégrité du document en bas de l’éditeur affiche le nombre d’erreurs et d’avertissements dans le document actif et vous permet de naviguer directement d’un avertissement/d’une erreur à l’autre.

Document health indicator.

Dans de nombreux cas, vous trouverez plus d’informations sur une erreur spécifique dans la documentation sur l’historique des modifications de Visual Studio et les améliorations de conformité.

Utiliser l’analyse du code pour moderniser votre code

Lors de la mise à niveau, nous vous recommandons d’exécuter l’analyse du code sur votre projet afin que le code soit conforme au minimum aux règles recommandées par Microsoft Native. Ces règles sont une combinaison de règles définies par Microsoft et d’un sous-ensemble des instructions de base C++. En vous conformant à ceux-ci, vous réduisez ou éliminerez considérablement les sources courantes de bogues, et en même temps, rendre votre code plus lisible et donc plus facile à gérer. L’analyse du code à l’aide des règles recommandées Microsoft Native est activée par défaut. Vous pouvez activer des règles supplémentaires sous Analyse du code des propriétés>du projet>. Le code qui enfreint l’une des règles est marqué comme un avertissement et est souligné avec une bascule verte dans l’éditeur de code. Pointez sur le bouton bascule pour afficher une info-bulle QuickInfo qui décrit le problème.

Screenshot of a Code analysis tooltip.

Cliquez sur l’icône de filtre dans la colonne Code pour choisir les avertissements affichés.

Screenshot of Code analysis filters in Error List.

Les erreurs et avertissements d’analyse du code apparaissent également dans la liste d’erreurs , tout comme les erreurs du compilateur.

Screenshot of Code analysis warnings in Error List.

Vous pouvez modifier les règles actives et créer des ensembles de règles personnalisés. Pour plus d’informations sur l’utilisation de l’analyse du code, consultez la vue d’ensemble de l’analyse du code pour C/C++.

Utiliser des actions rapides pour moderniser le code

L’éditeur de code fournit des actions rapides pour certaines recommandations courantes. Lorsque l’icône d’ampoule s’affiche, vous pouvez cliquer dessus pour afficher les actions rapides disponibles.

Convertir des macros en fonctions constexpr

L’image suivante montre l’utilisation de macro appelée AVERAGE, qui a la colorisation sémantique par défaut. L’image montre également l’info-bulle QuickInfo qui s’affiche lorsque le curseur de la souris pointe sur celui-ci :

Screenshot of a QuickInfo macro expansion.

Étant donné que l’utilisation de macros est déconseillée en C++moderne, Visual Studio facilite la conversion de macros constexpr en fonctions :

  1. Cliquez avec le bouton droit sur AVERAGE et choisissez Atteindre la définition.

  2. Cliquez sur l’icône de tournevis et choisissez Convertir une macro en constexpr

    Screenshot of a Quick Action macro to constexpr.

La macro est convertie comme indiqué ci-dessous :

Screenshot of a constexpr function.

Et l’appel à est AVERAGE désormais colorisé en tant qu’appel de fonction, et l’info-bulle Info rapide affiche le type déduit de la fonction :

Screenshot of a constexpr function call.

Initialiser les variables

Les variables non initialisées peuvent contenir des valeurs aléatoires qui entraînent des bogues graves. L’analyse du code signale ces instances et l’éditeur fournit une action rapide :

Screenshot of the pop-up for an uninitialized variable.

Convertir en littéral de chaîne brut

Les littéraux de chaîne brutes sont moins sujets aux erreurs et plus pratiques à taper que les chaînes avec des caractères d’échappement incorporés. Cliquez avec le bouton droit sur une chaîne et choisissez Actions rapides pour la convertir en littéral de chaîne brute.

Raw string literal.

La chaîne est convertie en : R"(C:\Users\bjarnes\demo\output.txt)".