Micrososft vient d'annoncer la disponibilité de la version 17.12 de Visual Studio 2022. Voici les nouvelles fonctionnalités que vous pourrez trouver dans cette version pour C++.
Bibliothèque standard et compilateur MSVC
Du côté de la conformité, Microsoft a terminé l'implémentation des plages de formatage de C++23 en implémentant :
- Formatteurs pour les adaptateurs de conteneurs stack, queue, et priority_queue.
- range-default-formatter.
Ils ont implémenté des opérateurs d'indices multidimensionnels dans le compilateur, qui supportent l'implémentation <mdspan> existante. Par exemple, vous pouvez utiliser la syntaxe my_mdspan[i,j] pour indexer des portées multidimensionnelles. Voici un exemple complet :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <mdspan> #include <print> using namespace std; int main() { const char* const str{"CatDogElkFox"}; //Defines a multidimensional view of str mdspan<const char, extents<int, 4, 3>> m{str, 4, 3}; for (int i = 0; i < m.extents().extent(0); ++i) { for (int j = 0; j < m.extents().extent(1); ++j) { //Note the m[i, j] syntax print("m[{}, {}]: '{}'; ", i, j, m[i, j]); } println(); } } |
- Suppression de l'exigence de référence commune pour les concepts indirectement invocables
- Une nouvelle spécification pour generate_canonical()
- Faire de std::ignore un objet de première classe
Cette version contient des améliorations à plusieurs visualiseurs de débogage, y compris ceux pour mutex/recursive_mutex et move_iterator.
Cette version ajoute des attributs de durée de vie à min, max, clamp, ranges::min, ranges::max, et ranges::clamp, permettant à l'analyse de code MSVC et à Clang -Wdangling de détecter les références pendantes dans une utilisation inappropriée.
Enfin, cette version améliore les performances de plusieurs types et algorithmes. La fonction popcount() utilise désormais une fonction intrinsèque du compilateur sur ARM64. Cette version améliore les implémentations vectorisées des familles d'algorithmes minmax_element() et minmax(), et optimise les algorithmes search() et find_end(). Cette mise à jour contient également des réisions sur les implémentations de condition_variable et condition_variable_any, ce qui a des répercussions sur les types timed_mutex et recursive_timed_mutex.
Productivité en C++
- Définir les arguments de la ligne de commande
Pour les projets Unreal Engine, vous pouvez désormais définir les arguments de ligne de commande à transmettre à votre application directement depuis la barre d'outils. Ce composant de la barre d'outils s'affichera par défaut si la charge de travail Game development with C++ est installée. Si vous ne le voyez pas, vous pouvez l'ajouter en faisant un clic droit sur la barre d'outils et en sélectionnant Set Arguments. - Ouvrir un dossier pour l'uproject Unreal Engine
Microsoft a ajouté un point d'entrée supplémentaire pour ouvrir votre uproject Unreal Engine avec le support uproject de Visual Studio. Vous pouvez désormais ouvrir votre uproject directement depuis le menu File en sélectionnant Open > Folder…. . Cela ouvrira votre projet Unreal Engine dans Visual Studio. - Améliorations de la signature de modification
Ils ont mis à jour l'interface de Change Signature, ce qui vous permet d'ajouter, de supprimer et de réorganiser les paramètres dans la section de configuration des paramètres. En outre, vous pouvez modifier leur ordre en les sélectionnant et en les faisant glisser vers une nouvelle position.
Les méthodes d'accès restent les mêmes : appuyez sur Ctrl+. pour déclencher le menu Actions rapides et remaniements et sélectionnez Change Signature.
Build Insights
- Exécuter Build Insights sur des fichiers sélectionnés
Vous pouvez sélectionner quelques fichiers, exécuter Build Insights sur eux et voir exactement l'impact de ces fichiers sur les performances de construction. - Filtrer les projets
Vous pouvez désormais filtrer les résultats en fonction des projets. Il vous faut cliquer sur le bouton de filtrage dans l'en-tête de la colonne de filtrage et de sélectionner les projets que vous souhaitez filtrer. - Des motifs globaux pour filtrer les fichiers
Le filtre de chemin de fichier est utile pour restreindre votre analyse à des répertoires spécifiques ou pour exclure les chemins qui ne sont pas pertinents pour votre tâche. - Amélioration de l'expérience d'enregistrement
Vous pouvez désormais désigner un dossier pour stocker automatiquement les rapports afin de pouvoir y accéder facilement au cours de votre enquête. - Voir les explications
Vous pouvez maintenant voir une brève description de l'utilisation de chaque onglet de Build Insights, ainsi qu'un lien vers la documentation pour une explication détaillée. - Ajustements des chemins
Cette version masque les chemins complets et relatifs pour réduire l'encombrement. Pour voir les chemins complets, il faut survoler le fichier. Vous verrez également une nouvelle colonne Nom de fichier pour les fichiers et les unités de traduction, affichée par défaut pour vous aider à identifier rapidement les fichiers sans avoir à analyser de longs chemins.
Productivité générale
- Copie à partir de la liste d'erreurs
Lorsque vous copiez une erreur de Error List à l'aide de Ctrl+C, seule la description est désormais copiée dans le presse-papiers. Cela facilite la recherche de l'erreur en ligne ou son partage avec d'autres personnes.
Vous pouvez toujours copier la ligne entière en cliquant avec le bouton droit de la souris sur l'erreur et en sélectionnant Copy Row dans le menu contextuel ou en appuyant sur Ctrl+Shift+C.
Si vous souhaitez utiliser la description de l'erreur pour effectuer une recherche sur le web, vous pouvez appuyer sur Ctrl+F1 pour rechercher des informations sur l'erreur en ligne. - Fermer la fenêtre de recherche de code
Si vous souhaitez que Code ou Feature Search ne vous gêne pas, vous avez désormais davantage de contrôle sur le comportement de la fenêtre de recherche.
Vous pouvez désormais ancrer la fenêtre de recherche et effectuer des actions dans la fenêtre d'outils, comme Solution Explorer et d'autres.
Après avoir ouvert Code Search ou Feature Search, cliquez sur l'icône de la boîte en haut à droite pour la convertir en fenêtre d'outils. Vous pouvez choisir de l'ancrer ailleurs, de la faire sortir, de la masquer automatiquement, etc. Vous pouvez revenir à la fenêtre invisible en fermant la fenêtre d'outils et en rouvrant la recherche.
Microsoft a également simplifié et nettoyé l'expérience de prévisualisation dans la recherche. Il n'y a plus qu'un seul bouton, indiqué par une icône en forme d'œil, pour activer ou désactiver la prévisualisation. - Actualiser les résultats de la recherche
De nombreux utilisateurs ont été frustrés d'avoir à rouvrir la fenêtre Find et à refaire une recherche pour obtenir des résultats actualisés. Vous venez peut-être de remanier du code et vous voulez confirmer que tout a été modifié comme prévu, ou vous avez apporté des modifications récentes et vous avez besoin que votre dernière opération de recherche reflète ces mises à jour.
Après avoir effectué une recherche dans Find in Files, vous avez la possibilité d'actualiser les résultats dans la fenêtre. Vous obtiendrez ainsi les résultats actualisés sans avoir à recommencer la recherche. - Nettoyage de code non bloquant lors de l'enregistrement
Auparavant, lorsqu'une action de nettoyage de code était exécutée lors de la sauvegarde, vous ne pouviez effectuer aucune action dans l'IDE. Cette version améliore cette action pour qu'elle fonctionne de manière non bloquante. Le processus de nettoyage s'exécute en arrière-plan et peut être automatiquement annulé si vous reprenez la saisie.
Git
- Gestion du renommage de fichiers
Lorsque vous renommez des fichiers à partir de l'explorateur Solultion Explorer, il vous sera désormais rappelé de mettre en scène vos changements pour voir les renommages dans Git. - Copier un lien Git
Vous pouvez désormais obtenir un lien GitHub ou Azure DevOps vers une ligne de code spécifique afin de la partager facilement avec vos collègues. Accédez à cette option en faisant un clic droit sur du code et en sélectionnant Git > Copy GitHub/Azure DevOps Permalink.
Débogage
Valeurs de retour en ligne
Le débogueur affiche désormais les valeurs de retour en ligne, ce qui permet de voir plus facilement la valeur de retour des fonctions qui ont des instructions de retour complexes.
GitHub Copilot
- Inspection intelligente des variables
Vous pouvez désormais cliquer sur Ask Copilot à côté de la valeur d'une variable pour obtenir des informations pilotées par l'IA sur ce qui a conduit à l'état actuel de votre programme.
Par exemple, le programme suivant présente une erreur de type "off-by-one" dans sa condition de boucle, ce qui entraîne un comportement indéfini. Si vous cliquez sur Ask Copilot, le programme vous indique ce qui n'a pas fonctionné : - Corriger mon code
Pour les erreurs figurant dans la liste d'erreurs de Visual Studio, vous pouvez cliquer sur Ask Copilot for an explanation and a fix pour obtenir des suggestions sur la manière de rectifier vos erreurs.
Par exemple, en essayant de corriger le code de la section précédente en introduisant une plage basée pour une boucle, une erreur apparait. Copilot suggère ce qui suit : - Debugger les tests échoués
Si lors de l'écriture d'un scénario de test, il y a une erreur, GitHub Copilot propose maintenant des options pour aider à déboguer l'échec du test. La sélection de cette option peut donner quelque chose comme ce qui suit :
Source : "What’s New for C++ Developers in Visual Studio 2022 17.12"
Et vous ?
Pensez-vous que ces améliorations sont crédibles ou pertinentes ?
Quel est votre avis sur cette nouvelle version ?
Voir aussi :
Microsoft annonce les nouveautés de Visual Studio Build Insights 17.12 pour offrir aux développeurs un meilleur contrôle et une plus grande précision lors du diagnostic et de l'optimisation des builds C++
Microsoft présente Visual Studio 2022 17.13 Preview 1, cet aperçu met l'accent sur l'IA et la productivité ainsi que sur la stabilité et la sécurité
Comment installer GitHub Copilot dans Visual Studio pour vous aider à écrire du code plus rapidement et plus intelligemment avec l'aide de l'IA, d'après Microsoft