{"id":454243,"date":"2024-03-08T11:20:55","date_gmt":"2024-03-08T10:20:55","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=phpstorm&#038;p=454243"},"modified":"2025-09-17T09:52:24","modified_gmt":"2025-09-17T08:52:24","slug":"ia-pour-php-comment-generer-des-implementations-de-tests-avec-l-ai-assistant","status":"publish","type":"phpstorm","link":"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/03\/ia-pour-php-comment-generer-des-implementations-de-tests-avec-l-ai-assistant\/","title":{"rendered":"IA pour PHP\u00a0: comment g\u00e9n\u00e9rer des impl\u00e9mentations de tests avec l&#8217;AI Assistant"},"content":{"rendered":"<p>Nous avons d\u00e9but\u00e9 <a href=\"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/03\/comment-generer-des-tests-php-avec-l-ai-assistant-de-jetbrains\/\">cette s\u00e9rie d&#8217;articles<\/a> par l&#8217;examen de la fa\u00e7on dont <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/ai\/\" target=\"_blank\" rel=\"noopener\">l&#8217;AI Assistant<\/a> peut g\u00e9n\u00e9rer des tests \u00e0 partir d&#8217;une impl\u00e9mentation existante. Mais qu&#8217;en serait-il si nous voulions utiliser l&#8217;AI Assistant dans l&#8217;autre sens\u00a0? Que se passerait-il si nous voulions adopter une approche de d\u00e9veloppement davantage pilot\u00e9e par les tests, en \u00e9crivant nos tests en premier, puis en demandant \u00e0 l&#8217;AI Assistant d&#8217;en g\u00e9n\u00e9rer l&#8217;impl\u00e9mentation\u00a0pour nous ?<\/p>\n<p>Voyons comment nous pouvons faire cela.<\/p>\n<h2 class=\"wp-block-heading\">G\u00e9n\u00e9rer du code avec le chat de l&#8217;AI Assistant<\/h2>\n<p>La premi\u00e8re \u00e9tape pour g\u00e9n\u00e9rer une impl\u00e9mentation consiste \u00e0 mettre un test en place. Imaginons que nous souhaitions cr\u00e9er un bus de commande et que nous ayons le test suivant\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/OcgTucNO41d-FPqUFaEmmmHT8e7ClqFk9eTgj3cuoIchYBjdAgfAOXoOzvplGJAsUHH1mJLJpUP5qLS7B3pKYDiQcRQG6OcKcZAHm1FJeUtOifJm7xGOi60cTWswDGyQHS9RdsgI77QAxzru76P56BQ-1.png\" alt=\"\" \/><\/figure>\n<p>Nous n&#8217;avons rien \u00e9crit d&#8217;autre, il n&#8217;y a pas encore de classe <code>CommandBus<\/code> et encore moins d&#8217;impl\u00e9mentation pour les m\u00e9thodes <code>handle<\/code> et <code>getHistory<\/code>. Nous allons utiliser l&#8217;AI Assistant pour g\u00e9n\u00e9rer l&#8217;impl\u00e9mentation. Pour commencer, ouvrez le menu <em>AI Actions<\/em> en s\u00e9lectionnant le texte et en appuyant sur <em>Alt+Entr\u00e9e \/ \u2325Entr\u00e9e<\/em>. Ensuite, choisissez <em>New Chat Using Selection<\/em>:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/vqtpv5ftmzrAWfGN7Yjf0iYVOf_aoY0DC17qrsstEoLqWA6yIgGHB_h8R5YnjwPUE67sTMPvkwvA0cSMeJWK9sGXui_4UfXX4MRcjck_3KDHizKYuChDcnaSBCmN1iZJslpEgn7LwvlR-hOF_e8ijOg-1.png\" alt=\"\" \/><\/figure>\n<p><a href=\"https:\/\/www.jetbrains.com\/fr-fr\/phpstorm\/\" target=\"_blank\" rel=\"noopener\">PhpStorm<\/a> ouvre la fen\u00eatre de chat de <em>l&#8217;AI Assistant<\/em>. Elle permet d&#8217;interagir avec l&#8217;AI Assistant et de lui demander ce que vous voulez. L&#8217;extrait de code que vous avez s\u00e9lectionn\u00e9 sera d\u00e9j\u00e0 pr\u00e9sent dans la fen\u00eatre de chat et nous allons lui fournir un prompt simple\u00a0: \u00ab \u00e9crire une impl\u00e9mentation pour ce test \u00bb\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/MjBTRSFs5eyMWCCnyxARN4YQJ5Zwz7sD1acH6YEB0C7ctohFgrO-HLqufD_EU3k4GpBYNCM8wIliX7f3JAIHNlsFk58s5suZ0setdi4WeIdHnaLJFij9wOU-iagGkma90escovdaMjzcsaR5rS5_QGA-1.png\" alt=\"\" \/><\/figure>\n<p>L&#8217;AI Assistant pr\u00e9pare alors l&#8217;impl\u00e9mentation en quelques secondes\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/6GwpIdGYJQ0G6AOr3ifqvSkMuM9unAwAPinxKSxpItLqn1BMhEmdRczoQ4Sfh4fgAcLYlymcg-xeuB_pXUQvl9VDvxFo5M0c0VWRTgh136bw0WqOF1XVRC7s0yl6epkTqh9EGxQqhCSZzzOVBKuVUSg-1.png\" alt=\"\" \/><\/figure>\n<p>Copions ce code dans un fichier et ex\u00e9cutons notre test pour voir ce qui se passe\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/R_fCNsUtGcXwolmLNq-Ik58seRh7wD9UXPwvF7L4qoYrFKmSxY9oZiiW4ddPx7Ewq2ZXAD45e9O7f2KoQP10PA-X1IOqMUBPMDw8T6g9VoaxyniWI3Qt-CD_gijD_CM3oQ7N_otkULHnhTEzjc2yR-Y-1.png\" alt=\"\" \/><\/figure>\n<p>\u00c7a fonctionne\u00a0! L&#8217;AI Assistant a \u00e9crit une impl\u00e9mentation op\u00e9rationnelle pour notre test. En parcourant le code, on peut voir que cette impl\u00e9mentation semble solide, il n&#8217;y aura que quelques modifications de d\u00e9tails de style \u00e0 effectuer. En utilisant l&#8217;AI Assistant, l&#8217;objectif n&#8217;est pas de lui faire \u00e9crire le code parfait \u00e0 notre place, mais plut\u00f4t de g\u00e9n\u00e9rer le code \u00e0 utiliser au d\u00e9part afin de nous faire gagner du temps. Et c&#8217;est exactement ce qu&#8217;il a fait !<\/p>\n<p>Et si nous voulons utiliser ce prompt \u00e0 plusieurs reprises\u00a0? Y a-t-il un moyen de le r\u00e9utiliser\u00a0?<\/p>\n<p>Bien s\u00fbr\u00a0!<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/ai\/#plans-and-pricing\" target=\"\" rel=\"noopener\">Essayer l&#8217;AI Assistant<\/a><\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Sauvegarder des prompts personnalis\u00e9s<\/h2>\n<p>Ouvrez le menu <em>AI Actions<\/em> en appuyant sur <em>Alt+Entr\u00e9e \/ \u2325Entr\u00e9e<\/em> quelque part dans votre code. Au lieu de choisir un \u00e9l\u00e9ment de menu existant, cliquez sur le lien <em>Add Your Prompts<\/em> en bas\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/reaoxLgYJmqMTsjMmAL6kSqcU7zsQhSeT5pkRuf-yny6dfo-bYYApsiVGMiHaE7SDE3TXeGpNauISkUUW7gBk2phYbw338Vk6iMzHHio5btnZQ604VvZuNOoSk_2EXW18kLJhNL0yzWL2JRDRKUalMQ-1.png\" alt=\"\" \/><\/figure>\n<p>PhpStorm permet d&#8217;\u00e9crire des prompts personnalis\u00e9s et de les enregistrer en tant qu&#8217;actions d&#8217;IA personnalis\u00e9es. Dans ces prompts, vous pouvez utiliser la variable <code>$SELECTION<\/code>, qui contiendra le code que vous avez s\u00e9lectionn\u00e9 lors de l&#8217;appel de votre prompt personnalis\u00e9.<\/p>\n<p>Nous allons \u00e9crire un prompt pour notre cas d&#8217;utilisation, \u00e0 savoir cr\u00e9er une impl\u00e9mentation pour un test s\u00e9lectionn\u00e9\u00a0:<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/ePkUUeMLIwXZpXkISTVlkCHLcFxQQZdj7wuijXrgLYkFvgT1J9cZdo5xUJ_VsoRyznIL7-dBf0HUdaEEPPbIdKYr-INs4EDmkDY3p2e2GbGFfkN5fSyzKHEVPBwNUEuUH_IKY9wT1SZvOd7fJEObVrs-1.png\" alt=\"\" \/><\/figure>\n<p>Faisons un essai\u00a0! S\u00e9lectionnez \u00e0 nouveau le test, appuyez sur <em>Alt+Entr\u00e9e \/ \u2325Entr\u00e9e<\/em> pour ouvrir le menu <em>AI Actions<\/em>. Vous verrez que l&#8217;action personnalis\u00e9e <em>Write Implementation<\/em> est maintenant disponible\u00a0!<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/mvO8Rs5U7K-JOWWfGyPk4OG1ZITHsrk72CvyCydr6pwt4Kz2rst_zdTZ_sxYYPuQeXjSiWjJ3BaDPwZwG6YAh2iZvRe88PiBAk1E4Sj4pvcoSkEl0cUTmalXkNoVAioL0jg59NSzQOlhiUGGpOj6TZQ-1.png\" alt=\"\" \/><\/figure>\n<p>S\u00e9lectionnez cette action et PhpStorm \u00e9crira imm\u00e9diatement le bon message \u00e0 l&#8217;AI Assistant, ce qui rendra notre action assist\u00e9e par IA r\u00e9utilisable\u00a0!<\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/Z-nU9TmmfUVHY8o1B-VQcxe6rnbfGxD7w_5LtbxungwCxgQjiaAOIPUSwg1aDH_j60tHNJ11nkRBllYfXjRqHY5Du-qqyyNk4t4H_pMlFEl5ArtK127hYnY2kzZsjQgmRM0nla1pxt4OkmJvqMqDk_M-1.png\" alt=\"\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p>Dans <a href=\"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/03\/comment-generer-des-tests-php-avec-l-ai-assistant-de-jetbrains\/\">cette s\u00e9rie d&#8217;articles<\/a>, nous avons vu plusieurs exemples d&#8217;utilisation de l&#8217;AI Assistant. Nous ne lui demandons pas d&#8217;\u00e9crire un code parfait, mais de g\u00e9n\u00e9rer du code qui puisse nous servir de point de d\u00e9part. Le code fourni par l&#8217;AI Assistant est d\u00e9j\u00e0 tr\u00e8s pr\u00e9cis et j&#8217;ai h\u00e2te de d\u00e9couvrir ses am\u00e9liorations \u00e0 venir dans les prochaines versions.\u00a0<\/p>\n<p>Personnellement, je ne crois pas que l&#8217;IA pourra remplacer les programmeurs de sit\u00f4t, mais je pense que c&#8217;est un excellent outil pour acc\u00e9l\u00e9rer l&#8217;\u00e9criture du code, en particulier pour les parties r\u00e9p\u00e9titives, et donc pour nous permettre de nous concentrer sur les aspects les plus importants de notre code.\u00a0<\/p>\n<p>Et vous, qu&#8217;attendez-vous de l&#8217;assistance par IA dans votre travail\u00a0? Dites-le nous dans les commentaires\u00a0!\u00a0<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/ai\/\" target=\"\" rel=\"noopener\">En savoir plus sur l&#8217;AI Assistant<\/a><\/div>\n<\/div>\n<h2 class=\"wp-block-heading\">Liens utiles<\/h2>\n<p>Cet article vous a plu\u00a0? Voici les autres articles de cette s\u00e9rie\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/03\/ia-pour-php-comment-automatiser-les-tests-unitaires-avec-l-ai-assistant\/\">IA pour PHP\u00a0: comment automatiser les tests unitaires avec l&#8217;AI Assistant<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/fr\/phpstorm\/2024\/03\/ia-pour-php-comment-adapter-les-prompts-d-ia-pour-ameliorer-les-tests-php\/\">IA pour PHP\u00a0: comment adapter les prompts d&#8217;IA pour am\u00e9liorer les tests PHP<\/a><\/li>\n<\/ul>\n<p><strong>Ressources\u00a0:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/phpstorm\/ai-assistant.html\" target=\"_blank\" rel=\"noopener\">L&#8217;AI Assistant dans PhpStorm<\/a> (documentation)<\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/fr-fr\/ai\/#plans-and-pricing\" target=\"_blank\" rel=\"noopener\">Tarification de l&#8217;AI Assistant<\/a><\/li>\n<\/ul>\n<p><strong>Vid\u00e9o\u00a0:<\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/youtu.be\/-NnYtfzO7qU?feature=shared\" target=\"_blank\" rel=\"noopener\">Pr\u00e9sentation de l&#8217;AI Assistant de JetBrains<\/a><\/li>\n<\/ul>\n<p><em>Auteur de l&#8217;article original en anglais<\/em> :<\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":447488,"comment_status":"closed","ping_status":"closed","template":"","categories":[2347],"tags":[8168,8337],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/454243"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/phpstorm"}],"author":[{"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=454243"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/454243\/revisions"}],"predecessor-version":[{"id":618698,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/phpstorm\/454243\/revisions\/618698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/447488"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=454243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=454243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=454243"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=454243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}