{"id":34192,"date":"2019-12-11T17:19:56","date_gmt":"2019-12-11T16:19:56","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fr\/?p=407"},"modified":"2019-12-11T17:19:56","modified_gmt":"2019-12-11T16:19:56","slug":"clion-2019-3-nouvelle-version-axee-sur-la-performance-et-la-mise-en-place-dameliorations-tres-attendues","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/fr\/2019\/12\/11\/clion-2019-3-nouvelle-version-axee-sur-la-performance-et-la-mise-en-place-dameliorations-tres-attendues\/","title":{"rendered":"CLion 2019.3 : nouvelle version ax\u00e9e sur la performance et la mise en place d&#8217;am\u00e9liorations tr\u00e8s attendues"},"content":{"rendered":"Excellente nouvelle ! CLion 2019.3, la derni\u00e8re mise \u00e0 jour majeure de cette ann\u00e9e, est maintenant disponible !\r\n\r\nL'am\u00e9lioration des performances de l'EDI et la correction des bugs sont des priorit\u00e9s constantes pour notre \u00e9quipe. Dans cette mise jour, nous avons principalement accru les performances dans plusieurs domaines, \u00e9limin\u00e9 des blocages de l'interface (la plupart d'entre eux sont maintenant r\u00e9solus!) et am\u00e9lior\u00e9 l'\u00e9diteur et les int\u00e9grations pour nos utilisateurs !\r\n\r\n\r\n\r\nPour obtenir cette mise \u00e0 jour, vous pouvez utiliser l'application Toolbox, un package snap (sous Ubuntu), notre site web ou le correctif mis \u00e0 jour du dernier build de la version 2019.2.\r\nT\u00c9L\u00c9CHARGER CLION 2019.3\r\nVous trouverez ci-dessous la liste des principales am\u00e9liorations de cette version. Pour une pr\u00e9sentation plus d\u00e9taill\u00e9e, poursuivez votre lecture :\r\n\r\n\tPerformances de l'EDI\r\n\tMises \u00e0 jour du d\u00e9bogueur\r\n\tPlus d'opportunit\u00e9s dans CMake\r\n\tBasculement entre les fichiers Header\/Source\r\n\tCouverture du code\r\n\tConcepts de C++20\r\n\r\nVous pouvez \u00e9galement obtenir une vue d\u2019ensemble des nouveaut\u00e9s avec cette vid\u00e9o de Phil Nash :\r\n\r\n\r\nPerformances de l'EDI\r\nDurant ce cycle de mise \u00e0 jour nous avons particuli\u00e8rement travaill\u00e9 sur l'am\u00e9lioration des performances de la plateforme IntelliJ et de CLion.\r\n\r\nConcernant la plateforme IntelliJ, nous avons impl\u00e9ment\u00e9 plusieurs changements architecturaux significatifs afin d'acc\u00e9l\u00e9rer le d\u00e9marrage de l'EDI. Ces modifications incluent notamment :\r\n\r\n\tParall\u00e9lisation d'une partie des processus qui s'ex\u00e9cutaient auparavant de fa\u00e7on s\u00e9quentielle.\r\n\tR\u00e9organisation des classes de mani\u00e8re \u00e0 acc\u00e9l\u00e9rer le chargement de la classe initiale.\r\n\tOptimisation du chargement des polices sous macOS.\r\n\r\nConcernant CLion, nous avons concentr\u00e9 nos efforts sur l\u2019\u00e9limination des blocages de l'interface. Si nous ne pouvons pas garantir une absence totale de blocages (notamment pour les projets C++ les plus complexes), la plupart ont \u00e9t\u00e9 \u00e9limin\u00e9s. Et nous comptons poursuivre nos efforts dans ce sens pour les prochaines versions ! D'autre part, nous avons optimis\u00e9 l'\u00e9tape Building\/Updating symbols en remaniant une partie des algorithmes sous-jacents. Selon le projet, le CPU et l'environnement, vous pouvez b\u00e9n\u00e9ficier d'un gain de temps de 10 \u00e0 50 % selon nos calculs.\r\n\r\nNotre \u00e9quipe a \u00e9galement travaill\u00e9 \u00e0 l'am\u00e9lioration des performances en remaniant plusieurs des fonctionnalit\u00e9s principales de l'EDI. Tout d'abord, la refactorisation Rename inclut d\u00e9sormais un mode vous demandant d'abord si vous souhaitez renommer les utilisations non li\u00e9es au code (telles que les occurrences dans les commentaires et les litt\u00e9raux de cha\u00eene) avant de lancer une recherche pour toutes les occurrences. Pour ce faire vous devez d\u00e9sactiver le mode in-place de Rename (Settings\/Preferences | Editor | General | Refactorings | Enable in-place mode).\r\n\r\nQuelle est d\u2019apr\u00e8s vous la fonctionnalit\u00e9 la plus utilis\u00e9e dans tout EDI ou \u00e9diteur de texte intelligent ? Vous l'avez s\u00fbrement devin\u00e9, il s'agit de la saisie automatique du code ! Afin d'acc\u00e9l\u00e9rer la saisie dans CLion, nous avons impl\u00e9ment\u00e9 un fournisseur de saisie automatique suppl\u00e9mentaire. Il est bas\u00e9 sur Clangd et donne des r\u00e9sultats plus rapidement pour les projets avec LLVM, Boost, Qt ou Eigen :\r\n\r\nEn savoir plus sur les r\u00e9sultats.\r\nMises \u00e0 jour du d\u00e9bogueur\r\nCLion s'int\u00e8gre avec les d\u00e9bogueurs GDB et LLDB, et dans cette version nous avons travaill\u00e9 sur cette int\u00e9gration pour en am\u00e9liorer la convivialit\u00e9 et la qualit\u00e9.\r\n\r\nPour LLDB, nous fournissons la version v9.0 et avons totalement remani\u00e9 les pretty printers. Par cons\u00e9quent, les conteneurs standards sont d\u00e9sormais visualis\u00e9s de fa\u00e7on plus pr\u00e9cise. Nous avons aussi am\u00e9lior\u00e9 la prise en charge de libc++ sous macOS par rapport \u00e0 libstdcxx (dites-nous si vous utilisez cette derni\u00e8re version sous macOS et sp\u00e9cifiez la cha\u00eene d'outils utilis\u00e9e, de fa\u00e7on \u00e0 nous permettre d'y apporter des am\u00e9liorations). Sous Ubuntu, la seule diff\u00e9rence r\u00e9side dans les conteneurs associatifs non ordonn\u00e9s. Vous trouverez une comparaison d\u00e9taill\u00e9e ici.\r\n\r\nPour GDB et LLDB, CLion prend d\u00e9sormais en charge la lecture de .gdbinit\/.lldbinit depuis la racine du projet (auparavant CLion ne pouvait lire ces fichiers que dans le r\u00e9pertoire d'accueil de l'utilisateur). Cela vous permet de r\u00e9gler le comportement du d\u00e9bogueur sans affecter les autres projets sur votre machine. Pour activer ce comportement, vous devez autoriser explicitement .gdbinit\/.lldbinit dans votre r\u00e9pertoire home :\r\n\r\n\tPour GDB :\r\n\r\n\tAutorisation gobale :\r\nset auto-load local-gdbinit on\r\nadd-auto-load-safe-path \/\r\n\tAutorisation par projet :\r\nset auto-load local-gdbinit on\r\nadd-auto-load-safe-path C:\\work\\myproject\\.gdbinit\r\n\r\n\r\n\tPour LLDB : settings set target.load-cwd-lldbinit true\r\n\r\nL'un des cas d'utilisation type consiste \u00e0 fournir des pretty printers personnalis\u00e9s pour certains types de donn\u00e9es dans votre projet :\r\n\r\n\r\nEt enfin, une nouvelle configuration pour serveur GDB distant a \u00e9t\u00e9 ajout\u00e9e pour rendre possible le d\u00e9bogage \u00e0 distance via ssh. L'avantage principal par rapport \u00e0 la configuration pr\u00e9c\u00e9dente de d\u00e9bogage GDB \u00e0 distance est que CLion charge l'ex\u00e9cutable sur l'h\u00f4te distant et y lance automatiquement votre programme sur le gdbserver. Vous trouverez plus de d\u00e9tails \u00e0 ce sujet dans notre web help. Vous disposez d\u00e9sormais de 3 options pour vous connecter \u00e0 distance lorsque CLion est ex\u00e9cut\u00e9 localement\u2013 le mode Full Remote (en cas de cr\u00e9ation de build, exploitation et ex\u00e9cution \u00e0 distance) et 2 options pour le d\u00e9bogage \u00e0 distance (lorsque seul le d\u00e9bogage se fait sur un h\u00f4te distant).\r\nPlus d'opportunit\u00e9s dans CMake\r\nCMake est connu comme \u00e9tant le mod\u00e8le de projet de premi\u00e8re classe de CLion. De nombreux utilisateurs de CLion lui font confiance et certains ont m\u00eame converti leurs projets en CMake pour pouvoir travailler dans CLion. Dans cette version nous avons r\u00e9solu deux des principales limitations de l'int\u00e9gration de CMake dans CLion.\r\n\r\nNous nous sommes naturellement appuy\u00e9s sur le g\u00e9n\u00e9rateur Ninja ! De plus, il est d\u00e9sormais possible d'utiliser tout g\u00e9n\u00e9rateur disponible dans CMake. Il suffit de le transf\u00e9rer dans les options de CMake, dans les param\u00e8tres de CMake Profiles :\r\n\r\nL'impl\u00e9mentation repose sur l'API de fichier CMake, disponible lorsque CMake 3.15 ou une version plus r\u00e9cente est utilis\u00e9e.\r\nNous remercions les nombreux utilisateurs EAP qui ont test\u00e9 cette fonctionnalit\u00e9 d\u00e8s sa mise \u00e0 disposition. Leurs retours nous ont permis de r\u00e9soudre de nombreux incidents avant la publication officielle.\r\n\r\nNous avons \u00e9galement voulu rendre possible la configuration globale de certains param\u00e8tres CMake pour les nouveaux projet cr\u00e9\u00e9s dans CLion. Par exemple, un mod\u00e8le pour le chemin de g\u00e9n\u00e9ration ou pour certains param\u00e8tres d'environnement. Dor\u00e9navant vous pouvez le faire avec les param\u00e8tres par d\u00e9faut de CMake ! Utilisez File | Other Settings | Preferences\/Settings for New Projects\u2026\r\n\r\nEt enfin, cette nouvelle version r\u00e9sout un probl\u00e8me g\u00eanant : si certaines configurations CMake sont invalides et ne se rechargent pas, CLion n'\u00e9choue plus et recharge toutes les configurations valides possibles. Le cas d'usage typique pour cela : lorsque votre configuration \u00e0 distance n'est pas connect\u00e9e et que vous voulez recharger plusieurs configurations locales. Auparavant, le processus de rechargement \u00e9chouait, mais d\u00e9sormais les configurations locales sont recharg\u00e9es avec succ\u00e8s.\r\nBasculement entre les fichiers Header\/Source\r\nPour basculer entre les fichiers header et source, CLion offre d\u00e9sormais une action plus efficace et pr\u00e9cise bas\u00e9e sur une approche heuristique : Go to Header\/Source. Utilisez-la \u00e0 la place de l'action Go to Related Symbol plus g\u00e9n\u00e9rale de la plateforme IntelliJ.\r\n\r\nLa nouvelle action tente de localiser le fichier de destination unique et s'il \u00e9choue en 500 ms, elle affiche une fen\u00eatre contextuelle interactive dans laquelle les nouveaux \u00e9l\u00e9ments sont ajout\u00e9s (et surtout calcul\u00e9s en arri\u00e8re-plan, afin d'\u00e9viter le blocage de l'interface !). Ensuite, vous pouvez s\u00e9lectionner la destination de la navigation.\r\n\r\nLa recherche Go to Header\/Source repose sur plusieurs heuristiques, par exemple, le fichier s\u00e9lectionn\u00e9 le plus r\u00e9cemment est toujours en t\u00eate de liste et le fichier ayant un nom concordant dans le m\u00eame r\u00e9pertoire vient ensuite.\r\n\r\nLa recherche est actuellement limit\u00e9e aux vues Includers\/Includees directes, pour \u00e9viter les interf\u00e9rences de symboles identiques provenant de cibles diff\u00e9rentes.\r\nCouverture du code\r\nSi cette version porte essentiellement sur la r\u00e9solution de bugs, la dette technique et les performances, nous avons toutefois ajout\u00e9 plusieurs nouvelles fonctionnalit\u00e9s. La couverture du code faisant l'objet de nombreuses demandes dans note syst\u00e8me de suivi des tickets, nous avons ajout\u00e9 l'int\u00e9gration avec les outils llvm-cov\/gcov.\r\n\r\nVous pouvez \u00e9galement ex\u00e9cuter des tests unitaires et des configurations r\u00e9guli\u00e8res avec Coverage, mais il ne faut pas oublier de transf\u00e9rer les options sp\u00e9ciales de compilation de couverture. Cela doit se faire manuellement car CLion ne modifie pas automatiquement vos fichiers CMake et les options de compilation.\r\n\r\nLes r\u00e9sultats des mesures peuvent \u00eatre v\u00e9rifi\u00e9s dans une fen\u00eatre d'outils distincte de Coverage ou sont accessibles directement dans l'\u00e9diteur \u2013 la couverture est repr\u00e9sent\u00e9e par diff\u00e9rentes couleurs dans la goutti\u00e8re de gauche.\r\n\r\nVous trouverez plus de d\u00e9tails sur ce point dans notre webhelp.\r\nConcepts de C++20\r\nAu cours des deux derniers cycles de publication, nous avons exp\u00e9riment\u00e9 notre moteur de langage bas\u00e9 sur Clangd. L'id\u00e9e \u00e9tait de fusionner une autre branche exp\u00e9rimentale \u2013 la branche clang de Saar Raz avec prise en charge de Concepts \u2013 et d'y ajouter quelques fonctionnalit\u00e9s in\u00e9dites. Nous avons discut\u00e9 de cette id\u00e9e pour la premi\u00e8re fois lorsque nous avons rencontr\u00e9 Saar \u00e0 la conf\u00e9rence Core C++ de Tel Aviv, en mai 2019, et d\u00e9sormais, avec CLion 2019.3, nous sommes pr\u00eats \u00e0 appliquer les r\u00e9sultats de cette collaboration.\r\n\r\nDans CLion, le moteur bas\u00e9 sur Clangd permet d\u00e9sormais d'analyser et de mettre en \u00e9vidence les concepts C++20 correctement. Il y a \u00e9galement quelques v\u00e9rifications de code provenant de Clang, et l'inspection Unused concept.\r\n\r\nMais le travail le plus important a port\u00e9 sur la saisie automatique du code, car CLion peut d\u00e9sormais compl\u00e9ter les param\u00e8tres de type de mod\u00e8le qui sont contraints, ainsi que les types contraints par std::is_base_of&lt;MyBase, T&gt;, std::is_same&lt;Other, T&gt; and same_as&lt;T, U&gt;:\r\n\r\nIl prend \u00e9galement en charge la refactorisation Rename, ainsi que les actions de navigation Go to Definition et Find Usages. Vous trouverez des exemples et des instructions d'activation de la prise en charge des concepts de C++20 dans le compilateur, dans notre billet de blog d\u00e9di\u00e9.\r\n\r\nNous tenons \u00e0 remercier Saar Raz pour son travail remarquable sur Clang et sa collaboration productive avec notre \u00e9quipe !\r\nAutres correctifs et am\u00e9liorations\r\nLe correcteur orthographique fait partie int\u00e9grante de l'EDI et vous permet de vous assurer que vos commentaires, litt\u00e9raux de cha\u00eene et documentation soient corrects et lisibles. CLion 2019.3 permet la correction orthographique des fichiers CMake et des commentaires Doxygen :\r\n\r\nEn plus de WSL, CLion prend d\u00e9sormais en charge WSL2. Le processus de configuration de l'EDI n'a pas chang\u00e9, toutefois il y a quelques diff\u00e9rences au niveau de l'exp\u00e9rience utilisateur entre ces deux sous-syst\u00e8mes.\r\n\r\nLa nouvelle inspection de virtual functions called from constructors or destructors a \u00e9t\u00e9 ajout\u00e9e pour identifier les situations dans lesquelles les fonctions virtuelles peuvent avoir acc\u00e8s \u00e0 des ressources qui ne sont pas encore initialis\u00e9es ou ont d\u00e9j\u00e0 \u00e9t\u00e9 d\u00e9truites :\r\n\r\n\r\nLes r\u00e8gles de formatage et de nommage de Microsoft ont \u00e9t\u00e9 ajout\u00e9es sous forme d'options de style de code pr\u00e9d\u00e9finies, \u00e9largissant la liste comprenant les styles Google, LLVM, Qt, GNU, Stroustrup et autres.\r\n\r\nDans la mesure o\u00f9 CLion repose sur la plateforme IntelliJ, des am\u00e9liorations ont \u00e9galement \u00e9t\u00e9 apport\u00e9es \u00e0 VCS et des dizaines de probl\u00e8mes li\u00e9s \u00e0 l'interface ont \u00e9t\u00e9 r\u00e9solus. Pour ceux d'entre vous qui utilisent CLion en tant qu'EDI Rust, nous avons le plaisir de vous informer que le plugin Rust d'IntelliJ a fait l'objet d'une mise \u00e0 jour importante (nous allons d'ailleurs y consacrer un article de blog, donc restez \u00e0 l'\u00e9coute !).\r\n\r\nC'est tout pour le moment ! Nous esp\u00e9rons que la pr\u00e9sentation de ces nouveaut\u00e9s vous a donne envie d'essayer la nouvelle version ! N'h\u00e9sitez pas \u00e0 nous faire part de vos commentaires !\r\nT\u00c9L\u00c9CHARGER CLION 2019.3\r\nL'\u00e9quipe CLion\r\nJetBrains\r\nThe Drive to Develop\r\n\r\nAuteur de l'article original en anglais :\u00a0Anastasia Kazakova","protected":false},"excerpt":{"rendered":"Excellente nouvelle ! CLion 2019.3, la derni\u00e8re mise \u00e0 jour majeure de cette ann\u00e9e, est maintenant disponible !L'am\u00e9lioration des performances de l'EDI et la correction des bugs sont des priorit\u00e9s","protected":false},"author":{"name":"Delphine Massenhove","link":"https:\/\/blog.jetbrains.com\/fr\/author\/delphine-massenhovejetbrains-com"},"featured_media":34193,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[907],"tags":[5651,5647,477],"cross-post-tag":[],"acf":[],"featured_image":"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/12\/fr-blog@2x.png","_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34192"}],"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=34192"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34192\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/34193"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=34192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=34192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=34192"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=34192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}