L'AI Assistant est sorti de la phase de préversion
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, JetBrains a ajusté la génération des fonctions de hachage afin de suivre les conventions d'Unreal Engine.
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.
JetBrains a 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.
- JetBrains a é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.
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, JetBrains a 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, JetBrains a ajouté le préfixe [[jetbrains::...]] en plus de [[rscpp::...]] pour les attributs [[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.
JetBrains a introduit un ensemble d'inspections pour une 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.
JetBrains a également mis le binaire Clang-Tidy intégré à niveau vers Clang 17, pour bénéficier des modifications 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, JetBrains a 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 correspondantes, vous pouvez désormais passer de l'une à l'autre grâce à l'action Go to Declaration sur une directive #pragma ou un nouveau conseil d’insertion avec le nom de la région.
De plus, la fenêtre File Structure vous permet désormais de replier 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 conseils d’insertion de référence ont désormais un texte [>>] distinct afin que vous puissiez repérer les références de transfert 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 mise en forme :
- 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 {.
JetBrains a également mis à niveau le binaire au format clang intégré vers Clang 17 et implémenté la prise en charge du paramètre de format clang InsertNewlineAtEOF, lors de l'importation des paramètres de l’outil de mise en forme à partir d'une configuration au format .clang, mais aussi lors de l'utilisation du format clang à la place de l’outil de mise en forme intégré.
Nouveautés et téléchargement de ReSharper C++ 2023.3