{"id":34278,"date":"2020-04-28T17:32:45","date_gmt":"2020-04-28T16:32:45","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fr\/?p=670"},"modified":"2020-07-01T13:16:09","modified_gmt":"2020-07-01T13:16:09","slug":"resharper-c-2020-1-nouvelles-fonctionnalites-c20-assistance-au-codage-amelioree-prise-en-charge-du-hlsl-et-plus-encore","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/fr\/2020\/04\/28\/resharper-c-2020-1-nouvelles-fonctionnalites-c20-assistance-au-codage-amelioree-prise-en-charge-du-hlsl-et-plus-encore\/","title":{"rendered":"ReSharper C++ 2020.1\u00a0: nouvelles fonctionnalit\u00e9s C++20, assistance au codage am\u00e9lior\u00e9e, prise en charge du HLSL et plus encore"},"content":{"rendered":"Nous avons le plaisir de vous pr\u00e9senter notre premi\u00e8re version majeure de l'ann\u00e9e\u00a0! Depuis le d\u00e9but du programme d\u2019acc\u00e8s anticip\u00e9, nous avons publi\u00e9 une s\u00e9rie d'articles pour partager les am\u00e9liorations et nouvelles fonctionnalit\u00e9s au fur et \u00e0 mesure. Voici maintenant un r\u00e9capitulatif de tout ce que cette nouvelle version vous propose !\r\n\r\n\r\nReSharper C++ 2020.1 suit les derni\u00e8res mises \u00e0 jour de C++20, am\u00e9liore l'assistance au codage et la navigation, et vous aide \u00e0 \u00eatre plus productif avec Unreal Engine 4 et HLSL.\r\n\r\nLisez\u00a0ce qui suit pour plus de d\u00e9tails sur tous changements apport\u00e9s par cette version 2020.1.\r\n\r\nEffectuez une mise \u00e0 jour vers cette version ou demandez un essai gratuit de 30 jours. La toute nouvelle build est disponible sur notre site et dans la Toolbox App.\r\nT\u00c9L\u00c9CHARGER RESHARPER C++ 2020.1\r\n&nbsp;\r\nPrise en charge de C++20\r\nLors de sa r\u00e9union \u00e0 Prague en f\u00e9vrier dernier, le comit\u00e9 ISO C++ a termin\u00e9 ses travaux techniques sur C++20\u00a0, compl\u00e9tant ainsi le travail du comit\u00e9 C++20. ReSharper C++ 2020.1 introduit la prise en charge de plusieurs nouvelles fonctionnalit\u00e9s du dernier standard du langage.\r\n\r\nC++20 am\u00e9liore les d\u00e9clarations using pour permettre l'int\u00e9gration d'\u00e9num\u00e9rateurs sp\u00e9cifiques dans la port\u00e9e locale (voir P1099). La nouvelle syntaxe using enum vous permet d'ajouter tous les \u00e9num\u00e9rateurs de l'\u00e9num\u00e9ration cible et d'omettre les r\u00e9p\u00e9titions de noms. ReSharper C++ 2020.1 ajoute la prise en charge des d\u00e9clarations using enum et une nouvelle refactorisation, Introduce Using Enum, vous aide \u00e0 ajouter des d\u00e9clarations using enum au code existant.\r\n\r\n\r\nPour les concepts de C++20, nous avons ajout\u00e9 la prise en charge de la nouvelle syntaxe pour les espaces r\u00e9serv\u00e9s de type contraint et les mod\u00e8les de fonctions abr\u00e9g\u00e9s (voir P1141). Vous pouvez maintenant contraindre un type auto avec un concept et d\u00e9clarer une fonction mod\u00e8le avec un espace r\u00e9serv\u00e9 auto ou concept auto dans la liste des param\u00e8tres. De plus, nous avons am\u00e9lior\u00e9 les messages d'erreur sur les contraintes non respect\u00e9es pour vous aider \u00e0 comprendre facilement ce qui s'est pass\u00e9 lors de la substitution de mod\u00e8le.\r\n\r\n\r\nReSharper C++ propose un nouveau correctif rapide pour utiliser le mod\u00e8le syntaxique C++20 pour les lambdas (voir P0428) lorsque cela permet de simplifier votre code. Par exemple, vous pouvez maintenant utiliser la syntaxe habituelle de transmission parfaite pour les lambdas sans avoir \u00e0 utiliser decltype sur le param\u00e8tre du lambda :\r\n\r\n\r\nNous pr\u00e9voyons de poursuivre notre travail sur la prise en charge du C++20. En ce moment, nous am\u00e9liorons l'\u00e9valuation des fonctions constexpr et \u00e9tendons la prise en charge de l'op\u00e9rateur de comparaison trilat\u00e9rale \"spaceship\". Alors, restez \u00e0 l'\u00e9coute\u00a0!\r\nUnreal Engine 4\r\nReSharper C++ 2020.1 am\u00e9liore la conformit\u00e9 aux\u00a0standards de codage d'Unreal Engine. Nous avons mis \u00e0 jour les r\u00e8gles de nommage pour g\u00e9rer les variables de console et les cat\u00e9gories de journaux, et l'inspection Use auto est maintenant masqu\u00e9e par d\u00e9faut dans les projets UE4.\r\n\r\nLors du renommage d'une classe ou d'un fichier, la refactorisation Rename met d\u00e9sormais \u00e0 jour les directives Include *.generated.h correspondantes et les fichiers associ\u00e9s avec les pr\u00e9fixes A, F, E, T, S et U.\r\n\r\nLes fichiers Unreal Engine USF sont d\u00e9sormais pris en charge avec leurs chemins d'acc\u00e8s aux fichiers virtuels\u00a0:\r\n\r\n\r\nUne petite am\u00e9lioration qui rend la navigation\u00a0plus agr\u00e9able : vous pouvez d\u00e9sormais naviguer vers des espaces de noms qui contiennent une \u00e9num\u00e9ration dans le style d'Unreal Engine depuis Search Everywhere\/Go to.\r\n\r\nReSharper C++ 2020.1 introduit la prise en charge du GDK SpatialOS, un fork Unreal Engine 4 qui vous aide \u00e0 ex\u00e9cuter et g\u00e9rer des jeux en ligne dans le Cloud\u00a0:\r\n\r\n\r\nEnfin, nous avons fait en sorte que ReSharper C++ 2020.1 soit compatible avec la future version Unreal Engine 4.25. Notez que si vous souhaitez travailler sur un projet UE 4.25 avec une version ant\u00e9rieure de ReSharper C++, vous devez d\u00e9sactiver le param\u00e8tre \u00ab\u00a0Read project properties asynchronously\u00a0\u00bb dans ReSharper | Options | Code Editing | C++ | Performance.\r\nPrise en charge du HLSL\r\nReSharper C++ 2020.1 prend en charge nativement un aspect suppl\u00e9mentaire du d\u00e9veloppement de jeux\u00a0: le High Level Shading Language. Regardez cette br\u00e8ve d\u00e9mo de notre prise en charge du HLSL\u00a0:\r\n\r\n\r\nReSharper C++ met en \u00e9vidence le code HLSL en fonction de votre palette de couleurs par d\u00e9faut et affiche des conseils d'incrustation et des infobulles pour les \u00e9l\u00e9ments de code, contenant des informations de type et de la documentation\u00a0:\r\n\r\n\r\nVous pouvez \u00e9galement rechercher des structs, des fonctions ou des param\u00e8tres dans l'ensemble de votre solution et y acc\u00e9der rapidement, ainsi que des fichiers r\u00e9f\u00e9renc\u00e9s et des biblioth\u00e8ques standard.\r\n\r\nEt pour parfaire l'exp\u00e9rience HLSL, ReSharper C++ fournit des suggestions intelligentes dans les listes de saisie automatique, met en \u00e9vidence la signature compatible avec les param\u00e8tres saisis, ins\u00e8re automatiquement les d\u00e9limiteurs correspondants et plus encore.\r\n\r\n\r\nLa prise en charge du HLSL n'en est qu'\u00e0 ses d\u00e9buts, il existe donc encore quelques limitations. Dans la prochaine version, nous pr\u00e9voyons de nous occuper de la saisie automatique du code pour les fonctions intrins\u00e8ques int\u00e9gr\u00e9es et d'am\u00e9liorer la recherche et la navigation pour les tampons de constantes et de textures.\r\nAnalyse de code et correctifs rapides\r\nLes nouvelles inspections d\u00e9tectent davantage de cas pour lesquels static_cast est pr\u00e9f\u00e9rable et proposent les correctifs rapides correspondants pour vous aider \u00e0 mettre \u00e0 jour votre code\u00a0:\r\n\r\n\treinterpret_cast utilis\u00e9 au lieu d'un static_cast lors d'une conversion vers void*.\r\n\tCast de style fonctionnel utilis\u00e9 \u00e0 la place d'un cast C++.\r\n\r\n\r\nDe plus, il y a deux nouvelles inspections avec des correctifs rapides pour les expressions lambda\u00a0:\r\n\r\n\tUnused lambda capture\u00a0: si une variable locale est captur\u00e9e par un lambda mais n'est pas utilis\u00e9e \u00e0 l'int\u00e9rieur du corps du lambda, ReSharper C++ vous en informe et vous sugg\u00e8re de supprimer la capture non utilis\u00e9e.\r\n\tLambda can be rewritten to use explicit template parameters : ReSharper C++ vous sugg\u00e8re d'utiliser le nouveau mod\u00e8le de syntaxe \u0421++20 pour les lambdas afin d'am\u00e9liorer la lisibilit\u00e9 du code.\r\n\r\n\r\nEt deux autres fonctionnalit\u00e9s vous aident \u00e0 adopter l'attribut maybe_unused de C++ 17\u00a0:\r\n\r\n\tUne action contextuelle pour remplacer les annotations UNREFERENCED_PARAMETER et Q_UNUSED par [[maybe_unused]].\r\n\tUn correctif rapide pour ajouter [[maybe_unused]] \u00e0 un param\u00e8tre ou une variable inutilis\u00e9(e).\r\n\r\n\r\nNous avons \u00e9galement mis \u00e0 jour le binaire Clang-Tidy int\u00e9gr\u00e9 vers Clang 10, ce qui ajoute plus de 70 nouveaux contr\u00f4les et diagnostics du compilateur.\r\nAssistance au codage\r\nDeux fonctionnalit\u00e9s bien connues de ReSharper pour .NET sont maintenant disponibles dans ReSharper C++\u00a0: Rearrange Code et Complete Statement.\r\n\r\nRearrange Code d\u00e9place rapidement les \u00e9l\u00e9ments de code, \u00e9largit ou r\u00e9duit la port\u00e9e actuelle, et plus encore. Pour r\u00e9organiser le code, appuyez sur Ctrl+Maj+Alt sur l'\u00e9l\u00e9ment de code ou la s\u00e9lection que vous voulez d\u00e9placer, puis sur n'importe quelle touche fl\u00e9ch\u00e9e\u00a0:\r\n\r\n\tLes commandes pour d\u00e9placer vers le haut et vers le bas r\u00e9organisent les \u00e9l\u00e9ments d'une port\u00e9e sp\u00e9cifique vers le haut et vers le bas par rapport aux autres \u00e9l\u00e9ments de cette port\u00e9e, ou entre des port\u00e9es voisines.\r\n\r\n\tLes commandes pour d\u00e9placer vers la gauche et vers la droite permettent de r\u00e9organiser des \u00e9l\u00e9ments qui sont normalement \u00e9crits sur une seule ligne et peuvent d\u00e9placer une d\u00e9claration dans la r\u00e9gion qui la suit directement ou en dehors de la r\u00e9gion actuelle.\r\n\r\n\r\nComplete Statement ins\u00e8re les \u00e9l\u00e9ments syntaxiques n\u00e9cessaires pour terminer la d\u00e9claration en cours et place le caret au bon endroit. Utilisez le raccourci Ctrl+Maj+Entr\u00e9e au lieu d'avoir \u00e0 effectuer de nombreuses petites actions\u00a0:\r\n\r\n\r\nLa nouvelle action d'\u00e9diteur, Document, li\u00e9e \u00e0 Ctrl+\/ dans la keymap Visual Studio, vous permet de g\u00e9n\u00e9rer rapidement un commentaire de documentation pour l'\u00e9l\u00e9ment de code \u00e0 proximit\u00e9, au lieu d'utiliser l'action contextuelle\u00a0:\r\n\r\n\r\nLa liste de la saisie semi-automatique propose d\u00e9sormais les attributs C++ standard, les noms de libell\u00e9s pour l'instruction goto, le nouveau mod\u00e8le postfix std::forward et des arguments pour les appels \u00e0 une fonction de base. De plus, la saisie semi-automatique du code fonctionne d\u00e9sormais dans les d\u00e9finitions de macro.\r\n\r\n\r\nLes indications de param\u00e8tres et de noms de types sont devenues un aspect inh\u00e9rent \u00e0 l'exp\u00e9rience de d\u00e9veloppement avec ReSharper C++ (consultez notre article sur toutes les indications disponibles). Et maintenant, elles sont \u00e9galement disponibles dans le code d\u00e9pendant\u00a0:\r\n\r\n\r\nAussi, gr\u00e2ce \u00e0 une aide \u00e0 la frappe am\u00e9lior\u00e9e, vous pouvez d\u00e9sormais s\u00e9lectionner n'importe quel morceau de code et saisir une parenth\u00e8se, une accolade, un crochet ou des guillemets pour entourer la s\u00e9lection des caract\u00e8res correspondants.\r\nStyle de code et mise en forme\r\nEn plus des nombreux correctifs, le moteur de mise en forme de ReSharper C++ 2020.1 prend pleinement en charge la syntaxe des concepts C++20. Nous avons \u00e9galement ajout\u00e9 plusieurs nouvelles options de mise en forme, notamment une option pour la double indentation des membres de classe et une option pour contr\u00f4ler les espaces avant les parenth\u00e8ses dans les param\u00e8tres lambda.\r\n\r\nDans ReSharper C++ 2019.3, nous avions introduit la prise en charge du tri des directives #include. Dans cette version, nous avons ajout\u00e9 la possibilit\u00e9 d'importer les param\u00e8tres de tri \u00e0 partir d'un fichier .clang-format. Assurez-vous que Read code style from . clang-format style est coch\u00e9 sur la page des param\u00e8tres de ReSharper | Options | Code Editing | General Formatter Style, et ReSharper C++ utilisera les param\u00e8tres de IncludeBlocks, IncludeCategories, IncludeIsMainRegex et SortIncludes de votre fichier . clang-format pour trier les directives #include de la m\u00eame mani\u00e8re que le clang-format.\r\n\r\nDe plus, ReSharper C++ 2020.1 fournit deux param\u00e8tres suppl\u00e9mentaires pour une meilleure configurabilit\u00e9 du comportement de tri des #includes\u00a0:\r\n\r\n\tCase-sensitive sort\u00a0: utilis\u00e9 pour placer toutes les directives include commen\u00e7ant par des lettres majuscules avant celles commen\u00e7ant par des lettres minuscules.\r\n\tGroup headers by directory : utilis\u00e9 pour cr\u00e9er des groupes d'en-t\u00eates en fonction de leur chemin d'acc\u00e8s au fichier.\r\n\r\n\r\nRefactorisations des enums\r\nNous avons ajout\u00e9 deux nouvelles refactorisations pour vous aider \u00e0 moderniser votre utilisation de enum conform\u00e9ment aux changements du langage li\u00e9s aux standards C++11 et C++20.\r\n\r\nLa refactorisation Convert to Scoped Enum convertit une d\u00e9claration d'\u00e9num\u00e9ration de type C en une \u00e9num\u00e9ration de type C++11\u00a0:\r\n\r\nCette refactorisation permettra de mettre \u00e0 jour toutes les d\u00e9clarations d'\u00e9num\u00e9ration et de qualifier les r\u00e9f\u00e9rences des \u00e9num\u00e9rateurs. De plus, si une valeur de type \u00e9num\u00e9ration est implicitement cast\u00e9e vers un type int\u00e9gral, ReSharper C++ vous en avertira et ins\u00e9rera automatiquement un static_cast au type correspondant.\r\n\r\nLa refactorisation Introduce Using Enum ajoute une d\u00e9claration C++20 using enum \u00e0 la port\u00e9e actuelle et raccourcit les r\u00e9f\u00e9rences de l'\u00e9num\u00e9rateur\u00a0:\r\n\r\nAm\u00e9liorations de la navigation\r\nDans ReSharper C++ 2020.1, vous pouvez naviguer vers la d\u00e9claration de tout symbole \u00e0 partir d'un mot correspondant \u00e0 l'int\u00e9rieur d'un commentaire. Il suffit de cliquer sur le nom tout en maintenant la touche Ctrl enfonc\u00e9e ou de cliquer sur le nom avec le bouton de d\u00e9filement de la souris. La navigation au moyen du bouton de d\u00e9filement est \u00e9galement une nouveaut\u00e9.\r\n\r\n\r\nSearch Everywhere\/Go to inclut deux nouvelles cat\u00e9gories de filtres\u00a0: les concepts et les espaces de noms. Saisissez \u00ab\u00a0\/\u00a0\u00bb dans la zone de recherche pour voir tous les filtres disponibles.\r\n\r\n\r\nLa fen\u00eatre File Structure fournit d\u00e9sormais plus de d\u00e9tails pour une navigation rapide dans les fichiers gr\u00e2ce aux ic\u00f4nes suivantes\u00a0:\r\n\r\n\tAccessibilit\u00e9 des membres de classe.\r\n\tDes sp\u00e9cificateurs virtuels, statiques et purs.\r\n\tInformations sur l'h\u00e9ritage pour les membres de la classe lorsqu'une fonction remplace, impl\u00e9mente ou masque une fonction de base.\r\n\r\n\r\nTests unitaires\r\nLe g\u00e9n\u00e9rateur de m\u00e9thodes Mock prend d\u00e9sormais en charge la macro MOCK_METHOD introduite dans GTest 1.10. La famille des macros MOCK_(const_)METHODn() utilis\u00e9es dans les pr\u00e9c\u00e9dentes versions de GTest est d\u00e9sormais obsol\u00e8te.\r\n\r\n\r\nLe testeur dans ReSharper C++ utilise des canaux nomm\u00e9s pour communiquer avec les processus de tests enfants afin de lire le flux sortie n'ayant pas de tampon. Cependant, dans certains environnements, les canaux nomm\u00e9es peuvent pr\u00e9senter des erreurs de comportement en raison des logiciels de s\u00e9curit\u00e9. Avec le nouveau param\u00e8tre Use named pipes to communicate with child processes, vous pouvez maintenant d\u00e9sactiver cette option et utiliser des fichiers temporaires \u00e0 la place.\r\n\r\n\r\nLa liste compl\u00e8te des nouvelles fonctionnalit\u00e9s et corrections de bugs de cette version, disponible dans notre outil de suivi, concerne plus de 230 tickets. N'h\u00e9sitez pas \u00e0 faire une demande de nouvelle fonctionnalit\u00e9 ou \u00e0 voter pour une demande existante. Vos commentaires sont toujours les bienvenus\u00a0!\r\n\r\nDe plus, d'autres changements proviennent de la plateforme ReSharper, alors visitez sa page Nouveaut\u00e9s pour en savoir plus.\r\n\r\nT\u00e9l\u00e9chargez ReSharper C++ 2020.1 et dites-nous ce que vous en pensez\u00a0!\r\nT\u00c9L\u00c9CHARGER RESHARPER C++ 2020.1\r\nL'\u00c9quipe ReSharper C++\r\nJetBrains\r\nThe Drive to Develop\r\n\r\nAuteur de l'article original en anglais :\u00a0Elvira Mustafina\r\n\r\nL'article ReSharper C++ 2020.1\u00a0: nouvelles fonctionnalit\u00e9s C++20, assistance au codage am\u00e9lior\u00e9e, prise en charge du HLSL et plus encore a \u00e9t\u00e9 publi\u00e9 pour la premi\u00e8re fois sur le blog ReSharper C++.\r\n\r\n&nbsp;","protected":false},"excerpt":{"rendered":"Nous avons le plaisir de vous pr\u00e9senter notre premi\u00e8re version majeure de l'ann\u00e9e\u00a0! Depuis le d\u00e9but du programme d\u2019acc\u00e8s anticip\u00e9, nous avons publi\u00e9 une s\u00e9rie d'articles pour partager les am\u00e9lioration","protected":false},"author":{"name":"Delphine Massenhove","link":"https:\/\/blog.jetbrains.com\/fr\/author\/delphine-massenhovejetbrains-com"},"featured_media":34279,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[907],"tags":[3606,2095],"cross-post-tag":[],"acf":[],"featured_image":"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/04\/fr-Resharper-C-2020.1.png","_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34278"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=34278"}],"version-history":[{"count":1,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34278\/revisions"}],"predecessor-version":[{"id":52597,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34278\/revisions\/52597"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/34279"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=34278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=34278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=34278"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=34278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}