Nouveautés de ReSharper C++ 2023.3

ReSharper C++ 2023.3 apporte un nouvel outil intégré de vérification grammaticale et orthographique, la saisie semi-automatique du code et Find Usages pour le code inactif, des mises à jour pour C et C++, la prise en charge de HLSL, et plus encore. Il bénéficie également d'une mise à jour majeure de JetBrains AI Assistant.

Télécharger

Essai gratuit de 30 jours disponible

L'AI Assistant est sorti de la phase de préversion Disponibilité générale

L'AI Assistant est maintenant accessible à tous et apporte de nombreuses nouveautés et fonctionnalités améliorées pour rendre votre travail encore plus productif. Notre dernière série d'améliorations inclut une meilleure prise en compte des projets pour les actions d'IA et une bibliothèque de prompts.

Utilisez l'AI Assistant dans ReSharper C++ en tant que fonctionnalité supplémentaire en vous abonnant à JetBrains AI Service.

Mises à jour pour HLSL et Unreal Engine

HLSL 2021 a introduit des modèles de fonctions et de types de données similaires à C++. La dernière mise à jour de ReSharper C++ apporte une prise en charge complète des modèles HLSL.

ReSharper C++ 2023.3 inaugure la prise en charge du type RayQuery intégré à HLSL et améliore la saisie semi-automatique du code pour suggérer les indicateurs correspondants.

Une nouvelle inspection vous aide à éviter de tomber dans l'un des pièges courants de la macro d'assistance AddDynamic. Vous recevrez désormais un avertissement si une fonction déléguée dynamique n'est pas marquée avec la macro UFONCTION.

S'il vous arrive encore d'écrire du code standard, n'oubliez pas que le raccourci Alt+Inser peut générer automatiquement les membres de type courant. Dans ReSharper C++ 2023.3, nous avons ajusté la génération des fonctions de hachage afin de suivre les conventions d'Unreal Engine.

Si vous recherchez un IDE autonome et multiplateforme pour le développement Unreal Engine, nous vous suggérons 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 2023.3 de Rider.

Prise en charge de C et C++

Si jamais vous avez besoin de vérifier si un attribut spécifique est disponible dans la version actuelle du standard ou du compilateur, les tests de fonctionnalités de C++20 peuvent vous sauver la mise. En utilisant __has_cpp_attribute(operand) dans les conditions du préprocesseur, vous pouvez tester si le compilateur reconnaît l'attribut référencé par son opérande. ReSharper C++ gère désormais correctement __has_cpp_attribute pour mieux prendre en charge les annotations d'attributs dans les bibliothèques C++ standards.

Nous avons introduit la prise en charge du pack pragma utilisé avec le mot-clé __pragma. On trouve parfois la syntaxe __pragma (pack) dans les définitions de macro, car il n'est pas possible d'y utiliser les directives #pragma. Dans ce genre de cas, ReSharper C++ calcule désormais correctement la taille des structures empaquetées ; vous pouvez donc vous fier aux résultats de l'analyse du code.

ReSharper C++ ajoute la prise en charge de plusieurs fonctionnalités C :

  • Le qualificatif de type restrict de C99 qui peut être utilisé dans les déclarations de pointeur.
  • La déduction de type, constexpr et nullptr de C23.

Nous avons également introduit la prise en charge de plusieurs nouveaux éléments intrinsèques de clang (tels que __is_const(), __is_member_pointer()), pour améliorer le fonctionnement de ReSharper C++ avec du code multiplateforme.

Pour le développement multiplateforme C et C++, vous pouvez essayer la version préliminaire de l'IDE CLion Nova autonome. Il s'appuie de ReSharper C++ et son utilisation est totalement gratuite à ce stade ; il suffit de vous inscrire, de commencer à coder et de nous envoyer votre avis !

Vérification orthographique et grammaticale

JetBrains Grazie est devenu le nouvel outil intégré de vérification de grammaire et d'orthographe dans ReSharper. Grazie prend en charge plus de 20 langues et détecte les erreurs linguistiques au sein des langages de programmation pris en charge par ReSharper (C#, C++, VB.NET), des langages de balisage (HTML, XML, XAML) et des commentaires. Pour ajouter d'autres langues à Grazie, allez dans Options | Grammar and Spelling | General dans ReSharper.

Veuillez noter que la vérification grammaticale n'est pas disponible actuellement dans les commentaires doxygen.

Travailler avec du code inactif

Avec du code spécifique à la plateforme ou à la configuration, vous vous retrouvez souvent à modifier des blocs de code actuellement inactifs dans des branches de préprocesseur conditionnel. Auparavant, la saisie semi-automatique dans du code inactif ne proposait que des macros. Dans ReSharper C++ 2023.3, nous avons amélioré la saisie semi-automatique du code dans ces scénarios pour inclure les symboles de la portée globale.

Find Usages affiche désormais les occurrences possibles dans le code inactif et les corps de macro. Auparavant, si vous souhaitiez trouver ces utilisations, vous deviez utiliser Find Usages Advanced et rechercher les occurrences textuelles. Les résultats de Find Usages incluent à présent par défaut les utilisations potentielles dans les corps de macro et le code inactif. Ces occurrences sont regroupées dans des sections distinctes pour les distinguer de celles du code actif.

Analyse du code

Vous pouvez utiliser les attributs C++ spécifiques à ReSharper afin d'améliorer l'exactitude et les informations pour l'analyse de votre solution par ReSharper. Dans ReSharper C++ 2023.3, nous avons ajouté le préfixe [[jetbrains::...]] en plus de [[rscpp::...]] pour les attributs existants [[jetbrains::format]], [[jetbrains::guard]] et [[jetbrains::has_side_effects]].

Le nouvel attribut [[jetbrains::pass_by_value]] vous permet de supprimer l'inspection Pass value by const reference pour les paramètres de fonction. En savoir plus.

Nous avons introduit un ensemble d'inspections concernant l'utilisation incorrecte du mot-clé export dans les modules C++20. ReSharper C++ suggère désormais de supprimer l'exportation si une autre déclaration d'exportation contient déjà une déclaration donnée, ou lorsque la déclaration ne fait pas partie d'une unité d'interface de module et ne peut pas être exportée. Vous recevrez également une suggestion de déplacer export si vous essayez de créer un modèle de déclaration d'exportation au lieu d'exporter le modèle de déclaration.

Nous avons mis à jour le binaire clang-tidy intégré vers Clang 17, pour bénéficier des nouveautés de la dernière version de LLVM.

Certaines vérifications clang-tidy génèrent davantage de détails en plus du texte d'avertissement. ReSharper C++ affiche maintenant ces notes supplémentaires dans l'infobulle.

Une nouvelle inspection met en garde contre l'utilisation de littéraux à plusieurs caractères. Ils sont pris en charge sous condition avec des valeurs définies par l'implémentation et doivent être utilisés avec précaution dans un code portable.

ReSharper C++ suggère désormais un correctif rapide pour supprimer les opérateurs conditionnels redondants et simplifier les expressions conditionnelles ternaires.

Assistance au codage

Le menu Generate du raccourci Alt+Inser vous aide à créer rapidement du code standard. Dans ReSharper C++ 2023.3, nous avons ajouté une nouvelle action à la liste. Elle vous permet de générer un destructeur.

Lorsqu'elle est appelée dans une classe polymorphe, l'action utilise les paramètres de style de syntaxe pour insérer les spécificateurs virtual et override requis. Vous pouvez configurer le style de corps du destructeur généré dans la page des options Code Editing | C++ | Code Generation.

Les directives #pragma region et #pragma endregion vous permettent de spécifier un bloc de code pliable. Comme pour d'autres directives associées, vous pouvez maintenant naviguer entre elles en utilisant l'action Go to Declaration sur une directive #pragma ou grâce à une nouvelle indication contextuelle affichant le nom de la région.

De plus, la fenêtre File Structure vous permet désormais de réduire facilement les régions et de naviguer vers les blocs de code correspondants.

En code C, void doit être utilisé dans la liste des paramètres d'une fonction pour indiquer que la fonction ne prend aucun argument. ReSharper C++ préserve désormais ce void spécial lorsque vous appelez les refactorisations Extract method ou Change signature, générez une définition pour la fonction ou créez une nouvelle fonction à partir de son utilisation.

Les indications contextuelles de référence ont désormais un texte [>>] distinct afin que vous puissiez repérer les références de renvoi d'un coup d'œil.

La nouvelle action Generate inline definitions vous permet de générer rapidement des corps pour plusieurs fonctions simultanément. Comme l'action Generate definitions actuelle, la nouvelle action est disponible lorsqu'un nom de classe ou plusieurs déclarations de fonction sont sélectionnés dans l'éditeur.

Lorsque vous appelez les refactorisations Introduce variable ou Introduce field sur une expression imbriquée, ReSharper C++ vous permet désormais de choisir explicitement l'expression cible au lieu d'utiliser automatiquement la plus externe.

Pour améliorer l'expérience de navigation dans le code, les symboles provenant de substitutions de macros sont désormais masqués dans Go to et dans la fenêtre File Structure. C'est intéressant avec les macros qui introduisent beaucoup de symboles auxiliaires lors de leur expansion, comme les déclarations de cas de test dans les frameworks de tests unitaires populaires.

Formatage du code

ReSharper C++ 2023.3 introduit plusieurs nouvelles options de formatage :

  • Insérer un retour à la ligne avant -> dans les types de retour de fin.
  • Insérer un retour à la ligne après -> dans les types de retour de fin.
  • Espaces dans des blocs vides.
  • Autoriser les commentaires après {.

Nous avons également mis à niveau le binaire clang-format intégré vers Clang 17 et implémenté la prise en charge du paramètre de clang-format InsertNewlineAtEOF, lors de l'importation des paramètres de l'outil de mise en forme à partir d'une configuration .clang-format, mais aussi lors de l'utilisation de clang-format à la place de l'outil de mise en forme intégré.

Consultez la page des Nouveautés de ReSharper pour en savoir plus sur tous les autres changements introduits dans cette version.

Télécharger

Essai gratuit de 30 jours disponible