{"id":34146,"date":"2019-04-08T09:51:57","date_gmt":"2019-04-08T08:51:57","guid":{"rendered":"https:\/\/blog.jetbrains.com\/fr\/?p=283"},"modified":"2019-04-08T09:51:57","modified_gmt":"2019-04-08T08:51:57","slug":"clion-2019-1-est-disponible-avec-le-developpement-embarque-clangformat-une-vue-de-la-memoire-linjection-de-langages-des-themes-personnalises-et-bien-plus-encore","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/fr\/2019\/04\/08\/clion-2019-1-est-disponible-avec-le-developpement-embarque-clangformat-une-vue-de-la-memoire-linjection-de-langages-des-themes-personnalises-et-bien-plus-encore\/","title":{"rendered":"CLion 2019.1 est disponible avec le d\u00e9veloppement embarqu\u00e9, ClangFormat, une vue de la m\u00e9moire, l&#8217;injection de langages, des th\u00e8mes personnalis\u00e9s et bien plus encore"},"content":{"rendered":"Nous avons d'excellentes nouvelles ! Nous avons r\u00e9alis\u00e9 la premi\u00e8re mise \u00e0 jour majeure de CLion cette ann\u00e9e\u00a0!\r\n\r\nPour proc\u00e9der imm\u00e9diatement \u00e0 la mise \u00e0 jour, utilisez l'application Toolbox, un package snap (sous Ubuntu), notre site Web ou un correctif de la derni\u00e8re build de 2018.3. N'attendez plus\u00a0! \r\n\r\n\r\nComme annonc\u00e9 plus t\u00f4t, les points sur lesquels nous nous concentrons cette ann\u00e9e sont les performances de l'EDI, la g\u00e9n\u00e9ralisation du recours \u00e0 Clangd et le d\u00e9veloppement embarqu\u00e9. Cette mise \u00e0 jour a permis de progresser dans les trois domaines\u00a0:\r\n\r\n\tClangd g\u00e8re d\u00e9sormais le surlignage de code, fournit des messages d'erreur plus d\u00e9taill\u00e9s et ex\u00e9cute de nouvelles inspections.\r\n\tLe moteur de langage de CLion a \u00e9t\u00e9 am\u00e9lior\u00e9, avec notamment de meilleures performances \u00e0 tous les niveaux de l'EDI et des refactorisations plus pr\u00e9cises.\r\n\tNous avons pris plusieurs mesures pour vous aider \u00e0 g\u00e9rer efficacement le d\u00e9veloppement embarqu\u00e9 dans CLion.\r\n\tAdaptez CLion \u00e0 votre style de codage\u00a0: ClangFormat, conventions de nommage C\/C++ et style des header guards.\r\n\tDes cibles de build ind\u00e9pendantes du mod\u00e8le de projet et des configurations d'ex\u00e9cution\/d\u00e9bogage sont d\u00e9sormais disponibles et particuli\u00e8rement utiles pour les projets de base de donn\u00e9es de compilation.\r\n\tPrincipales am\u00e9liorations du d\u00e9bogueur\u00a0:\r\n\r\n\tVue de la m\u00e9moire\r\n\tVue Disassembly pour LLDB\r\n\tMasquage des variables lors de l'ex\u00e9cution \u00e9tape par \u00e9tape\r\n\r\n\r\n\tPossibilit\u00e9 d'injecter des langages.\r\n\t\u00c9gayez votre EDI avec des th\u00e8mes de couleur personnalis\u00e9s\u00a0!\r\n\tLe plug-in Rust a \u00e9t\u00e9 mis \u00e0 jour.\r\n\tParmi les autres am\u00e9liorations, citons la toute nouvelle fen\u00eatre contextuelle Recent Locations, une am\u00e9lioration pour les programmeurs de plugin, et bien plus encore.\r\n\r\nPoursuivez votre lecture pour avoir plus de d\u00e9tails et regardez cette courte vid\u00e9o de pr\u00e9sentation des nouveaut\u00e9s r\u00e9alis\u00e9e par Phil Nash\u00a0:\r\n\r\n\r\nNous vous invitons \u00e0 t\u00e9l\u00e9charger la version d'essai gratuite sur 30\u00a0jours pour \u00e9valuer toutes ces nouvelles fonctionnalit\u00e9s.\r\nT\u00c9L\u00c9CHARGER CLION 2019.1\r\n&nbsp;\r\nInt\u00e9gration \u00e9largie avec le moteur de langage bas\u00e9 sur Clangd\r\nNotre objectif d'int\u00e9gration plus large avec Clangd est toujours d'actualit\u00e9 et nous avons donc concentr\u00e9 nos efforts sur le d\u00e9veloppement de notre moteur de langage compl\u00e9mentaire bas\u00e9 sur Clangd. Partout o\u00f9 cela \u00e9tait possible, que ce soit en termes de fonctionnalit\u00e9s ou de performances, nous avons transf\u00e9r\u00e9 des actions dans ce moteur, tout en laissant la possibilit\u00e9 (pour l'instant) d'utiliser le moteur de CLion pour ces actions.\r\n\r\nDu point de vue de l'utilisateur, nous constatons que cela rend l'\u00e9diteur plus r\u00e9actif. Nous avons \u00e9galement pouss\u00e9 plus loin l'int\u00e9gration de Clangd en l'utilisant pour identifier les zones qui n\u00e9cessitent des correctifs rapides. Cela signifie que le moteur de langage bas\u00e9 sur Clangd permet non seulement d'identifier les violations potentielles du code et de renvoyer une erreur ou un avertissement, mais \u00e9galement de pr\u00e9ciser l'emplacement n\u00e9cessitant un correctif rapide. Remarque\u00a0: actuellement le correctif rapide est fourni par CLion.\r\n\r\n\r\nCette deuxi\u00e8me \u00e9tape pr\u00e9sentait toutefois quelques inconv\u00e9nients et, par cons\u00e9quent, quelques correctifs rapides ont \u00e9t\u00e9 retir\u00e9s temporairement (CPP-15243).\r\n\r\nEntre autres choses, le module d'annotation d'erreurs a \u00e9t\u00e9 am\u00e9lior\u00e9 et peut d\u00e9sormais renvoyer un message d'erreur plus d\u00e9taill\u00e9 provenant de Clang. Cela s'av\u00e8re particuli\u00e8rement utile pour le d\u00e9bogage de r\u00e9solutions de surcharge ayant \u00e9chou\u00e9, car Clang peut fournir une explication plus d\u00e9taill\u00e9e de l'\u00e9chec de la substitution\u00a0:\r\n\r\n\r\nNotre \u00e9quipe travaillant sur la prise en charge du langage C++ se penche \u00e9galement sur les v\u00e9rifications de code propres \u00e0 CLion et leur impl\u00e9mentation dans Clangd. Dans cette version, il s'agit de la v\u00e9rification Member function can be static qui analyse le corps de la m\u00e9thode, tout en essayant de d\u00e9terminer si elle d\u00e9pend de this ou pas\u00a0:\r\n\r\nAm\u00e9liorations du moteur de langage de CLion\r\nPerformances de l'EDI\r\nM\u00eame si nous travaillons sur le moteur bas\u00e9 sur Clangd, nous poursuivons notre effort d'am\u00e9lioration de notre propre moteur de langage. Tout d'abord, nous tenons \u00e0 am\u00e9liorer les performances de l'EDI, l\u00e0 o\u00f9 Clangd ne peut pas encore \u00eatre appliqu\u00e9, et ensuite, nous avons accru la pr\u00e9cision des refactorisations qui ne peuvent toujours pas \u00eatre transf\u00e9r\u00e9es vers le moteur Clangd, tout du moins pas en l'\u00e9tat actuel.\r\n\r\nMais surtout, nous avons r\u00e9duit le temps d'indexation initial lorsque vous cr\u00e9ez un projet ou l'ouvrez pour la premi\u00e8re fois. L'id\u00e9e g\u00e9n\u00e9rale est que CLion peut d\u00e9sormais r\u00e9utiliser les symboles d\u00e9j\u00e0 cr\u00e9\u00e9s pour d'autres projets ouverts r\u00e9cemment, \u00e0 condition qu'ils soient adapt\u00e9s au projet en cours. Les biblioth\u00e8ques STL ou Boost sont des cas typiques, ainsi que toute autre biblioth\u00e8que personnalis\u00e9e et utilis\u00e9e fr\u00e9quemment dans le projet en cours ou les nouveaux projets. Nous pr\u00e9voyons de revenir sur cette fonctionnalit\u00e9 pour \u00e9tendre encore plus ses possibilit\u00e9s.\r\nRefactorisations plus pr\u00e9cises\r\nNous avons pass\u00e9 les refactorisations au peigne fin et les avons mises \u00e0 jour une par une, et nous avons notamment pu travailler sur Extract. Afin de garantir des r\u00e9sultats pr\u00e9cis, nous nous sommes assur\u00e9 que cette refactorisation respecte le qualificateur d'espace de nom std::, la sp\u00e9cialisation et les param\u00e8tres du mod\u00e8le, ainsi que les alias de type.\r\n\r\nLa refactorisation Rename a \u00e9galement fait l'objet d'une attention particuli\u00e8re de notre part. D\u00e9sormais, lorsqu'elle est appel\u00e9e sur un fichier, la classe Rename ne d\u00e9clenche plus silencieusement la classe associ\u00e9e\/struct rename, mais affiche une fen\u00eatre contextuelle proposant cette option. Et inversement\u00a0!\r\n\r\n\r\nD'autre part, lorsque le fichier d'en-t\u00eate est renomm\u00e9, les header guards sont mis \u00e0 jour en cons\u00e9quence si ils sont utilis\u00e9s dans ce fichier et le mod\u00e8le de style des header guards inclut le nom du fichier d'en-t\u00eate.\r\nPremiers pas vers le d\u00e9veloppement embarqu\u00e9\r\nSi vous d\u00e9veloppez du code pour les cartes STMicroelectronics, vous serez content d'apprendre que CLion s'int\u00e8gre d\u00e9sormais avec STM32CubeMX\u00a0:\r\n\r\n\tLe nouvel assistant de projet de CLion vous sugg\u00e8re de cr\u00e9er un projet STM32CubeMX (.ioc) ou vous pouvez ouvrir un projet existant de ce type dans CLion.\r\n\tPar la suite, vous pouvez d\u00e9marrer STM32CubeMX directement depuis CLion \u00e0 tout moment pour mettre \u00e0 jour les param\u00e8tres de la carte et g\u00e9n\u00e9rer du code.\r\n\tCLion g\u00e9n\u00e8re \u00e9galement le fichier CMake adapt\u00e9 \u00e0 votre projet .ioc et vous demande de s\u00e9lectionner la configuration de la carte.\r\n\r\nSi vous avez d\u00e9j\u00e0 essay\u00e9 le plugin OpenOCD + STM32CubeMX, cette fonctionnalit\u00e9 est tr\u00e8s similaire, car nous avons d\u00e9sormais int\u00e9gr\u00e9 la version mise \u00e0 jour de ce plugin dans CLion.\r\n\r\nLa deuxi\u00e8me partie du plugin est particuli\u00e8rement int\u00e9ressante pour le d\u00e9veloppement embarqu\u00e9, car elle assure l'int\u00e9gration avec le d\u00e9bogueur Open On-Chip. Utilisez le nouveau mod\u00e8le de configuration Run\/Debug, \u00ab\u00a0OpenOCD Download and Run\u00a0\u00bb pour d\u00e9boguer votre microcontr\u00f4leur.\r\n\r\n\r\nVous trouverez plus d'informations sur l'int\u00e9gration et la configuration pr\u00e9alable dans cet article de blog d\u00e9taill\u00e9.\r\nAdaptez CLion \u00e0 votre style de codage\r\nClangFormat\r\nL'outil ClangFormat est si populaire aupr\u00e8s des programmeurs C\/C++ que certains le consid\u00e8rent comme un standard. Le plus souvent, les projets open source stockent un fichier de configuration .clang-format dans leur r\u00e9f\u00e9rentiel. D\u00e9sormais, lorsque vous ouvrez ce type de projet dans CLion, l'EDI d\u00e9tecte le fichier de configuration et propose de basculer vers ClangFormat. Vous l'aurez compris, ClangFormat est d\u00e9sormais int\u00e9gr\u00e9 dans CLion et constitue une solution alternative de formatage\u00a0! Cela concerne toutes les actions de l'EDI, vous pouvez donc l'utiliser largement.\r\n\r\n\r\nVous trouverez \u00e9galement un module de s\u00e9lection par EDI pour ClangFormat dans la section Settings\/Preferences | Editor | Code Style. Vous trouverez plus de d\u00e9tails \u00e0 ce sujet dans cet article de blog consacr\u00e9 \u00e0 ce sujet.\r\nConvention de nommage en C\/C++\r\nPascalCase pour les classes et les structs, camelCase pour les fonctions membres et les variables, SCREAMING_SNAKE_CASE pour les macros et les constantes, snake_case pour les fonctions globales, \u00ab\u00a0E\u00a0\u00bb en pr\u00e9fixe pour tous les types d'\u00e9num\u00e9ration \u2013 pour ne citer que les conventions de nommage les plus connues. CLion compatit avec votre douleur et fournit d\u00e9sormais les param\u00e8tres correspondants dans la section Settings\/Preferences | Editor | Code Style | C\/C++ | Naming Convention, et respecte cette s\u00e9lection dans toutes les op\u00e9rations de saisie automatique et de g\u00e9n\u00e9ration de code, dans les actions de refactorisation et les correctifs rapides.\r\n\r\nVous pouvez \u00e9galement s\u00e9lectionner un style de nommage (entre autres param\u00e8tres de style de code) \u00e0 partir d'un profil pr\u00e9d\u00e9fini\u00a0: Google, LLVM, Qt et d'autres sont disponibles. Ou bien vous pouvez activer l'inspection Inconsistent Naming pour que l'EDI vous avertisse en cas de noms probl\u00e9matiques et sugg\u00e8re un nom plus pr\u00e9cis et un correctif rapide pour en remplacer toutes les utilisations.\r\n\r\nStyle Header Guards\r\nQu'utilisez-vous habituellement dans les fichiers d'en-t\u00eate \u2013 pragma ou header guards\u00a0? Par d\u00e9faut, CLion g\u00e9n\u00e8re des header guards (vous pouvez modifier le mod\u00e8le de fichier d'en-t\u00eate pour utiliser pragma dans la section Settings\/Preferences | Editor | File and Code Templates). Si vous pr\u00e9f\u00e9rez les header guards, vous aurez le plaisir d'apprendre que CLion 2019.1 permet d\u00e9sormais de configurer leur style\u00a0:\r\n\r\n\r\nLe mod\u00e8le prend en charge la syntaxe Apache Velocity et utilise des variables pr\u00e9d\u00e9finies, telles que ${PROJECT_NAME}, ${PROJECT_REL_PATH}, ${FILE_NAME}, ${EXT}, etc. Si vous souhaitez utiliser un style plus standard, s\u00e9lectionnez l'une des options de style pr\u00e9d\u00e9finies (comme pour les conventions de nommage).\r\nCibles de build personnalis\u00e9es et configurations run\/debug\r\nR\u00e9cemment nous avons eu de nombreuses demandes pour mettre \u00e0 disposition une commande personnalis\u00e9e de cr\u00e9ation de projets accessible dans l'EDI. Nous avons \u00e9galement eu beaucoup de demandes d'options d'ex\u00e9cution\/d\u00e9bogage du code binaire dans l'EDI pour diriger la configuration Run\/Debug vers l'ex\u00e9cutable personnalis\u00e9. Cela serait particuli\u00e8rement utile pour les projets de base de donn\u00e9es de compilation qui sont pris en charge dans CLion (et peuvent \u00eatre extraits depuis quasiment tout syst\u00e8me de build). Et c'est donc exactement ce que nous avons fait dans CLion 2019.1.\r\n\r\nPour cr\u00e9er votre projet avec une commande personnalis\u00e9e, cr\u00e9ez une cible de build personnalis\u00e9e dans la section Settings\/Preferences | Build, Execution, Deployment | Custom Build Targets o\u00f9 vous fournirez des commandes dans les champs Toolchain et Build\/Clean\u00a0:\r\n\r\n\r\nPour ex\u00e9cuter ou d\u00e9boguer une configuration personnalis\u00e9e dans CLion, param\u00e9trez la configuration Custom Build Application dans Run | Edit Configurations\u2026, o\u00f9 vous pouvez fournir une cible personnalis\u00e9e, un ex\u00e9cutable, les arguments du programme, etc.\r\n\r\nVous trouverez plus de d\u00e9tails sur la proc\u00e9dure \u00e0 suivre dans notre webhelp.\r\nAm\u00e9liorations du d\u00e9bogueur\r\nVue de la m\u00e9moire\r\n\u00c0 partir de CLion 2019.1, vous pouvez faire un dump de m\u00e9moire brute derri\u00e8re un pointeur en cours de d\u00e9bogage. Mais ce n'est pas tout\u00a0: ouvrez une vue de la m\u00e9moire pendant le d\u00e9bogage et suivez les modifications apport\u00e9es \u00e0 la m\u00e9moire pendant l'ex\u00e9cution \u00e9tape par \u00e9tape\u00a0:\r\n\r\n\r\nCette fonctionnalit\u00e9 n'est pas encore finalis\u00e9e. Par exemple, l'une des prochaines mises \u00e0 jour vous permettra de faire un dump de l'adresse de m\u00e9moire arbitraire en mode Debug.\r\nVue Disassembly\r\nLa vue Disassembly a \u00e9t\u00e9 am\u00e9lior\u00e9e, afin d'y afficher les informations cat\u00e9goris\u00e9es par fonction. Cela fonctionne pour LLDB, de sorte que LLDB et GDB sont tous les deux couverts.\r\n\r\nUtilisez Force Step Into (Maj+Alt+F7 sous Win\/Linux, \u2325\u21e7F7 sous macOS) sur une fonction sans code source pour ouvrir cette vue\u00a0:\r\nVariables silencieuses\r\nLe calcul des variables peut prendre un temps consid\u00e9rable et cela risque d'avoir un impact d\u00e9terminant sur les performances lors de l'ex\u00e9cution du code \u00e9tape par \u00e9tape. Si vous devez garder un \u0153il sur les calculs de variables, cela peut demander \u00e9norm\u00e9ment de travail alors que cela n'aura pas d'utilit\u00e9 au final. Dans ce cas, vous pouvez d\u00e9sormais rendre les variables silencieuses avec la commande Mute via un param\u00e8tre g\u00e9n\u00e9ral de l'EDI. Et lorsque c'est vraiment n\u00e9cessaire, vous pouvez appliquer la commande Load pour calculer la variable de l'\u00e9tape active.\r\n\r\nLangages inject\u00e9s\r\nLes lit\u00e9raux de cha\u00eenes avec des \u00e9l\u00e9ments de code peuvent \u00eatre trait\u00e9s comme des \u00e9l\u00e9ments de code r\u00e9els. Par cons\u00e9quent, le surlignage du code, ainsi que les intentions et les actions propres au langage, peuvent leur \u00eatre appliqu\u00e9s. Cela s'av\u00e8re particuli\u00e8rement utile pour les cha\u00eenes SQL ou HTML, ou les expressions r\u00e9guli\u00e8res.\r\n\r\nPour injecter temporairement un langage, appuyez sur Alt+Entr\u00e9e et appliquez l'intention \u00ab\u00a0Inject language or reference\u00a0\u00bb, s\u00e9lectionnez le langage correspondant et c'est termin\u00e9\u00a0! D\u00e9sormais, vous pouvez modifier les fragments de code dans la section d\u00e9di\u00e9e de l'\u00e9diteur ou appliquer une action sp\u00e9cifique. Par exemple, vous pouvez v\u00e9rifier si une cha\u00eene correspond \u00e0 l'expression r\u00e9guli\u00e8re directement dans l'EDI\u00a0:\r\n\r\nN'est-ce pas pratique\u00a0?\r\n\u00c9gayez votre EDI avec des th\u00e8mes de couleur personnalis\u00e9s\u00a0!\r\nSi les th\u00e8mes par d\u00e9faut blanc et Darcula ne vous suffisent pas, vous avez la possibilit\u00e9 de cr\u00e9er un th\u00e8me personnalis\u00e9\u00a0! Toutes les couleurs de tous les \u00e9l\u00e9ments de votre EDI, des ic\u00f4nes et boutons radio jusqu'aux fl\u00e8ches, sont d\u00e9sormais totalement configurables. Adaptez-les en fonction de vos pr\u00e9f\u00e9rences, puis enregistrez-les sous forme de nouveau plugin de th\u00e8me. Ce tutoriel explique comment proc\u00e9der.\r\n\r\nMise \u00e0 jour du plugin Rust\r\nLe plugin IntelliJ Rust assure la prise en charge de Rust, ainsi que le syst\u00e8me de build Cargo et le d\u00e9bogueur dans CLion. Cette version lui apporte une mise \u00e0 jour importante\u00a0:\r\n\r\n\tLes Profilers sont d\u00e9sormais pris en charge pour Rust\u00a0: DTrace sous macOS et Perf sous Linux.\r\n\tLes \u00e9l\u00e9ments hors de port\u00e9e sont sugg\u00e9r\u00e9s lors de la saisie automatique et d\u00e9clenchent l'importation automatique lorsqu'ils sont utilis\u00e9s.\r\n\tL'injection du langage Rust dans des extraits de code, dans doc comments est maintenant possible.\r\n\tDiff\u00e9rentes am\u00e9liorations ont \u00e9t\u00e9 apport\u00e9es \u00e0 l'annotateur Cargo check et aux formateurs LLDB et GDB.\r\n\r\nRestez \u00e0 l'\u00e9coute, car nous publierons bient\u00f4t un article de blog d\u00e9taill\u00e9 sur les modifications r\u00e9centes (vous pouvez \u00e9galement vous abonner \u00e0 notre actualit\u00e9 Rust dans le blog).\r\nAutres am\u00e9liorations\r\nLes autres am\u00e9liorations incluent la nouvelle fen\u00eatre contextuelle Recent Locations qui donne une vue d'ensemble de tous les emplacements que vous avez visit\u00e9s par ordre chronologique, des versions mises \u00e0 jour des packages int\u00e9gr\u00e9s de CMake (3.13) et LLDB (7.0.1), ainsi que la version la plus r\u00e9cente de Cygwin (3.0).\r\n\r\nD'autre part, le processus de cr\u00e9ation des builds de plugin de CLion a \u00e9t\u00e9 simplifi\u00e9 en publiant CLion en tant que d\u00e9pendance Maven devant \u00eatre utilis\u00e9e par gradle-intellij-plugin (depuis la version 0.4.2).\r\n\r\nC'est tout\u00a0! Nous vous invitons \u00e0 tester toute ces nouvelles am\u00e9liorations et \u00e0 nous dire ce que vous en pensez.\r\nT\u00c9L\u00c9CHARGER CLION 2019.1\r\nAuteur de l'article original en anglais :\u00a0Anastasia Kazakova","protected":false},"excerpt":{"rendered":"Nous avons d'excellentes nouvelles ! Nous avons r\u00e9alis\u00e9 la premi\u00e8re mise \u00e0 jour majeure de CLion cette ann\u00e9e\u00a0!Pour proc\u00e9der imm\u00e9diatement \u00e0 la mise \u00e0 jour, utilisez l'application Toolbox, un packa","protected":false},"author":{"name":"Delphine Massenhove","link":"https:\/\/blog.jetbrains.com\/fr\/author\/delphine-massenhovejetbrains-com"},"featured_media":34147,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[907],"tags":[477],"cross-post-tag":[],"acf":[],"featured_image":"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/04\/fr-CLion-2019.1.png","_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34146"}],"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=34146"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/posts\/34146\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/34147"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=34146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=34146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=34146"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=34146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}