ReSharper C++ 2021.2 vous aide à mettre votre code à niveau en C++ moderne
et étend la prise en charge d'Unreal Engine

ReSharper C++ 2021.2 vous aide à mettre votre code à niveau en C++ moderne, affiche des conseils d'insertion pour les conversions de types masquées et étend la prise en charge d'Unreal Engine. Les inspections d'immuabilité améliorées permettent de conserver un code plus lisible et correct, tandis que les nouvelles fonctions d'assistance au codage et la refactorisation Inline Function aident à mettre le code à jour plus facilement.

Conseils de conversion de type

De nouveaux conseils d'insertion rendent les conversions de types masquées visibles dans l'éditeur afin de faciliter la compréhension de leurs conséquences potentielles sur la performance et l'exactitude du code. Des icônes spéciales apparaissent pour les conversions implicites. Vous pouvez également choisir d'afficher les conversions sous forme de conseils textuels.

Nom : resharper1.png
Affichages : 121748
Taille : 25,5 Ko

ReSharper C++ affiche des conseils pour différents types de conversions de types de classes, notamment la copie d'objets, l'initialisation d'objets à l'aide de constructeurs de conversion ou d'initialisation d'agrégat et les appels aux opérateurs de conversion.

Vous pouvez également activer les conseils pour les conversions standard entre types intégrés, par exemple pour les conversions entre les types numériques qui peuvent entraîner une perte de précision ou un changement de signature.

Inspections d'immutabilité

Les analyses liées à l'immuabilité peuvent vous aider à rendre votre code plus correct et lisible. En ajoutant deux nouvelles inspections, ReSharper C++ couvre désormais toutes les règles de la section Constants and immutability de C++ Core Guidelines.

La première de ces inspections étend l'analyse de l'immuabilité aux paramètres de fonction de types de référence et de pointeur. ReSharper C++ vous indique si vous pouvez passer un pointeur ou une référence en const, ce qui garantit que la fonction ne modifiera pas l'argument de fonction correspondant.

Nom : resharper2.gif
Affichages : 1181
Taille : 94,7 Ko

La deuxième inspection suggère de marquer les variables qui peuvent être évaluées à la compilation avec constexpr, ce qui peut améliorer les performances et la vérification lors de la compilation.

Modernisation des inspections

ReSharper C++ 2021.2 comprend de nouvelles inspections pour vous aider à moderniser votre code.

La liaison structurée peut être utilisée à la place de tie(..) : depuis C++17, vous n'avez plus besoin d'utiliser std::tie() ou boost::tie() pour déballer un tuple ou une paire : les déclarations de liaison structurée vous aident à simplifier votre code.

Nom : resharper3.gif
Affichages : 1161
Taille : 52,6 Ko

Une propriété de type peut être simplifiée en utilisant un alias de modèle ou un modèle de variable : les modèles d'alias C++14 vous permettent de raccourcir les expressions de propriété de type C++11.

std::size peut être utilisé : cette inspection suggère d'utiliser std::size comme une alternative de type sécurisé de l'idiome C pour calculer la taille d'un tableau.

L'initialisation à zéro peut être utilisée à la place de memset : l'initialisation à zéro rend un code plus concis et évite les erreurs liées à memset.

Refactorisation Inline Function

La nouvelle refactorisation Inline Function permet de remplacer rapidement un appel de fonction par le corps de la fonction. Pour l'appeler, placez le curseur sur un appel de fonction et sélectionnez Fonction Inline dans le menu Refactor This ou choisissez ReSharper | Refactor | Inline dans le menu principal. ReSharper C++ effectue les modifications nécessaires, gère les conflits de noms et reformate le code résultant de la refactorisation.

Nom : resharper4.gif
Affichages : 1161
Taille : 92,8 Ko

Assistance au codage

Par défaut, ReSharper C++ génère des fonctions avec des corps vides, mais vous pouvez désormais spécifier si les fonctions générées doivent déclencher un std::logic_error, renvoyer une valeur par défaut ou inclure du code non compilable. Vous pouvez configurer ces paramètres dans ReSharper | Options | Code Editing | C++ | Code Generation. ReSharper C++ appelle aussi automatiquement la fonction de base depuis le corps d'une fonction de remplacement.

Nom : resharper5.gif
Affichages : 1165
Taille : 166,6 Ko

Une nouvelle action contextuelle vous permet de convertir n'importe quelle chaîne en un littéral de chaîne brut C++11, qui est plus facile à lire lorsque le littéral de chaîne contient des caractères spéciaux. Cela fonctionne dans les deux sens : vous pouvez également convertir un littéral de chaîne brut en un littéral de chaîne ordinaire.

Pour consulter rapidement cppreference.com concernant les détails d'une classe ou d'une fonction de la bibliothèque standard, vous pouvez désormais cliquer sur Read more dans le popup Quick Documentation (Ctrl+Maj+F1) pour ouvrir la page correspondante dans votre navigateur.

Lorsque vous appuyez sur la touche Retour arrière sur une ligne vide ou une ligne qui contient des espaces ou des tabulations à gauche du caret, ReSharper C++ peut maintenant placer le caret directement à la position en retrait appropriée au lieu de le reculer d'une position à la fois.

Unreal Engine

ReSharper C++ 2021.2 permet de travailler avec Unreal Engine 5 et le code source peut provenir à la fois d'Unreal Launcher et de GitHub.

Dans les fichiers .Build.cs et .Target.cs d'un projet Unreal Engine, la saisie semi-automatique du code de ReSharper C++ suggère désormais la liste des modules et plugins disponibles.

Nom : resharper6.gif
Affichages : 1161
Taille : 182,8 Ko

Après avoir ajouté un module ou un plugin, la nouvelle inspection des dépendances manquantes met en évidence celles qui doivent être référencées dans le fichier .uproject ou .uplugin. Utilisez le correctif rapide correspondant pour ajouter de nouveaux modules et plugins aux fichiers du projet en un seul clic.

Lors de la génération d'une définition d'une fonction de remplacement, ReSharper C++ appelle désormais la fonction remplacée à partir du corps généré en utilisant l'alias de type idiomatique Super.

JetBrains a amélioré les performances et l'utilisation de la mémoire lors d'un démarrage à froid. La vitesse à laquelle ReSharper C++ indexe la base de code d'Unreal Engine a augmenté de 10 %.

Autres évolutions

Le Clang-Tidy intégré a été mis à jour vers Clang 12, ce qui apporte de nouvelles vérifications provenant de la dernière version de LLVM. JetBrains a également amélioré ses performances dans les fichiers complexes, notamment dans les projets C++20.

Une nouvelle inspection vous avertit lorsque vous comparez une expression non signée avec 0, car cela peut provoquer une boucle infinie ou un code inaccessible.

En savoir plus sur les nouveautés de ReSharper C++ 2021.2 et télécharger