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.
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 .
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.
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.
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é.
- Améliorations de la conformité C++
- Historique des modifications Visual C++ 2003 - 2015
- Vue d’ensemble des problèmes de mise à niveau potentiels
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.
Cliquez sur l’icône de filtre dans la colonne Code pour choisir les avertissements affichés.
Les erreurs et avertissements d’analyse du code apparaissent également dans la liste d’erreurs , tout comme les erreurs du compilateur.
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 :
Étant donné que l’utilisation de macros est déconseillée en C++moderne, Visual Studio facilite la conversion de macros constexpr
en fonctions :
Cliquez avec le bouton droit sur
AVERAGE
et choisissez Atteindre la définition.Cliquez sur l’icône de tournevis et choisissez Convertir une macro en constexpr
La macro est convertie comme indiqué ci-dessous :
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 :
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 :
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.
La chaîne est convertie en : R"(C:\Users\bjarnes\demo\output.txt)"
.