Prise en charge de C++23
ReSharper C++ 2024.2 ajoute la prise en charge de l'opérateur d'indice multidimensionnel. L'utilisation de operator[] avec plusieurs arguments offre une meilleure prise en charge des conteneurs et vues multidimensionnels.
À présent, ReSharper C++ comprend également les directives de préprocesseur #elifdef et #elifndef de C++23/C23 qui complètent les directives #ifdef et #ifndef existantes.
[[assume(
Unreal Engine
ReSharper C++ reconnaît désormais les traits de structure d'Unreal Engine. Dans les structures annotées par des traits, ReSharper C++ s'assure que les méthodes requises sont présentes et les génère si ce n'est pas le cas.
Une nouvelle inspection détecte les appels manquants aux méthodes de base, notamment dans les méthodes BeginDestroy et GetLifetimeReplicatedProps. Le correctif d'accompagnement insère l'appel Super requis.
Une autre nouvelle inspection signale les utilisations de IOnlineSubsystem::Get() et les remplace par Online::GetSubsystem(this->GetWorld()).
Notez que si vous recherchez un EDI autonome et multiplateforme pour le développement Unreal Engine, JetBrains recommande 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.2 de Rider.
Disposition des types
Les info-bulles permettent désormais de voir rapidement des informations sur la disposition des types. Il suffit de survoler une classe ou un champ de classe pour connaître sa taille et son alignement.
Lorsque vous survolez un champ de classe, vous pouvez également voir sa position relative par rapport au début de l'objet, ainsi que le remplissage ajouté après le champ.
Améliorations du processus de changement de nom
Lorsque vous renommez un fichier, ReSharper C++ comporte désormais une nouvelle option permettant de renommer les fichiers liés en utilisant le même nom. Par exemple, si vous renommez un fichier d'en-tête, le fichier .cpp qui inclut l'en-tête sera également renommé.
Une autre option de changement de nom permet de renommer automatiquement le type dans le fichier en fonction du nouveau nom de fichier.
Enfin, lorsque vous renommez un espace de nom dans un fichier avec un nom correspondant, vous avez la possibilité de renommer le fichier contenant.
Analyse du code
JetBrains a mis à niveau le binaire clang-tidy intégré vers Clang 18, ce qui apporte de nouvelles vérifications et des améliorations provenant de la dernière version de LLVM.
Comme pour la prise en charge des commentaires NOLINT dans la mise à jour 2024.1, ReSharper C++ reconnaît désormais les pragmas include-what-you-use, afin de supprimer l'inspection Possible unused #include directive.
JetBrains a ajouté un correctif pour utiliser reinterpret_cast sur les erreurs de conversion où le type source ou cible est un pointeur vers char ou std::byte.
Autres améliorations
L'option Why is ReSharper suggesting this? du menu d'inspection mène désormais aux recommandations C++ Core Guidelines relatives à l'inspection de code.
Le filtre Base method call est désormais disponible dans la fenêtre Find Results pour filtrer les appels de méthodes de base depuis la liste d'utilisations.
ReSharper C++ propose désormais la saisie asynchrone, qui s'inscrit dans la démarche de JetBrains pour l'amélioration continue des performances de ReSharper en permettant son exécution indépendamment de Visual Studio. Les tests effectués en interne ont montré que l'activation de la saisie asynchrone améliore de façon notable la fluidité de l'expérience de saisie.
ReSharper C++ améliore également la compatibilité avec les projets CMake dans Visual Studio, en corrigeant plusieurs problèmes importants et en améliorant les performances lors de la modification du code.
Nouveautés et téléchargement de ReSharper C++ 2024.2