JetBrains est une société spécialisée dans le développement de logiciels, qui conçoit des outils destinés aux programmeurs (développeurs de logiciels) et aux chefs de projet. JetBrains propose divers environnements de développement intégrés (EDI), tels que IntelliJ IDEA, PyCharm, Rider, WebStorm et CLion. Elle a également créé en 2011 le langage de programmation Kotlin, qui peut s'exécuter sur une machine virtuelle Java (JVM)ReSharper est une extension de Visual Studio destinée aux développeurs .NET, lancée pour la première fois en 2004. Il s'agit du produit commercial le plus ancien de JetBrains. ReSharper fournit une analyse de la qualité du code en temps réel pour les langages C#, VB.NET, XAML, ASP.NET, JavaScript, TypeScript, CSS, HTML et XML. ReSharper C++ est l'extension Visual Studio pour le développement C++.
ReSharper C++ 2026.2 est désormais disponible et apporte une première prise en charge de la réflexion C++26, l’ajout le plus attendu au langage C++ ces dernières années. Cette version introduit également la prise en charge des agents ACP dans ReSharper, avec Junie comme premier agent disponible, ajoute la prise en charge du langage ISPC et accélère considérablement l’indexation dans les projets Unreal Engine. Parmi les autres points forts, citons les mises à jour de l’évaluateur constexpr, de nouvelles inspections de code et des améliorations en matière de refactorisation.
Voici les changements et améliorations les plus importants dans cette version :
Prise en charge du C++
Réflexion C++26
La fonctionnalité phare de cette version est la réflexion C++26, un ajout tant attendu au langage qui permet l’introspection et la génération de code à la compilation. Grâce à cette mise à jour, ReSharper C++ reconnaît les primitives de réflexion de base :
- L’opérateur ^^ (reflect), qui produit une valeur std::meta::info représentant l’entité réfléchie.
- La syntaxe [: ... :] (splice), qui reconvertit une valeur de réflexion en une construction du langage.
- Les requêtes à la compilation sur les types, membres, énumérateurs et autres entités reflétés.
Parmi les principaux compilateurs C++, seul GCC 16 prend actuellement en charge la réflexion C++26. Pour tester dès maintenant la réflexion C++26 dans Visual Studio, vous pouvez notamment créer un projet C++ sous Linux et le compiler à l’aide de WSL sur une distribution Linux incluant GCC 16, comme Fedora 44.
Fonctionnalités C++26 associées
La prise en charge de la réflexion est complétée par deux fonctionnalités linguistiques C++26 associées :
- ReSharper C++ prend désormais en charge les blocs consteval { ... } qui sont évalués à la compilation et peuvent injecter des déclarations dans la portée englobante. Les blocs consteval offrent un moyen propre de déclencher des effets secondaires à la compilation, ce qui les rend particulièrement utiles pour la métaprogrammation pratique avec la réflexion.
- Des annotations définies par l’utilisateur peuvent désormais être associées à des déclarations et interrogées via l’API de réflexion, ce qui permet une génération de code personnalisée pilotée par des métadonnées.
Évaluation constexpr.
L'équipe de JetBrains a également mis à jour l’évaluateur constexpr en y ajoutant deux fonctionnalités importantes :
- L’évaluateur prend désormais en charge l’allocation dynamique de mémoire lors de l’évaluation des constantes – une fonctionnalité introduite dans C++20. Cela permet une évaluation correcte du code constexpr utilisant new/delete ou des conteneurs standard tels que std::vector et std::string.
- L’évaluateur prend désormais en charge les exceptions constexpr de C++26 et gère les expressions try/catch et throw lors de l’évaluation des constantes.
Prise en charge du langage ISPC
Ils ont ajouté la prise en charge d’ISPC (Intel SPMD Program Compiler), un langage conçu pour la programmation parallèle haute performance sur les processeurs. ISPC repose sur le modèle de programmation SPMD, dans lequel vous écrivez du code qui ressemble à un programme série standard, mais où, lors de l’exécution, plusieurs instances du programme s’exécutent en parallèle sur le matériel cible. ISPC est largement utilisé dans les moteurs de jeux, les systèmes de rendu et le calcul scientifique, notamment dans les projets Unreal Engine.
ReSharper C++ propose désormais la coloration syntaxique, l’analyse de code, la navigation et l’aide à la programmation pour les fichiers ISPC, offrant ainsi à votre code ISPC la même qualité de prise en charge que celle que vous attendez pour le C++.
Unreal Engine
Performances
Cette version apporte des améliorations majeures en termes de performances lors du démarrage des projets Unreal Engine. ReSharper C++ utilise désormais les informations de projet provenant de UnrealBuildTool pour accélérer l’indexation initiale en analysant uniquement les fichiers inclus dans le modèle de projet Unreal Engine. Combiné à d’autres optimisations, notamment des améliorations de l’indexation multithread, cela se traduit par un gain de vitesse significatif.
D’après les mesures effectuées sur la solution d’exemple Lyra :
- L’indexation initiale du code C++ est jusqu’à 55 % plus rapide.
- Le chargement des caches C++ lors d’un démarrage à chaud est jusqu’à 35 % plus rapide.
Vous pouvez désactiver ce nouveau comportement d’indexation en décochant l’option Index only files in Unreal Engine project model sur la page de paramètres Code Editing | C/C++ | Unreal Engine.
Prise en charge des Blueprints
La prise en charge des Blueprints a également fait l’objet d’une refonte majeure, ce qui se traduit par une réduction significative du temps d’indexation. Sur la solution d’exemple Lyra, l’indexation des Blueprints est jusqu’à 40 % plus rapide, mais le gain de vitesse exact dans votre projet dépend de la structure de vos ressources. ReSharper C++ détecte désormais également les utilisations des balises de gameplay au sein des ressources Blueprint et les affiche dans Code Vision et dans Find usages, vous offrant ainsi une vue d’ensemble complète des emplacements où vos balises de gameplay sont utilisées dans l’ensemble du projet.
Analyse du code
Liaison interne
La nouvelle fonctionnalité d’inspection Entity can have internal linkage détecte les fonctions, variables et classes qui ne sont pas utilisées en dehors de leur unité de traduction. Vous pouvez utiliser les corrections proposées pour marquer ces entités comme static ou les déplacer dans un espace de noms anonyme, ce qui aide le compilateur à optimiser le code et évite les conflits de liaison indésirables.
Initialiseurs désignés dans l’initialisation d’agrégats
ReSharper C++ suggère désormais d’ajouter des désignateurs aux listes d’initialiseurs entre accolades dans l’initialisation d’agrégats. Les initialiseurs désignés, disponibles depuis C++20 et C99, indiquent explicitement à quel membre correspond chaque initialiseur, ce qui améliore la lisibilité du code et réduit le risque d’erreurs en cas de réorganisation des membres. Une action contextuelle correspondante est également disponible et peut être utilisée même lorsque l’inspection est désactivée.
Appels à des fonctions de base redéfinies
Une autre nouvelle inspection détecte les appels qualifiés à des fonctions virtuelles de base qui sont redéfinies dans une classe dérivée. Appeler directement une fonction virtuelle de la classe de base plutôt que via un dispatch virtuel peut être source de bogues subtils, et cette inspection permet de détecter de tels cas.
Attribut [[jetbrains::used_implicitly]].
ReSharper C++ reconnaît désormais l’attribut [[jetbrains::used_implicitly]], qui peut être appliqué à des symboles afin de désactiver les inspections qui suggéreraient autrement de modifier leur signature ou leur liaison. Cela s’avère utile pour les symboles utilisés via la réflexion, la génération de code ou d’autres mécanismes invisibles à l’analyse statique.
Aide au codage
Améliorations de la refactorisation
Deux améliorations apportées à la refactorisation facilitent la restructuration du code :
- L’appel de la fonction Inline Function sur une déclaration de fonction intègre désormais toutes les utilisations de la fonction dans l’ensemble du code, et pas seulement celle située sous le curseur.
- La refactorisation Extract Method est désormais disponible à l’intérieur des corps de lambda, ce qui vous permet d’extraire des parties d’un lambda pour les placer dans une fonction distincte.
Actions contextuelles
De nouvelles actions contextuelles facilitent les tâches quotidiennes :
- Une nouvelle action contextuelle vous permet d’activer ou de désactiver facilement le qualificateur const sur une fonction membre.
- Vous pouvez désormais insérer rapidement une directive #pragma clang diagnostic ignored pour supprimer un diagnostic Clang spécifique sur la ligne actuelle.
- Dans les projets Unreal Engine, vous pouvez désormais copier le chemin d’inclusion du fichier d’en-tête actuellement ouvert à partir du menu Copy Code Reference, ce qui facilite le collage de la directive #include correcte.
Téléchargez ReSharper C++ 2026.2
Vous avez lu gratuitement 3 457 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.