Prise en charge des modules C++20
Le processus de découverte des modules mis à jour permet à ReSharper C++ de prendre en charge les unités de partition internes qui correspondent aux unités de partition du module qui ne contribuent pas à l'interface externe d'un module. En d'autres termes, il s'agit de partitions de module sans déclaration export module associée.
JetBrains a remanié la représentation interne des modules C++20 exportés pour faciliter la transmission des références aux entités importées depuis d'autres modules. Auparavant, ces entités étaient réexportées depuis le module qui les avait importées. JetBrains pense que cette modification va réduire de façon significative l'empreinte des modules exportés et améliorer les performances des projets utilisant les modules C++20.
Unreal Engine
ReSharper C++ 2024.1 inaugure la prise en charge de la syntaxe déclarative du framework d'interface utilisateur Slate. Vous pouvez compter sur l'aide de l'outil de formatage du code et sur l'assistance à la saisie de ReSharper pour que votre code Slate soit conforme aux conventions d'Unreal Engine. Les fonctionnalités Go to declaration, Find Usages et Rename ont également fait l'objet d'une mise à jour afin qu'elles comprennent la syntaxe déclarative de Slate.
L'intégration de ReSharper C++ avec la fonctionnalité Blueprint se poursuit, avec la prise en charge de l'ajout des redirections principale lorsque lors du renommage des instances UENUM, ainsi que la saisie semi-automatique des chemins de ressource pour les noms de ressource dans le code C++.
Les interfaces HLSL utilisées pour la liaison dynamique des shaders sont maintenant prises en charge dans le code du shader.
Si vous recherchez un EDI autonome et multiplateforme pour le développement Unreal Engine, JetBrains vous suggère d'essayer Rider. La prise en charge d'Unreal Engine dans Rider et dans ReSharper C++ est alignée, vous retrouverez donc les mêmes améliorations dans la version 2024.1 de Rider.
Appels sortants dans Call Tracking
En plus de la prise en charge pour le suivi des appels entrants, la fonction Call Tracking de ReSharper prend désormais en charge la navigation dans les chaînes d'appel C++ sortantes. Pour explorer les appels sortants, placez le caret sur n'importe quelle fonction et sélectionnez Inspect | Outgoing calls dans le menu contextuel. Vous pouvez aussi utiliser Ctrl+Maj+Alt+A pour faire un appel depuis le menu Inspect This.
Améliorations pour Change Signature
Change Signature permet désormais de modifier facilement le type d'un paramètre de fonction entre un pointeur, une référence ou un type de valeur. ReSharper met automatiquement à jour les utilisations du paramètre dans le corps de la fonction et ajuste les arguments de la fonction au niveau des sites d'appel de cette dernière, en ajoutant des opérateurs de déréférencement ou d'adresse si nécessaire.
Lorsque Change Signature est appelé sur une fonction qui a des utilisations potentielles dans le code dépendant, la refactorisation permet désormais de vérifier les modifications et de confirmer les utilisations à mettre à jour.
Il est également possible de spécifier des arguments par défaut pour de nouveaux paramètres de fonction ajoutés en utilisant Change Signature.
Les autres mises à jour notables de Change Signature incluent :
- Amélioration de la gestion des modèles de fonction variadiques.
- Mise à jour correcte des arguments de fonction pour les sites d'appel dans les appels de macros.
- Change Signature préserve désormais les types de tableau et le spécificateur de type int dans les types unsigned int.
Commentaires dans la documentation
Il est maintenant possible de personnaliser le style des commentaires de documentation générés sans avoir à éditer un live template. Pour configurer le style des commentaires de documentation, allez dans la section Settings | Code editing | C++ | Code generation de ReSharper C++.
Le correcteur orthographique et grammatical intégré JetBrains Grazie a été introduit dans ReSharper 2023.3. Dans la version 2024.1, les inspections grammaticales générées par Grazie sont également disponibles dans les commentaires de documentation C++.
La refactorisation Change Signature synchronise désormais les commandes @param avec la liste des paramètres de fonction. Cette refactorisation supprime les commandes @param correspondant à des paramètres supprimés, ajoute des commandes aux nouveaux paramètres et réorganise les commandes existantes en fonction du nouvel ordre des paramètres inclus.
Analyse du code
Selon les derniers résultats de la suite de tests étendue pour les outils de refactorisation C++ gérée par Richard Thomson, ReSharper C++ assure à nouveau des performances supérieures à celles des autres outils en réussissant la plupart des cas de test. Dans le cadre de son processus d'amélioration continue des suggestions de ReSharper, JetBrains a corrigé plusieurs problèmes relevés par la suite de tests de Richard dans ReSharper C++ 2024.1. Par exemple, le correctif rapide Create constructor from usage ajoute désormais un constructeur par défaut si besoin.
ReSharper C++ 2024.1 propose désormais de supprimer les initialisations à zéro idiomatiques redondantes lors de l'initialisation d'agrégats. Plusieurs nouvelles inspections identifient différents problèmes au niveau des membres de données statiques, tels que les spécificateurs inline sur les membres de données static constexpr.
Le nettoyage du code ajoute de nouveaux éléments permettant de supprimer les spécificateurs d'accessibilité redondants et de donner aux classes sans dérivés l'attribut final. Apply ‘auto’ style permet désormais de traiter les variables globales et les membres de classes en supplément des variables locales.
Jusqu'alors, pour supprimer une inspection dans une portée spécifique, il fallait utiliser les commentaires // ReSharper disable propres à ReSharper. ReSharper C++ 2024.1 reconnaît désormais les commentaires NOLINT, NOLINTNEXTLINE et NOLINTBEGIN ... NOLINTEND que clang-tidy utilise.
Formatage du code
ReSharper C++ 2024.1 introduit plusieurs nouvelles options de mise en forme :
- Break line after goto labels et Indent goto labels améliore la mise en forme des instructions étiquetées.
- Paramètres contrôlant le retour à la ligne dans les énumérations avec Arrangement of enumerations.
- Empty braces formatting inclut à présent l'option Do not change.
Lors de l'utilisation d'une configuration .clang-format, le formateur de ReSharper respecte désormais les paramètres DisableFormat et IndentAccessModifiers. Le style clang-format intégré est à présent pris en charge.
Nouveautés et téléchargement de ReSharper C++ 2024.1