Unreal Engine
ReSharper C ++ 2020.3 fournit une intégration transparente avec UnrealHeaderTool pour vous aider à détecter plus de problèmes avec les métadonnées de classe Unreal Engine directement dans l'éditeur. Lorsque vous travaillez avec un projet Unreal Engine, ReSharper C ++ exécute automatiquement UnrealHeaderTool sur le fichier que vous modifiez et affiche toutes les erreurs ou avertissements, comme pour les autres inspections.
Pour vous tenir toujours à jour, ReSharper C ++ suit désormais les propriétés d'Unreal Engine en temps réel et régénère le modèle de projet dès que vous enregistrez les modifications dans les fichiers .Build.cs , .Target.cs , .uproject ou .uplugin. ReSharper C ++ 2020.3 améliore sa conformité à la norme de codage Unreal Engine . Par exemple, ReSharper C ++ suggère maintenant d'utiliser MoveTemp (l'équivalent d'Unreal Engine de std::move) pour la conversion en une référence rvalue.
Comparaisons C ++ 20
ReSharper C++ 2020.3 prend entièrement en charge les règles de comparaison C++20. Cela inclut un changement significatif dans le fonctionnement des comparaisons, où le langage est autorisé à réécrire une expression de comparaison ou à inverser l'ordre des arguments. Vous pouvez désormais consulter l'info-bulle pour savoir comment une expression a été réécrite. Lorsqu'un opérateur de comparaison ne peut pas être résolu, le message d'erreur énumère tous les candidats considérés comme surchargeant le langage.
Les opérateurs de comparaison par défaut sont un autre ajout au C++20. Si vous n'êtes pas sûr de la raison pour laquelle un opérateur de comparaison par défaut de votre classe a été implicitement supprimé, vous pouvez consulter le message détaillé de l'info-bulle pour en connaître la raison exacte. ReSharper C++ peut désormais également déduire le type de retour d'un opérateur de comparaison à trois voies par défaut.
Un nouveau correctif rapide vous permet d'ajouter rapidement une directive #include<compare> à votre fichier source, qui est nécessaire chaque fois que vous utilisez un opérateur de comparaison à trois voies qui renvoie une catégorie de comparaison standard, comme std::strong_ordering. Le correctif rapide "Créer un opérateur à partir de l'utilisation" a été mis à jour pour prendre en charge également les règles de comparaison C++20. Vous pouvez désormais créer la version membre et la version amie d'un opérateur en plus de la version non membre. Pour les opérateurs secondaires, qui peuvent être réécrits en fonction d'un opérateur primaire, vous pouvez choisir de créer soit l'opérateur primaire, soit l'opérateur secondaire.
Analyse de code
Toute la puissance de l'analyse des flux de contrôle de ReSharper se retrouve maintenant dans les fichiers de shaders HLSL, y compris les avertissements sur le code inaccessible, les variables non initialisées, les sauts de flux de contrôle redondants et les branches conditionnelles, et bien plus encore. ReSharper C++ 2020.3 propose deux inspections avec des correctifs rapides pour vous aider à adopter la nouvelle bibliothèque de gammes C++20 et à moderniser votre code :
- un algorithme fonctionnant sur des plages peut être utilisé ;
- std::views::keys/values peut être utilisé.
Une nouvelle inspection suggère de remplacer les utilisations d'algorithmes standard qui acceptent une paire d'itérateurs par des algorithmes équivalents qui acceptent un itérateur et un comptage lorsque cela est possible. Le binaire Clang-Tidy groupé a été mis à jour en Clang 11, ajoutant de nouveaux contrôles et diagnostics du compilateur de la dernière version du LLVM.
Conseils d'incrustation Push-to-Hint
ReSharper C++ fournit de nombreux types d'incrustations. Bien que tous ces conseils soient utiles dans certains scénarios, JetBrains a également entendu dire qu'ils peuvent parfois être trop nombreux. Pour y remédier, l'entreprise a mis au point un nouveau mécanisme "Push-to-Hint" pour les incrustations. Dans le mode de visibilité "Push-to-Hint", les indices ne sont affichés que lorsque vous appuyez et maintenez la touche Ctrl, ou lorsque vous appuyez deux fois sur Ctrl.
JetBrains a fait en sorte que le mode de visibilité puisse être configuré séparément pour chaque type d'incrustation C++. Vous pouvez rapidement changer le mode de visibilité pour un indice donné en utilisant le menu contextuel, ou vous rendre sur les nouvelles pages d'options dans "Environnement | Indices d'incrustation | C++" pour vérifier tous les paramètres.
Complétion de code
Une nouvelle action de contexte vous aide à inverser les expressions des opérateurs ternaires. Le correctif rapide "Joindre la déclaration et l'assignation" est maintenant disponible pour les cas où une variable locale est réassignée dans tous les chemins avant d'être lue. Lorsque la complétion de l'importation est activée, la liste de complétion suggérera les membres appropriés des classes incomplètes à partir des fichiers d'en-tête qui ne sont pas inclus dans le fichier actuel.
La complétion de l'importation suggère maintenant une nouvelle option pour ajouter un spécificateur de type élaboré pour la classe correspondante, en plus des options pour ajouter une directive d'inclusion ou une déclaration directe. JetBrains a amélioré la complétion du code d'argument pour les fonctions de bibliothèque qui acceptent des constantes macro. Les constantes macro de la bibliothèque qui sont applicables à l'argument courant sont maintenant classées par ordre de priorité dans la liste de complétion. Cette heuristique fonctionne pour les fonctions de la bibliothèque standard, WinAPI, et OpenGL.
Navigation et recherche
En plus de la recherche régulière, "Find Text" effectue désormais une recherche floue, ce qui signifie qu'il prend en compte les éventuelles fautes de frappe et les mots manquants. Cette fonction peut être très utile si vous recherchez une certaine chaîne de format utilisée comme argument d'une fonction de formatage de texte comme printf ou std::format. Vous pouvez maintenant utiliser "Go to Declaration" pour passer d'une directive de préprocesseur à l'autre, comme les branches d'un bloc de prétraitement conditionnel, ou les #define et #undef de la même macro dans un seul fichier.
Go to Declaration peut également être utilisé pour naviguer rapidement vers une fonction de base - il suffit de l'invoquer sur un mot-clé de remplacement. Les implémentations Peek et les symboles de base Peek sont en C++, ce qui vous permet de visualiser et de modifier le code dans une fenêtre popup sans avoir à vous éloigner du code que vous écrivez. Pour une meilleure lisibilité, la structure des fichiers utilise désormais la syntaxe C++17 pour les espaces de noms imbriqués, même si vous n'avez pas encore adopté la nouvelle syntaxe dans votre base de code. La fonction "Go to Derived Symbols" permet d'obtenir/régler des fonctions dans les propriétés C++/CLI et d'ajouter/supprimer des fonctions dans les événements C++/CLI.
Autres modifications
La prise en charge du C++20 a été améliorée conformément aux mises à jour de conformité standard de Visual Studio 16.8. En particulier, ReSharper C++ prend désormais en charge à la fois le mode standard et le mode d'extension pour les coroutines C++, ainsi que le nouvel en-tête <coroutine>. Grâce à la réduction du champ de recherche, JetBrains a pu améliorer les performances des actions "Find Usages" et "Rename" lorsque ces actions sont utilisées sur les membres de la classe privée.
Source : JetBrains
Télécharger ReSharper C ++ 2020.3