IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

JetBrains annonce la disponibilité de la version 2023.1 de ReSharper C++
Son extension Visual Studio pour les développeurs C++

Le , par Michael Guilloux

22PARTAGES

4  0 
ReSharper C++ 2023.1 est disponible. Il s'agit de la première mise à jour majeure de l'année de l'extension Visual Studio de JetBrains pour les développeurs C++. Cette version apporte des mises à jour pour les modules C++20 et se prépare déjà aux futures normes avec le premier lot de prise en charge de fonctionnalités pour C++23. La manipulation des macros est maintenant plus simple grâce aux aperçus de substitution des macros dans les info-bulles et les fenêtres contextuelles Quick Documentation. Cette version inclut également Call tracking, qui permet de voir les chaînes d'appels et de les parcourir dans la hiérarchie des appels entrants.

Aperçu de la substitution des macros

Lors du survol d'une macro, vous voyez désormais un aperçu de sa version étendue dans l'infobulle, avec la mise en évidence complète des éléments de syntaxe et la bonne mise en forme du code. Vous pouvez toujours utiliser l'action contextuelle Substitute macro call pour l'étendre directement dans l'éditeur, mais l'aperçu instantané simplifie la manipulation des macros.


La fenêtre contextuelle Quick Documentation (Ctrl+Maj+F1) permet également de cliquer sur une entité depuis l'aperçu de la substitution pour consulter sa documentation. Si la version étendue de la macro comporte un identificateur inconnu, ce dernier est sélectionné dans l'aperçu de la substitution, que ce soit dans l'info-bulle affichée lors du survol ou dans la fenêtre contextuelle Quick Documentation pour faciliter l'identification des problèmes.


Modules C++20

ReSharper C++ 2022.3 introduit la prise en charge des modules C++20. Dans cette mise à jour, JetBrains a perfectionné son implémentation pour gérer davantage de cas particuliers et mieux prendre en charge les projets qui les utilisent concrètement. L'éditeur de logiciels pour développeurs a également étendu la liste des fonctionnalités de ReSharper C++ qui permettent d'écrire du code modularisé.

Find usages permet maintenant de trouver tous les emplacements où un module donné est importé.

La refactorisation Rename permet de renommer les modules et les partitions de modules en toute sécurité, de mettre à jour toutes les déclarations et importations connexes dans votre code.

La saisie semi-automatique du code prend mieux en charge la syntaxe des modules C++20. Les noms de modules connus sont proposés juste avant une opération import et la liste de saisie semi-automatique inclut également les mots-clés liés au module lorsqu'ils sont autorisés.

JetBrains a également mis à jour plusieurs fonctionnalités d'assistance au codage pour prendre en charge les modules C++20. Le formateur de code et Rearrange code peuvent désormais gérer les blocs d'exportation et les entités exportées. Pour changer l'ordre des éléments de code, appuyez sur Ctrl+Maj+Alt lorsque le caret est placé sur un élément de code ou si une partie du code est sélectionnée, puis appuyez sur les touches fléchées correspondantes.


Prise en charge de C++23

Le comité de normalisation ISO travaillant sur C++ a récemment terminé le volet technique concernant C++23. De nombreuses fonctionnalités C++23 étant déjà disponibles dans les principaux compilateurs, ReSharper C++ 2023.1 vous donne la possibilité de les essayer.

Deducing this est une fonctionnalité C++23 majeure qui permet d'introduire une nouvelle façon de spécifier les fonctions membres. Il est désormais possible de rendre le paramètre d'un objet explicite avec ce mot-clé, ce qui simplifie l'implémentation de plusieurs idiomes C++. Par exemple, vous pouvez maintenant remplacer des surcharges de fonctions identiques, pour lesquels seuls les qualificateurs const et reference sont différents, par une seule fonction qui déduit le type et la catégorie de valeur du paramètre d'objet.


C++23 apporte de nouvelles possibilités d'utilisation d'auto. auto(x) et auto{x} créent une copie de l'argument comme s'il avait été passé en tant qu'argument de fonction par valeur.

ReSharper C++ prend également en charge les mises à jour C++23 suivantes qui optimisent la syntaxe du langage existant :

  • Les parenthèses vides () des lambdas sont désormais facultatives dans de nombreux cas.
  • Les déclarations d'alias ne sont plus autorisées dans les déclarations init.
  • Les libellés sont maintenant autorisées à la fin des déclarations mixtes.

Unreal Engine

Il est désormais possible d'ajouter rapidement un test Unreal Engine, qu'il soit simple ou complexe, avec les nouveaux modèles de fichier intégrés. Allez simplement dans Solution Explorer et faites un clic droit sur le dossier du projet de votre choix pour ouvrir le menu Add (ou utilisez Ctrl+Alt+Inser).


ReSharper C++ fournit également un nouveau modèle dynamique, UINTERFACE, qui vient compléter les modèles UCLASS, USTRUCT et UENUM existants. Sélectionnez simplement l'élément correspondant dans la liste de saisie semi-automatique du code pour ajouter une nouvelle classe d'interface lorsque vous travaillez sur un projet Unreal Engine.


Il est désormais possible de spécifier les mappages de répertoires source à utiliser pour résoudre les directives #include dans les fichiers shader. Si RiderLink est installé dans le projet de jeu ou Engine, vous pouvez également charger les mappages shader directement depuis Unreal Engine.

Enfin, un nouvel élément de saisie semi-automatique permet de générer une expression lambda là où un délégué, TFunction ou un argument TFunctionRef est attendu.

Suivi des appels

La fonctionnalité Call tracking de ReSharper est enfin disponible dans ReSharper C++ ! Il est désormais possible d'afficher les chaînes d'appels et de les parcourir dans la hiérarchie des appels entrants. Positionnez simplement le caret sur l'une des fonctions et sélectionnez Inspect | Incoming calls dans le menu contextuel ou appuyez sur Ctrl+Maj+Alt+A pour l'appeler depuis le menu Inspect This.

Dans la fenêtre des résultats du suivi d'appels, vous pouvez double-cliquer sur l'entrée de la hiérarchie pour accéder à l'appel correspondant dans l'éditeur ou étendre l'un des nœuds pour vérifier ses appels entrants.

Le suivi des appels sortants n'est pas pris en charge actuellement.


Analyse du code

JetBrains a introduit une inspection qui signale les paramètres de fonction des types à coût de copie élevé qui sont transférés par valeur. Dans ces cas, ReSharper C++ suggère le transfert du paramètre par référence const à la place. Par ailleurs, le correctif Create function from usage préfère transférer les paramètres de type dont le coût de copie par valeur est faible.


Les nouvelles inspections de code suivantes signalent les code smell potentiels :

  • Une inspection identifie les paramètres de modèle non utilisés et les alias de type dans une portée locale, ainsi que les initialiseurs de classe de base redondants.
  • Une autre inspection marque les valeurs de retour non utilisées des fonctions qui renvoient les codes d'erreur HRESULT ou NTSTATUS.

Une inspection supplémentaire signale quand la déduction d'argument de modèle de classe C++17 échoue pour déduire les arguments du modèle, ce qui permet d'ajouter rapidement les arguments requis avec un correctif.


ReSharper C++ 2023.1 inclut également de nombreuses améliorations du moteur d'évaluation lors de la compilation, telles que l'évaluation des boucles for basées sur des plages et une meilleure prise en charge des unions.

Refactorisations

Il est désormais possible d'accéder rapidement à la plupart des refactorisations depuis le menu Alt+Entrée en supplément de la fenêtre contextuelle dédiée Refactor This (Ctrl+Maj+R).


Le nouveau correctif Create parameter constitue un raccourci pratique vers la refactorisation Change signature. Lorsque vous devez ajouter un nouveau paramètre à une fonction conteneur, appelez simplement le correctif et entrez le type du nouveau paramètre. La refactorisation met à jour l'intégralité des déclarations et des usages et vous prévient en cas de conflits.


L'appel des refactorisations Extract method et Change signature est désormais beaucoup plus simple :

  • Si vous devez extraire une fonction d'une ligne, il n'est plus nécessaire de sélectionner l'ensemble de la ligne, car la refactorisation extrait désormais la ligne active en l'absence de sélection.
  • Change signature peut maintenant être appelé quand le caret est dans la signature de fonction, et non plus seulement sur le nom de la fonction, comme cela était le cas auparavant.

Autres améliorations

ReSharper C++ prend maintenant en charge la macro __VA_OPT__, qui a été introduite dans C++20 pour faciliter la définition des macros variadiques. Cette macro fonctionnelle spéciale s'étend pour inclure ses arguments lorsque la liste d'arguments variable n'est pas vide et, dans le cas contraire, ne s'étend pas.


Par défaut, les chemins de fichier sont placés avant les dossiers lors du tri des directives #include. Si vous préférez afficher toutes les inclusions par ordre alphabétique, vous pouvez maintenant désactiver la nouvelle option Put files before folders.


Un nouveau modèle postfix permet de créer rapidement une référence const avec std::as_const ou AsConst dans les projets Unreal Engine.


Les commentaires commençant par /* ne sont plus fermés automatiquement par */ par défaut. Vous pouvez activer l'insertion automatique du commentaire de fermeture avec la nouvelle option d'assistance à la saisie Insert */ after /*.


Nouveautés et téléchargement de ReSharper C++ 2023.1

Une erreur dans cette actualité ? Signalez-nous-la !