Nouveautés de ReSharper C++

ReSharper C++ 2024.1 améliore la prise en charge des modules C++20 et implémente les appels sortants dans Call Tracking. Les améliorations de l'assistance au codage incluent notamment l'ajout de nouvelles fonctionnalités dans Change Signature et la mise à jour de la prise en charge des commentaires de documentation. Pour les développeurs Unreal Engine, ReSharper C++ 2024.1 introduit la prise en charge du framework d'interface utilisateur Slate et la saisie semi-automatique du chemin des ressources dans le code C++.

Télécharger

Essai gratuit de 30 jours disponible

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.

Nous avons 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. Nous pensons 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 inaugue 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 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 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 maintenant 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 emplacements d'appel de la fonction, en ajoutant des opérateurs de déréférencement ou des opérateurs address-of si nécessaire.

Lorsque Change Signature est appelée sur une fonction ayant des utilisations potentielles dans du code dépendant, la refactorisation permet 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 fonctions variadiques.
  • Mise à jour correcte des arguments de fonction pour les sites d'appel dans les appels de macros.
  • Change Signature conserve désormais les types de tableaux 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.

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 pour les paramètres supprimés, ajoute des commandes pour les nouveaux paramètres et réorganise les commandes existantes pour correspondre au 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++ continue de surpasser les autres outils en réussissant le plus grand nombre de cas de test. Dans le cadre de notre processus d'amélioration continue des suggestions de ReSharper, nous avons 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 initialiseurs idiomatiques à zéro redondants dans l'initialisation globale. 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 pour supprimer les spécificateurs d'accessibilité redondants et donner aux classes sans héritiers l'attribut final. Apply ‘auto’ style peut gérer les variables globales et les membres de classes en plus 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 formatage :

  • Break line after goto labels et Indent goto labels améliorent le formatage des instructions étiquetées.
  • Paramètres contrôlant le retour à la ligne dans les énumérations dans 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 de clang-format intégré GNU est maintenant pris en charge également.

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

ReSharper C++ 2023.3

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 en C et C++, vous pouvez essayer une version préliminaire de l'IDE indépendant CLion Nova. 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 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 {.

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.

ReSharper C++ 2023.2

AI Assistant Accès limité

AI Assistant n'est pas fourni avec ReSharper et doit être installé séparément. L'accès à la fonctionnalité AI Assistant est limité pour le moment et nous avons mis en place une liste d'attente.

Vous trouverez plus d'informations sur l'AI Assistant et la façon de l'installer depuis Toolbox App ou le programme d'installation de dotUltimate dans notre aide web.

ReSharper C++ 2023.2 introduit l'AI Assistant, qui consiste en un un chat assisté par IA conçu pour répondre aux questions de programmation et apporter une aide au niveau des workflows de développement essentiels, par notamment pour la résolution de problèmes, la refactorisation ou encore la documentation.

L'AI Assistant de ReSharper tient compte du langage et des technologies utilisés dans votre projet. Cette connaissance du contexte lui permet de fournir des réponses adaptées, ce qui fait gagner du temps.

N'hésitez pas à inclure des parties du code source dans vos requêtes. ReSharper détectera le code que vous avez envoyé ou collé dans le chat et le mettra correctement en forme, tandis que le modèle d'IA expliquera la logique derrière le code et vous aidera à le refactoriser, à trouver les problèmes ou à le documenter.

Prise en charge de C++23

L'instruction if consteval est une nouvelle fonctionnalité d'évaluation des constantes en C++23 qui fait évoluer le concept consteval et std::is_constant_evaluated() de C++20. Si l'évaluation de l'instruction if consteval a lieu pendant l'évaluation d'une constante, l'instruction composée suivante est exécutée. Dans le cas contraire, la branche else est exécutée.

ReSharper C++ introduit une prise en charge pour if consteval et apporte un ensemble d'inspections associées :

  • consteval if est toujours une constante.
  • std::is_constant_evaluated a toujours pour résultat une expression constante.
  • if peut être remplacé par if consteval.

ReSharper C++ prend maintenant en charge les modules nommés std et std.compat introduits dans la bibliothèque standard C++23. Si vous utilisez Visual Studio 17.6 ou une version ultérieure, vous pouvez désormais utiliser import std ou import std.compat pour importer l'ensemble de la bibliothèque standard au lieu d'utiliser un en-tête précompilé ou d'inclure des en-têtes spécifiques de la bibliothèque standard.

Avant C++23, tous les opérateurs devaient être des fonctions membres non statiques. Cependant, les opérateurs d'appel sont souvent utilisés avec des objets de fonctions sans membres et dans ce cas, permettre aux opérateurs d'être statiques améliore l'efficacité du code. C++23 permet à operator() et operator[] d'être statiques.

Prise en charge de C++20

Nous avons amélioré la prise en charge des modules C++20 et corrigé plusieurs problèmes dans des projets concrets utilisant des modules. Lors du traitement des modules en interne, ReSharper C++ ignore désormais les déclarations qui ne sont pas accessibles à partir d'autres déclarations, ce qui améliore considérablement les performances des modules ayant un grand nombre de fichiers d'en-tête dans le fragment de module global.

De plus, nous avons en implémenté plusieurs modifications pour une meilleure prise en charge des modules dans les projets CMake. ReSharper C++ reconnaît maintenant les fichiers .cppm en tant qu'interfaces de module et fournit une prise en charge expérimentale pour les modules situés en dehors du dossier du projet.

Le nouvel attribut [[no_unique_address]] de C++20 indique qu'une adresse unique n'est pas nécessaire pour un membre de données non statique d'une classe, ce qui permet au compilateur d'organiser les membres de la classe avec plus d'efficacité. ReSharper C++ prend désormais en compte [[no_unique_address]] lors du calcul de la taille d'un objet.

ReSharper C++ 2023.2 implémente également le rapport de défauts C++20 récemment adopté, qui permet l'initialisation d'un tableau de char ou unsigned char avec un littéral de chaîne UTF-8.

Refactorisation Safe Delete

ReSharper C++ introduit la refactorisation Safe Delete pour vous permettre de supprimer des symboles dans votre code source en toute sécurité. Cette refactorisation est disponible pour les classes, les fonctions, les variables, les énumérateurs, les espaces de noms et même les concepts.

Pour appeler la refactorisation, placez le curseur sur le symbole à supprimer et appuyez sur Alt+Suppr, ou sélectionnez Safe Delete dans le menu Refactor This.

Avant de supprimer un symbole, ReSharper C++ recherche ses occurrences et fournit une prévisualisation des modifications du code afin d'éviter toute suppression non intentionnelle. Si vous essayez de supprimer une entité complexe comme une classe ou un espace de nom, ReSharper C++ vérifiera récursivement les utilisations de tous ses membres.

Unreal Engine

Cette version améliore les performances d'indexation des Blueprints. La première fois que vous ouvrez un projet, ReSharper C++ indexe toutes vos ressources Blueprint afin que vous puissiez utiliser des fonctionnalités comme Find Usages et affiche les valeurs des données sérialisées directement dans l'éditeur de texte.

Auparavant, ReSharper C++ indexait ces ressources en même temps que le code C++, la préparation du projet pour le travail prenait donc plus de temps. ReSharper C++ 2023.2 indexe les ressources en arrière-plan après l'indexation de votre code C++ sans interférer avec votre travail.

Nous avons amélioré la saisie semi-automatique intelligente pour les types wrapper avec une sémantique d'affectation standard. Par exemple, en cas d'affectation à une variable de type TEnumAsByte, la saisie semi-automatique proposera les énumérateurs du type d'énumération sous-jacent.

Pour les projets Unreal Engine 5.1, nous avons introduit la prise en charge de la macro UE_INLINE_GENERATED_CPP_BY_NAME, qui vous permet d'intégrer les fichiers générés dans votre module afin d'améliorer le temps de compilation.

Assistance au codage

Grâce à l'amélioration de la saisie semi-automatique pour le code dépendant, vous disposerez maintenant d'éléments de complétion lorsque le type est restreint par un concept ou un trait. ReSharper C++ tient désormais compte des traits de type standard std::is_same/std::is_base_of, de leurs alias de valeur _v, des concepts std::same_as/std::derived_from correspondants et du trait TIsSame d'Unreal Engine.

De plus, ReSharper C++ extrait maintenant les exigences de type et de valeur des clauses requires, de if constexpr et SFINAE afin d'améliorer la pertinence des suggestions de saisie semi-automatique du code.

Deux nouvelles actions contextuelles complémentaires permettent de déplacer une contrainte de paramètre de modèle vers une clause requires et de convertir une clause requires en contrainte de paramètre de modèle.

Si vous avez un appel récursif, ReSharper C++ le signalera dans la gouttière pour le rendre plus visible.

Dans la liste de saisie semi-automatique, les identifiants réservés sont désormais filtrés et suggérés uniquement après _. Vous n'avez donc plus besoin de faire défiler la liste des suggestions des bibliothèques standard si vous n'en avez pas besoin.

La version précédente, ReSharper C++ 2023.1 , a apporté une mise en évidence et une mise en forme correctes pour la substitution de macros dans la fenêtre contextuelle Quick Documentation et dans les infobulles au survol du curseur. Dans la version 2023.2, ces améliorations s'appliquent aussi aux définitions de macros et à Parameter Info dans la saisie semi-automatique du code.

Nous avons amélioré le moteur d'évaluation pour prendre en charge l'initialisation agrégée des tableaux constexpr.

Nous avons amélioré la compatibilité avec les compilateurs GCC et Clang et les bibliothèques standard libc++/libstdc++. Cela inclut la prise en charge de nouvelles built-ins comme __integer_pack et __is_convertible/__is_nothrow_convertible, et des mises à jour pour celles qui étaient pris en charge.

Lorsque vous spécifiez la direction du paramètre avec l'attribut [in], [in,out] ou [out] de la commande param de Doxygen, les infobulles les récupèrent désormais dans votre commentaire.

Analyse du code

ReSharper C++ 2023.2 ajoute une nouvelle inspection qui détecte les opérateurs de déréférencement et les opérateurs address-of redondants. Il fournit plusieurs correctifs rapides pour simplifier l'accès aux membres et la suppression des opérateurs redondants.

Une autre nouvelle inspection met en évidence les arguments de modèle redondants qui correspondent à l'argument de modèle par défaut et peuvent être omis.

Une nouvelle inspection de compatibilité vous signale les déclarations avancées d'enums de style C sans type sous-jacent, ce qui est interdit par la norme C++ mais accepté par MSVC, et peut empêcher la portabilité du code.

ReSharper C++ met maintenant en évidence les directives de diagnostic du préprocesseur #error et #warning en fonction de leur niveau de gravité.

Nous avons également mis à jour le binaire clang-tidy intégré vers Clang 16 pour fournir des vérifications et correctifs supplémentaires.

Selon la valeur de l'argument du compilateur /Zc:preprocessor, MSVC peut utiliser le préprocesseur traditionnel ou le nouveau préprocesseur conforme aux normes. ReSharper C++ lit désormais la valeur de cet argument dans les propriétés du projet et ajuste le comportement du préprocesseur intégré en conséquence.

Navigation

ReSharper C++ 2023.2 apporte plusieurs améliorations à Go to declaration pour une navigation dans le code plus cohérente et directe, sans étapes supplémentaires :

  • Lorsqu'il est appelé sur un nom de classe dans un appel de constructeur, Go to déclaration amène désormais au constructeur et non à la classe contenante.
  • Go to declaration navigue désormais vers la première déclaration typedef ou d'alias de type au lieu d'afficher le menu avec toutes les déclarations.
  • Go to declaration sur un nom de module permet de passer de l'unité d'interface à l'unité d'implémentation pour ce module.
  • Go to declaration sur un dossier dans un chemin #include ouvre ce dossier.

De plus, Type of symbol est maintenant disponible pour les symboles non déclarateurs. Cela fonctionne de la même manière que Go to declaration.

Aide au formatage et à la saisie

Lors de la génération de commentaires de documentation, ReSharper C++ adapte désormais le modèle de documentation au style de commentaire de l'éditeur. Pour /**, l'assistance à la saisie générera le commentaire dans le style /** */, et pour ///, le commentaire sera dans le style ///.

Cette version apporte plusieurs améliorations à la mise en forme des membres des champs de bits. Les options d'alignement des initialiseurs et des noms des déclarations dans les colonnes prennent désormais en charge les champs de bits. Il y a également deux nouveaux paramètres de formatage pour placer des espaces avant et après les deux points dans les déclarations de champs de bits et pour aligner des tailles de champs de bits dans les colonnes.

Une nouvelle option d'aide à la saisie vous permet de désactiver la génération de commentaires de documentation afin d'éviter des conflits avec le générateur intégré de Visual Studio (ReSharper | Options | Environment | Editor | Behavior | C++, C, HLSL | Generate documentation comments).

Nous avons aussi mis à jour le binaire clang-format intégré et corrigé le moteur clang-format pour l'empêcher de supprimer la ligne vide à la fin d'un fichier.

Consultez la page Nouveautés de ReSharper pour en savoir plus sur les autres évolutions apportées par cette version. Par exemple, ReSharper introduit un débogueur prédictif, qui prévoit tous les états possibles déclenchés par l'exécution d'un programme sans avoir à l'exécuter.