[{"data":1,"prerenderedAt":1509},["ShallowReactive",2],{"/fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities":3,"navigation-fr-fr":716,"banner-fr-fr":1151,"footer-fr-fr":1159,"blog-post-authors-fr-fr-Michael Friedrich|Alana Bellucci":1398,"blog-related-posts-fr-fr-developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities":1425,"blog-promotions-fr-fr":1449,"next-steps-fr-fr":1500},{"id":4,"title":5,"authors":6,"body":9,"category":692,"date":693,"description":694,"extension":695,"externalUrl":696,"faq":696,"featured":126,"heroImage":697,"meta":698,"navigation":126,"path":699,"seo":700,"slug":705,"stem":706,"tags":707,"template":713,"updatedDate":714,"__hash__":715},"blogPosts/fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.md","Développement de GitLab Duo : corriger les failles de sécurité avec l'IA ",[7,8],"Michael Friedrich","Alana Bellucci",{"type":10,"value":11,"toc":682},"minimark",[12,16,29,34,52,59,62,66,69,72,134,145,150,153,156,159,169,175,188,194,203,209,222,228,237,243,253,257,260,263,287,383,389,396,402,418,506,516,529,535,542,546,549,563,575,587,590,594,597,601,622,631,636,678],[13,14,15],"p",{},"Imaginez que dès votre premier jour dans votre nouveau poste, un incident de production majeur mobilise l'intervention de chaque membre de votre équipe. De nombreuses vulnérabilités critiques apparaissent, nécessitant une attention, une analyse, une atténuation et une correction immédiates. Mais par où commencer votre enquête ?\nDécouvrez comment l'explication et la résolution des vulnérabilités de GitLab Duo, ainsi que nos autres fonctionnalités alimentées par l'IA, peuvent vous aider à résoudre les vulnérabilités en quelques minutes. L'exemple pratique ci-dessous illustre comment bénéficier de l'assistance alimentée par l'IA de GitLab Duo pour analyser et expliquer les vulnérabilités. Des mesures correctives supplémentaires, accompagnées de corrections de code générées par l'IA dans les merge requests, sont également mises en évidence afin d'accélérer la résolution des vulnérabilités.",[17,18,19],"blockquote",{},[13,20,21,22,28],{},"Démarrez ",[23,24,27],"a",{"href":25,"rel":26},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/#free-trial",[],"un essai gratuit de GitLab Duo"," pour profiter des avantages de la correction des vulnérabilités au sein de vos équipes.",[30,31,33],"h2",{"id":32},"première-étape-lanalyse","Première étape : l'analyse",[13,35,36,37,42,43,47,48,51],{},"La première étape consiste à évaluer l'impact et la gravité de la vulnérabilité. Ouvrez l'interface utilisateur de GitLab et accédez au ",[23,38,41],{"href":39,"rel":40},"https://docs.gitlab.com/user/application_security/vulnerability_report/",[],"rapport de vulnérabilités"," accessible via le menu ",[44,45,46],"code",{},"Sécurisation > Rapport de vulnérabilités",". Appliquez le filtre ",[44,49,50],{},"SAST"," pour identifier les vulnérabilités les plus critiques à traiter.",[13,53,54],{},[55,56],"img",{"alt":57,"src":58},"Aperçu des rapports de vulnérabilités","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/vulnerability_reports_overview_aHR0cHM6_1750098116056.png",[13,60,61],{},"Les résultats du scanner SAST sont présentés sous forme d'un résumé dans la vue détaillée, avec un lien vers le code source. Ils incluent des informations provenant d'avis de sécurité accessibles au public. Les équipes de développement rencontrent souvent des difficultés pour lancer l'analyse directement à partir du rapport de sécurité, surtout si elles ne sont pas pleinement informées de la portée de l'attaque, des détails techniques et des environnements affectés.",[30,63,65],{"id":64},"comprendre-et-atténuer-les-risques-avec-lexplication-des-vulnérabilités","Comprendre et atténuer les risques avec l'explication des vulnérabilités",[13,67,68],{},"Il est essentiel de bien comprendre la vulnérabilité et de déterminer la manière la plus appropriée et la plus efficace de la corriger. Les corrections apportées ne doivent pas compromettre les fonctionnalités existantes. Si c'est le cas, il est important d'échanger avec les chargés de maintenance et les Product Owners, et de fournir un résumé détaillé des vulnérabilités ainsi que des mesures d'atténuation possibles. Lorsque vous devez traiter du code écrit par un ancien employé qui a quitté l'entreprise ou du code qui n'a pas été testé, cela peut compliquer considérablement la planification des corrections.\nL'explication des vulnérabilités alimentée par l'IA permet de résumer la manière dont un attaquant peut exploiter la vulnérabilité et apporte des informations supplémentaires sur son impact et les mesures correctives possibles.",[13,70,71],{},"Par exemple, une vulnérabilité d'injection de commandes dans le système d'exploitation, comme illustrée dans l'extrait de code suivant :",[73,74,79],"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-php shiki shiki-themes github-light","\u003C?php\n// Read variable name from GET request\n$name = $_GET['name'];\n\n// Use the variable name to call eval and print its value eval('echo $' . $name . ';');\n","php","",[44,80,81,94,101,121,128],{"__ignoreMap":78},[82,83,86,90],"span",{"class":84,"line":85},"line",1,[82,87,89],{"class":88},"sD7c4","\u003C?",[82,91,93],{"class":92},"sYu0t","php\n",[82,95,97],{"class":84,"line":96},2,[82,98,100],{"class":99},"sAwPA","// Read variable name from GET request\n",[82,102,104,108,111,114,118],{"class":84,"line":103},3,[82,105,107],{"class":106},"sgsFI","$name ",[82,109,110],{"class":88},"=",[82,112,113],{"class":106}," $_GET[",[82,115,117],{"class":116},"sYBdl","'name'",[82,119,120],{"class":106},"];\n",[82,122,124],{"class":84,"line":123},4,[82,125,127],{"emptyLinePlaceholder":126},true,"\n",[82,129,131],{"class":84,"line":130},5,[82,132,133],{"class":99},"// Use the variable name to call eval and print its value eval('echo $' . $name . ';');\n",[13,135,136,137,140,141],{},"Le rapport de vulnérabilité n'est pas assez détaillé et nécessite une compréhension complète du contexte et de l'impact. Sélectionnez le bouton ",[44,138,139],{},"Expliquer la vulnérabilité"," dans le coin supérieur droit. GitLab Duo Chat s'ouvre et suggère une action prédéfinie de prompt. Cette fonctionnalité vous fournit des informations supplémentaires sur la vulnérabilité, car elle décrit comment celle-ci peut être exploitée et corrigée.\n",[55,142],{"alt":143,"src":144},"Neutralisation incorrecte des\néléments spéciaux utilisés dans une commande de système d'exploitation\n('OS Command Injection') ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750098116057.png",[146,147,149],"h3",{"id":148},"faire-de-lexplication-des-vulnérabilités-une-conversation-contextuelle","Faire de l’explication des vulnérabilités une conversation contextuelle",[13,151,152],{},"Vous remarquerez également un changement au niveau de l'interface utilisateur : le volet d'explication des vulnérabilités a été remplacé par un workflow GitLab Duo Chat. Parfois, une vulnérabilité complexe nécessite d'être décomposée en plusieurs étapes d'atténuation ou passe par des chemins de code source peu clairs.",[13,154,155],{},"Vous pouvez explorer l'arborescence du code source et utiliser le même contexte de Chat pour expliquer, corriger, réusiner et tester le code.",[13,157,158],{},"Voyons comment fonctionne le workflow complet à l'aide d'un exemple en langage C, dans lequel le scanning de sécurité a détecté un débordement de tampon.",[160,161,162],"ol",{},[163,164,165,166,168],"li",{},"Ouvrez la vue détaillée de la faille de sécurité et sélectionnez le bouton ",[44,167,139],{}," en haut à droite. Le prompt de GitLab Duo Chat s'ouvre, fournit un résumé du problème et des vecteurs d'attaque potentiels, puis propose une solution.",[13,170,171],{},[55,172],{"alt":173,"src":174},"Utilisation de l'IA pour les vulnérabilités - image 4","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750098116059.png",[160,176,177],{"start":96},[163,178,179,180,183,184,187],{},"Passez en revue la correction proposée et demandez à GitLab Duo Chat de vous indiquer d'autres solutions, en utilisant le prompt ",[44,181,182],{},"Pouvez-vous proposer une solution alternative en utilisant une fonction différente ?",". L'idée est d'en apprendre davantage sur les fonctions alternatives à ",[44,185,186],{},"strcpy()"," dont l'utilisation pourrait être plus sûre.",[13,189,190],{},[55,191],{"alt":192,"src":193},"Utilisation de l'IA pour les vulnérabilités - image 3","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098116060.png",[160,195,196],{"start":103},[163,197,198,199,202],{},"GitLab Duo Chat propose une solution alternative qui utilise ",[44,200,201],{},"strlcpy()",", illustrée dans l'exemple suivant. Cette fonction ne copie que le nombre de caractères autorisé dans la chaîne cible et termine toujours la chaîne par « null ». Elle renvoie également la longueur de la chaîne source pour déterminer si celle-ci a été tronquée.",[13,204,205],{},[55,206],{"alt":207,"src":208},"Utilisation de l'IA pour les vulnérabilités - image 5","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750098116062.png",[160,210,211],{"start":123},[163,212,213,214,217,218,221],{},"Cliquez ensuite sur l'URL du fichier ",[44,215,216],{},"Emplacement"," pour accéder à la vue du code source. Ouvrez à nouveau GitLab Duo Chat et vérifiez que le contexte d'explication de la vulnérabilité précédente est toujours présent. L'étape suivante consiste à ajouter des tests avant d'appliquer la correction proposée. Cette approche permet d'éviter de perturber des fonctionnalités ou d'introduire des régressions. Par exemple, utilisez le prompt suivant : ",[44,219,220],{},"En fonction du contexte de la vulnérabilité et du code source ouvert, comment ajouteriez-vous des tests pour cette vulnérabilité ?",".",[13,223,224],{},[55,225],{"alt":226,"src":227},"Utilisation de l'IA pour les vulnérabilités - image 7 ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750098116063.png",[160,229,230],{"start":130},[163,231,232,233,236],{},"Après avoir généré les tests (et en supposant qu'ils ont maintenant été ajoutés), vous pouvez également demander à GitLab Duo Chat de réusiner le code source, en utilisant le prompt ",[44,234,235],{},"Pouvez-vous également réusiner le code source ?"," dans la même session.",[13,238,239],{},[55,240],{"alt":241,"src":242},"Utilisation de l'IA pour les vulnérabilités - image 6","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098116063.png",[13,244,245,246,252],{},"Le workflow montre comment analyser, comprendre, atténuer, obtenir des approches alternatives, ajouter des tests et même réusiner les corrections de vulnérabilités.\nVous pouvez reprendre cette mesure corrective à l'aide de GitLab Duo Chat, puis basculer dans le Web IDE pour modifier le code source après avoir appris comment faire. Parmi les autres workflows continus, citons la validation des modifications et le déclenchement des ",[23,247,251],{"href":248,"rel":249,"title":250},"https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/",[],"Qu'est-ce qu'un pipeline CI/CD ?","pipelines CI/CD",", ainsi que les scans de sécurité réalisés tout au long du cycle de développement DevSecOps.",[30,254,256],{"id":255},"corriger-les-failles-de-sécurité-avec-la-résolution-des-vulnérabilités-assistées-par-lia","Corriger les failles de sécurité avec la résolution des vulnérabilités assistées par l'IA",[13,258,259],{},"Pour comprendre et corriger une faille de sécurité, des compétences en développement sont toujours nécessaires pour créer un correctif, exécuter des pipelines et effectuer des scans de sécurité dans une merge request. Il peut également être nécessaire de déployer les corrections dans un environnement de staging et de les tester sur une période plus longue.",[13,261,262],{},"L'IA peut être utile dans cette situation, en proposant une correction en fonction du contexte et du code source fournis.",[13,264,265,266,271,272,277,278,281,282,221],{},"Astuce : pensez à la vulnérabilité la plus frustrante que vous avez dû corriger au cours de votre carrière et recréez-la pour vous familiariser avec GitLab Duo. La ",[23,267,270],{"href":268,"rel":269},"https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html",[],"liste CWE de Mitre qui recense les 25 faiblesses logicielles les plus dangereuses"," peut être également un bon point de départ.\nL'exemple suivant implémente la faille ",[23,273,276],{"href":274,"rel":275},"https://cwe.mitre.org/data/definitions/328.html",[],"CWE-328 : Utilisation d'une fonction de hachage faible"," en utilisant ",[44,279,280],{},"md5",". La faille est correctement identifiée par ",[23,283,286],{"href":284,"rel":285},"https://docs.gitlab.com/user/application_security/sast/",[],"le test SAST",[73,288,292],{"className":289,"code":290,"language":291,"meta":78,"style":78},"language-python shiki shiki-themes github-light","import hashlib\n\nclass User:\n    def __init__(self, username, password):\n        self.username = username\n        self.password = password\n\n    def set_password(self, password):\n        self.password = hashlib.md5(password.encode()).hexdigest()\n","python",[44,293,294,302,306,318,329,342,355,360,371],{"__ignoreMap":78},[82,295,296,299],{"class":84,"line":85},[82,297,298],{"class":88},"import",[82,300,301],{"class":106}," hashlib\n",[82,303,304],{"class":84,"line":96},[82,305,127],{"emptyLinePlaceholder":126},[82,307,308,311,315],{"class":84,"line":103},[82,309,310],{"class":88},"class",[82,312,314],{"class":313},"s7eDp"," User",[82,316,317],{"class":106},":\n",[82,319,320,323,326],{"class":84,"line":123},[82,321,322],{"class":88},"    def",[82,324,325],{"class":92}," __init__",[82,327,328],{"class":106},"(self, username, password):\n",[82,330,331,334,337,339],{"class":84,"line":130},[82,332,333],{"class":92},"        self",[82,335,336],{"class":106},".username ",[82,338,110],{"class":88},[82,340,341],{"class":106}," username\n",[82,343,345,347,350,352],{"class":84,"line":344},6,[82,346,333],{"class":92},[82,348,349],{"class":106},".password ",[82,351,110],{"class":88},[82,353,354],{"class":106}," password\n",[82,356,358],{"class":84,"line":357},7,[82,359,127],{"emptyLinePlaceholder":126},[82,361,363,365,368],{"class":84,"line":362},8,[82,364,322],{"class":88},[82,366,367],{"class":313}," set_password",[82,369,370],{"class":106},"(self, password):\n",[82,372,374,376,378,380],{"class":84,"line":373},9,[82,375,333],{"class":92},[82,377,349],{"class":106},[82,379,110],{"class":88},[82,381,382],{"class":106}," hashlib.md5(password.encode()).hexdigest()\n",[13,384,385],{},[55,386],{"alt":387,"src":388},"Utilisation de l'IA pour les vulnérabilités - image 8","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750098116064.png",[13,390,391,392,395],{},"Cliquez sur le bouton en haut à droite ",[44,393,394],{},"Résoudre avec une merge request",". Une merge request s'ouvre, dans laquelle une correction générée par l'IA est proposée. Dans le cas de cette vulnérabilité, une correction possible consisterait à utiliser une fonction de hachage différente.",[13,397,398],{},[55,399],{"alt":400,"src":401},"Utilisation de l'IA pour les vulnérabilités - image 9","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098116065.png",[13,403,404,405,410,411,414,415,221],{},"Le fait de ne pas vérifier les codes d'erreur des fonctions ou les exceptions potentielles est un autre exemple de vulnérabilité courante. Les extraits de code en langage C suivants illustrent un exemple d'attaques par temporisation contre les opérations de fichiers en lien avec la faille ",[23,406,409],{"href":407,"rel":408},"https://cwe.mitre.org/data/definitions/362.html",[],"CWE-362"," pour les appels ",[44,412,413],{},"fopen()"," et ",[44,416,417],{},"chmod()",[73,419,423],{"className":420,"code":421,"language":422,"meta":78,"style":78},"language-c shiki shiki-themes github-light","#include \u003Cstdio.h>\n#include \u003Cstring.h>\n#include \u003Csys/mman.h>\n#include \u003Csys/stat.h>\n#include \u003Cunistd.h>\n\nint main(int argc, char **argv) {##$_0A$####$_0A$##    // File operations##$_0A$##    char *fname = \"gitlab.keksi\";##$_0A$####$_0A$##    FILE *fp;##$_0A$##    fp = fopen(fname, \"r\");##$_0A$##    fprintf(fp, \"Hello from GitLab Duo Vulnerability Resolution Challenge\");##$_0A$##    fclose(fp);##$_0A$####$_0A$##    // Potential chmod() timing attacks    ##$_0A$####$_0A$##    // Make the file world readable##$_0A$##    chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);##$_0A$####$_0A$##    return 0;##$_0A$##}\n","c",[44,424,425,433,440,447,454,461,465],{"__ignoreMap":78},[82,426,427,430],{"class":84,"line":85},[82,428,429],{"class":88},"#include",[82,431,432],{"class":116}," \u003Cstdio.h>\n",[82,434,435,437],{"class":84,"line":96},[82,436,429],{"class":88},[82,438,439],{"class":116}," \u003Cstring.h>\n",[82,441,442,444],{"class":84,"line":103},[82,443,429],{"class":88},[82,445,446],{"class":116}," \u003Csys/mman.h>\n",[82,448,449,451],{"class":84,"line":123},[82,450,429],{"class":88},[82,452,453],{"class":116}," \u003Csys/stat.h>\n",[82,455,456,458],{"class":84,"line":130},[82,457,429],{"class":88},[82,459,460],{"class":116}," \u003Cunistd.h>\n",[82,462,463],{"class":84,"line":344},[82,464,127],{"emptyLinePlaceholder":126},[82,466,467,470,473,476,478,482,485,488,491,494,497,500,503],{"class":84,"line":357},[82,468,469],{"class":88},"int",[82,471,472],{"class":313}," main",[82,474,475],{"class":106},"(",[82,477,469],{"class":88},[82,479,481],{"class":480},"sqxcx"," argc",[82,483,484],{"class":106},", ",[82,486,487],{"class":88},"char",[82,489,490],{"class":88}," **",[82,492,493],{"class":480},"argv",[82,495,496],{"class":106},") {##$_0A$####$_0A$##",[82,498,499],{"class":99},"    // File operations##$_0A$##    char *fname = \"gitlab.keksi\";##$_0A$####$_0A$##    FILE *fp;##$_0A$##    fp = fopen(fname, \"r\");##$_0A$##    fprintf(fp, \"Hello from GitLab Duo Vulnerability Resolution Challenge\");##$_0A$##    fclose(fp);##$_0A$####$_0A$##",[82,501,502],{"class":99},"    // Potential chmod() timing attacks    ##$_0A$####$_0A$##",[82,504,505],{"class":99},"    // Make the file world readable##$_0A$##    chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);##$_0A$####$_0A$##    return 0;##$_0A$##}\n",[13,507,508,509,511,512],{},"Le rapport SAST pour l'appel ",[44,510,417],{}," ressemblerait à ceci :\n",[55,513],{"alt":514,"src":515},"Utilisation de l'IA pour les vulnérabilités - image 10","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750098116065.png",[13,517,518,519,521,522,525,526,221],{},"La merge request ",[44,520,417],{}," proposée inclut la gestion des erreurs et corrige un autre problème potentiel affectant les fichiers accessibles en écriture dans le monde entier, en modifiant les autorisations de ",[44,523,524],{},"777"," à ",[44,527,528],{},"600",[13,530,531],{},[55,532],{"alt":533,"src":534},"Utilisation de l'IA pour les vulnérabilités - image 11","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098116066.png",[17,536,537],{},[13,538,539,540,221],{},"Essayez l'exercice asynchrone suivant : recherchez, analysez et corrigez la vulnérabilité de la fonction ",[44,541,413],{},[30,543,545],{"id":544},"nécessité-dune-prise-en-charge-accrue-de-lia-par-gitlabduo","Nécessité d'une prise en charge accrue de l'IA par GitLab Duo",[13,547,548],{},"Souvent, un problème de sécurité peut être temporairement résolu par une correction rapide ou une solution de contournement qui donne aux équipes de développement le temps nécessaire pour élaborer une solution plus durable. Dans d'autres situations, le problème peut devenir plus complexe et nécessiter la désactivation des API de fonctionnalités ou l'atténuation des règles du pare-feu jusqu'à ce qu'un correctif approprié puisse être déployé en production.",[13,550,551,552,556,557,562],{},"GitLab Duo offre des fonctionnalités avancées alimentées par l'IA capables de résoudre ces problèmes.\n",[553,554,555],"strong",{},"Explication du code :"," en tant que développeur ou ingénieur en sécurité, il est essentiel de comprendre les modifications apportées au code. Dans l'IDE, utilisez la ",[23,558,561],{"href":559,"rel":560},"https://docs.gitlab.com/user/gitlab_duo_chat/examples/#explain-code-in-the-ide",[],"fonctionnalité d'explication du code"," pour avoir une meilleure compréhension du correctif proposé par l'IA pour résoudre la vulnérabilité. Vous saurez exactement quels ajustements ont été réalisés et leurs justifications.",[13,564,565,568,569,574],{},[553,566,567],{},"Analyse des causes profondes :"," si un correctif fait échouer votre pipeline, utilisez la ",[23,570,573],{"href":571,"rel":572},"https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/",[],"fonctionnalité d'analyse des causes profondes",". Cet outil identifie et explique le problème sous-jacent, ce qui vous donne les moyens de le résoudre efficacement. Après avoir appliqué les corrections nécessaires, vous pouvez relancer les tests pour vous assurer que le problème est résolu.",[13,576,577,580,581,586],{},[553,578,579],{},"Réusinage :"," même après la correction d'une vulnérabilité, il est pertinent de se demander si le code peut être amélioré pour être plus sécurisé. Dans l'IDE, ouvrez GitLab Duo Chat et utilisez l'",[23,582,585],{"href":583,"rel":584},"https://docs.gitlab.com/user/gitlab_duo_chat/examples/#refactor-code-in-the-ide",[],"action de réusinage"," pour explorer d'autres moyens plus sûrs d'écrire votre code. Cette approche proactive permet de maintenir un code base robuste et sécurisé.",[13,588,589],{},"En tirant parti de ces fonctionnalités offertes par GitLab Duo, vous pouvez aborder et résoudre les failles de sécurité en toute confiance, en veillant à la sécurité et l'efficacité de votre code.",[30,591,593],{"id":592},"et-après","Et après ?",[13,595,596],{},"Nous prévoyons d'intégrer directement l'explication et la résolution des vulnérabilités en amont du cycle du développement logiciel, dans le processus de merge request. Cette intégration vous permettra de traiter et de résoudre les vulnérabilités plus tôt dans le cycle de développement, d'optimiser votre workflow et d'améliorer la sécurité du code dès le début du projet.",[30,598,600],{"id":599},"lancez-vous-dès-maintenant-avec-gitlabduo","Lancez-vous dès maintenant avec GitLab Duo",[13,602,603,604,609,610,615,616,621],{},"Consultez notre ",[23,605,608],{"href":606,"rel":607},"https://docs.gitlab.com/user/gitlab_duo/turn_on_off/",[],"documentation"," pour activer les fonctionnalités offertes par GitLab Duo. De plus, l'",[23,611,614],{"href":612,"rel":613},"https://docs.gitlab.com/user/application_security/vulnerabilities/#explaining-a-vulnerability",[],"explication des vulnérabilités"," et la ",[23,617,620],{"href":618,"rel":619},"https://docs.gitlab.com/user/application_security/vulnerabilities/#vulnerability-resolution",[],"résolution des vulnérabilités"," de GitLab Duo seront bientôt disponibles dans GitLab Auto-géré et GitLab Dedicated.",[17,623,624],{},[13,625,21,626,630],{},[23,627,27],{"href":628,"rel":629},"https://about.gitlab.com/gitlab-duo-agent-platform/#free-trial",[]," pour profiter des avantages de la correction des vulnérabilités au sein de votre entreprise !",[632,633,635],"h4",{"id":634},"en-savoir-plus-sur-le-développement-de-gitlab-duo","En savoir plus sur le « Développement de GitLab Duo »",[637,638,639,646,652,658,665,671],"ul",{},[163,640,641],{},[23,642,645],{"href":643,"rel":644},"https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-ai-impact-analytics-dashboard-measures-the-roi-of-ai/",[],"Comment nous validons et testons les modèles d'IA à grande échelle",[163,647,648],{},[23,649,651],{"href":643,"rel":650},[],"Mesurer le ROI de l’IA avec le tableau de bord d'analyse d'impact",[163,653,654],{},[23,655,657],{"href":643,"rel":656},[],"Comment nous utilisons nos propres fonctionnalités d'IA",[163,659,660],{},[23,661,664],{"href":662,"rel":663},"https://about.gitlab.com/fr-fr/blog/how-gitlab-duo-helps-secure-and-thoroughly-test-ai-generated-code/",[],"Tester et sécuriser le code généré par l'IA",[163,666,667],{},[23,668,670],{"href":571,"rel":669},[],"L'IA combinée à l'analyse des causes profondes pour réparer les pipelines CI/CD",[163,672,673],{},[23,674,677],{"href":675,"rel":676},"https://about.gitlab.com/fr-fr/blog/developing-gitlab-duo-a-roundup-of-recent-chat-enhancements/",[],"Tour d'horizon des dernières améliorations de GitLab Duo Chat",[679,680,681],"style",{},"html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sqxcx, html code.shiki .sqxcx{--shiki-default:#E36209}",{"title":78,"searchDepth":96,"depth":96,"links":683},[684,685,688,689,690,691],{"id":32,"depth":96,"text":33},{"id":64,"depth":96,"text":65,"children":686},[687],{"id":148,"depth":103,"text":149},{"id":255,"depth":96,"text":256},{"id":544,"depth":96,"text":545},{"id":592,"depth":96,"text":593},{"id":599,"depth":96,"text":600},"ai","2024-07-15","Ce tutoriel montre comment l'explication et la résolution des vulnérabilités de GitLab Duo, vous aident à résoudre rapidement les vulnérabilités.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098106/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098106040.png",{},"/fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",{"title":5,"description":694,"ogTitle":5,"ogDescription":694,"noIndex":701,"ogImage":697,"ogUrl":702,"ogSiteName":703,"ogType":704,"canonicalUrls":702},false,"https://about.gitlab.com/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","https://about.gitlab.com","article","developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","fr-fr/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",[708,709,710,711,712],"AI","security","product","features","tutorial","BlogPost","2024-08-02","OojHVxPmbQ3gpAnaJTbOA25-_A5sW93_qKCzSo8XR18",{"logo":717,"freeTrial":722,"sales":727,"login":732,"items":737,"search":1066,"minimal":1102,"duo":1121,"switchNav":1130,"pricingDeployment":1141},{"config":718},{"href":719,"dataGaName":720,"dataGaLocation":721},"/fr-fr/","gitlab logo","header",{"text":723,"config":724},"Commencer un essai gratuit",{"href":725,"dataGaName":726,"dataGaLocation":721},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":728,"config":729},"Demander une démo",{"href":730,"dataGaName":731,"dataGaLocation":721},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":733,"config":734},"Connexion",{"href":735,"dataGaName":736,"dataGaLocation":721},"https://gitlab.com/users/sign_in/","sign in",[738,767,869,874,988,1044],{"text":739,"config":740,"menu":742},"Plateforme",{"dataNavLevelOne":741},"platform",{"type":743,"columns":744},"cards",[745,751,759],{"title":739,"description":746,"link":747},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":748,"config":749},"Explorer notre plateforme",{"href":750,"dataGaName":741,"dataGaLocation":721},"/fr-fr/platform/",{"title":752,"description":753,"link":754},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":755,"config":756},"Découvrir GitLab Duo",{"href":757,"dataGaName":758,"dataGaLocation":721},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":760,"description":761,"link":762},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":763,"config":764},"En savoir plus",{"href":765,"dataGaName":766,"dataGaLocation":721},"/fr-fr/why-gitlab/","why gitlab",{"text":768,"left":126,"config":769,"menu":771},"Produit",{"dataNavLevelOne":770},"solutions",{"type":772,"link":773,"columns":777,"feature":848},"lists",{"text":774,"config":775},"Voir toutes les solutions",{"href":776,"dataGaName":770,"dataGaLocation":721},"/fr-fr/solutions/",[778,803,826],{"title":779,"description":780,"link":781,"items":786},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":782},{"icon":783,"href":784,"dataGaName":785,"dataGaLocation":721},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[787,791,794,799],{"text":788,"config":789},"CI/CD",{"href":790,"dataGaLocation":721,"dataGaName":788},"/fr-fr/solutions/continuous-integration/",{"text":752,"config":792},{"href":757,"dataGaLocation":721,"dataGaName":793},"gitlab duo agent platform - product menu",{"text":795,"config":796},"Gestion du code source",{"href":797,"dataGaLocation":721,"dataGaName":798},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":800,"config":801},"Livraison de logiciels automatisée",{"href":784,"dataGaLocation":721,"dataGaName":802},"Automated software delivery",{"title":804,"description":805,"link":806,"items":811},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":807},{"href":808,"dataGaName":809,"dataGaLocation":721,"icon":810},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[812,816,821],{"text":813,"config":814},"Tests de sécurité des applications",{"href":808,"dataGaName":815,"dataGaLocation":721},"Application security testing",{"text":817,"config":818},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":819,"dataGaLocation":721,"dataGaName":820},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":822,"config":823},"Conformité logicielle",{"href":824,"dataGaName":825,"dataGaLocation":721},"/fr-fr/solutions/software-compliance/","software compliance",{"title":827,"link":828,"items":833},"Mesures",{"config":829},{"icon":830,"href":831,"dataGaName":832,"dataGaLocation":721},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[834,838,843],{"text":835,"config":836},"Visibilité et mesures",{"href":831,"dataGaLocation":721,"dataGaName":837},"Visibility and Measurement",{"text":839,"config":840},"Gestion de la chaîne de valeur",{"href":841,"dataGaLocation":721,"dataGaName":842},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":844,"config":845},"Analyses et informations",{"href":846,"dataGaLocation":721,"dataGaName":847},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":849,"type":772,"items":850},"GitLab",[851,857,863],{"text":852,"config":853},"Entreprises",{"icon":854,"href":855,"dataGaLocation":721,"dataGaName":856},"Building","/fr-fr/enterprise/","enterprise",{"text":858,"config":859},"Pour les PME",{"icon":860,"href":861,"dataGaLocation":721,"dataGaName":862},"Work","/fr-fr/small-business/","small business",{"text":864,"config":865},"Pour le secteur public",{"icon":866,"href":867,"dataGaLocation":721,"dataGaName":868},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":870,"config":871},"Tarifs",{"href":872,"dataGaName":873,"dataGaLocation":721,"dataNavLevelOne":873},"/fr-fr/pricing/","pricing",{"text":875,"config":876,"menu":878},"Ressources",{"dataNavLevelOne":877},"resources",{"type":772,"link":879,"columns":883,"feature":977},{"text":880,"config":881},"Afficher toutes les ressources",{"href":882,"dataGaName":877,"dataGaLocation":721},"/fr-fr/resources/",[884,917,944],{"title":885,"items":886},"Premiers pas",[887,892,897,902,907,912],{"text":888,"config":889},"Installation",{"href":890,"dataGaName":891,"dataGaLocation":721},"/fr-fr/install/","install",{"text":893,"config":894},"Guides de démarrage",{"href":895,"dataGaName":896,"dataGaLocation":721},"/fr-fr/get-started/","quick setup checklists",{"text":898,"config":899},"Apprentissage",{"href":900,"dataGaLocation":721,"dataGaName":901},"https://university.gitlab.com/","learn",{"text":903,"config":904},"Documentation",{"href":905,"dataGaName":906,"dataGaLocation":721},"https://docs.gitlab.com/","product documentation",{"text":908,"config":909},"Vidéos sur les bonnes pratiques",{"href":910,"dataGaName":911,"dataGaLocation":721},"/fr-fr/getting-started-videos/","best practice videos",{"text":913,"config":914},"Intégrations",{"href":915,"dataGaName":916,"dataGaLocation":721},"/fr-fr/integrations/","integrations",{"title":918,"items":919},"Découvrir",[920,925,930,935,939],{"text":921,"config":922},"Témoignages clients",{"href":923,"dataGaName":924,"dataGaLocation":721},"/fr-fr/customers/","customer success stories",{"text":926,"config":927},"Blog",{"href":928,"dataGaName":929,"dataGaLocation":721},"/fr-fr/blog/","blog",{"text":931,"config":932},"Demo Hub",{"href":933,"dataGaName":934,"dataGaLocation":721},"/fr-fr/demo-hub/","demo hub",{"text":936,"config":937},"The Source",{"href":938,"dataGaName":929,"dataGaLocation":721},"/fr-fr/the-source/",{"text":940,"config":941},"Travail à distance",{"href":942,"dataGaName":943,"dataGaLocation":721},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":945,"items":946},"Connecter",[947,952,957,962,967,972],{"text":948,"config":949},"Services GitLab",{"href":950,"dataGaName":951,"dataGaLocation":721},"/fr-fr/services/","services",{"text":953,"config":954},"Contribuer",{"href":955,"dataGaName":956,"dataGaLocation":721},"https://contributors.gitlab.com","contribute",{"text":958,"config":959},"Communauté",{"href":960,"dataGaName":961,"dataGaLocation":721},"/community/","community",{"text":963,"config":964},"Forum",{"href":965,"dataGaName":966,"dataGaLocation":721},"https://forum.gitlab.com/","forum",{"text":968,"config":969},"Événements",{"href":970,"dataGaName":971,"dataGaLocation":721},"/events/","events",{"text":973,"config":974},"Partenaires",{"href":975,"dataGaName":976,"dataGaLocation":721},"/fr-fr/partners/","partners",{"config":978,"title":981,"text":982,"link":983},{"background":979,"textColor":980},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":984,"config":985},"Lire les articles les plus récents",{"href":986,"dataGaName":987,"dataGaLocation":721},"/fr-fr/whats-new/","whats new",{"text":989,"config":990,"menu":992},"Société",{"dataNavLevelOne":991},"company",{"type":772,"columns":993},[994],{"items":995},[996,1001,1007,1009,1014,1019,1024,1029,1034,1039],{"text":997,"config":998},"À propos",{"href":999,"dataGaName":1000,"dataGaLocation":721},"/fr-fr/company/","about",{"text":1002,"config":1003,"footerGa":1006},"Carrières",{"href":1004,"dataGaName":1005,"dataGaLocation":721},"/jobs/","jobs",{"dataGaName":1005},{"text":968,"config":1008},{"href":970,"dataGaName":971,"dataGaLocation":721},{"text":1010,"config":1011},"Leadership",{"href":1012,"dataGaName":1013,"dataGaLocation":721},"/company/team/e-group/","leadership",{"text":1015,"config":1016},"Manuel",{"href":1017,"dataGaName":1018,"dataGaLocation":721},"https://handbook.gitlab.com/","handbook",{"text":1020,"config":1021},"Relations avec les investisseurs",{"href":1022,"dataGaName":1023,"dataGaLocation":721},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1025,"config":1026},"Trust Center",{"href":1027,"dataGaName":1028,"dataGaLocation":721},"/fr-fr/security/","trust center",{"text":1030,"config":1031},"Centre pour la transparence de l'IA",{"href":1032,"dataGaName":1033,"dataGaLocation":721},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1035,"config":1036},"Newsletter",{"href":1037,"dataGaName":1038,"dataGaLocation":721},"/company/contact/#contact-forms","newsletter",{"text":1040,"config":1041},"Presse",{"href":1042,"dataGaName":1043,"dataGaLocation":721},"/press/","press",{"text":1045,"config":1046,"menu":1047},"Nous contacter",{"dataNavLevelOne":991},{"type":772,"columns":1048},[1049],{"items":1050},[1051,1056,1061],{"text":1052,"config":1053},"Contacter l'équipe commerciale",{"href":1054,"dataGaName":1055,"dataGaLocation":721},"/fr-fr/sales/","talk to sales",{"text":1057,"config":1058},"Assistance GitLab",{"href":1059,"dataGaName":1060,"dataGaLocation":721},"https://support.gitlab.com/hc/en-us","support portal",{"text":1062,"config":1063},"Portail clients GitLab",{"href":1064,"dataGaName":1065,"dataGaLocation":721},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1067,"login":1068,"suggestions":1075},"Fermer",{"text":1069,"link":1070},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1071,"config":1072},"GitLab.com",{"href":735,"dataGaName":1073,"dataGaLocation":1074},"search login","search",{"text":1076,"default":1077},"Suggestions",[1078,1081,1086,1088,1093,1098],{"text":752,"config":1079},{"href":757,"dataGaName":1080,"dataGaLocation":1074},"GitLab Duo Agent Platform",{"text":1082,"config":1083},"Suggestions de code (IA)",{"href":1084,"dataGaName":1085,"dataGaLocation":1074},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":788,"config":1087},{"href":790,"dataGaName":788,"dataGaLocation":1074},{"text":1089,"config":1090},"GitLab sur AWS",{"href":1091,"dataGaName":1092,"dataGaLocation":1074},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1094,"config":1095},"GitLab sur Google Cloud",{"href":1096,"dataGaName":1097,"dataGaLocation":1074},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1099,"config":1100},"Pourquoi utiliser GitLab ?",{"href":765,"dataGaName":1101,"dataGaLocation":1074},"Why GitLab?",{"freeTrial":1103,"mobileIcon":1108,"desktopIcon":1113,"secondaryButton":1116},{"text":1104,"config":1105},"Commencer votre essai gratuit",{"href":1106,"dataGaName":726,"dataGaLocation":1107},"https://gitlab.com/-/trials/new/","nav",{"altText":1109,"config":1110},"Icône GitLab",{"src":1111,"dataGaName":1112,"dataGaLocation":1107},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1109,"config":1114},{"src":1115,"dataGaName":1112,"dataGaLocation":1107},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1117,"config":1118},"Commencer",{"href":1119,"dataGaName":1120,"dataGaLocation":1107},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1122,"mobileIcon":1126,"desktopIcon":1128},{"text":1123,"config":1124},"En savoir plus sur GitLab Duo",{"href":757,"dataGaName":1125,"dataGaLocation":1107},"gitlab duo",{"altText":1109,"config":1127},{"src":1111,"dataGaName":1112,"dataGaLocation":1107},{"altText":1109,"config":1129},{"src":1115,"dataGaName":1112,"dataGaLocation":1107},{"button":1131,"mobileIcon":1136,"desktopIcon":1138},{"text":1132,"config":1133},"/switch",{"href":1134,"dataGaName":1135,"dataGaLocation":1107},"#contact","switch",{"altText":1109,"config":1137},{"src":1111,"dataGaName":1112,"dataGaLocation":1107},{"altText":1109,"config":1139},{"src":1140,"dataGaName":1112,"dataGaLocation":1107},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1142,"mobileIcon":1147,"desktopIcon":1149},{"text":1143,"config":1144},"Retour aux tarifs",{"href":872,"dataGaName":1145,"dataGaLocation":1107,"icon":1146},"back to pricing","GoBack",{"altText":1109,"config":1148},{"src":1111,"dataGaName":1112,"dataGaLocation":1107},{"altText":1109,"config":1150},{"src":1115,"dataGaName":1112,"dataGaLocation":1107},{"title":1152,"button":1153,"config":1157},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":763,"config":1154},{"href":1155,"dataGaName":1156,"dataGaLocation":721},"/fr-fr/gitlab-orbit/","orbit",{"layout":1158,"disabled":701},"release",{"data":1160},{"text":1161,"source":1162,"edit":1168,"contribute":1173,"config":1177,"items":1182,"minimal":1390},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1163,"config":1164},"Afficher le code source de la page",{"href":1165,"dataGaName":1166,"dataGaLocation":1167},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1169,"config":1170},"Modifier cette page",{"href":1171,"dataGaName":1172,"dataGaLocation":1167},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":953,"config":1174},{"href":1175,"dataGaName":1176,"dataGaLocation":1167},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1178,"facebook":1179,"youtube":1180,"linkedin":1181},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1183,1229,1282,1325,1357],{"title":870,"links":1184,"subMenu":1199},[1185,1189,1194],{"text":1186,"config":1187},"Voir les forfaits",{"href":872,"dataGaName":1188,"dataGaLocation":1167},"view plans",{"text":1190,"config":1191},"GitLab Premium",{"href":1192,"dataGaName":1193,"dataGaLocation":1167},"/fr-fr/pricing/premium/","why premium",{"text":1195,"config":1196},"GitLab Ultimate",{"href":1197,"dataGaName":1198,"dataGaLocation":1167},"/fr-fr/pricing/ultimate/","why ultimate",[1200],{"title":1045,"links":1201},[1202,1204,1206,1209,1214,1219,1224],{"text":1052,"config":1203},{"href":1054,"dataGaName":731,"dataGaLocation":1167},{"text":1057,"config":1205},{"href":1059,"dataGaName":1060,"dataGaLocation":1167},{"text":1207,"config":1208},"Portail clients",{"href":1064,"dataGaName":1065,"dataGaLocation":1167},{"text":1210,"config":1211},"Statut",{"href":1212,"dataGaName":1213,"dataGaLocation":1167},"https://status.gitlab.com/","status",{"text":1215,"config":1216},"Conditions d'utilisation",{"href":1217,"dataGaName":1218,"dataGaLocation":1167},"/terms/","terms of use",{"text":1220,"config":1221},"Politique de confidentialité",{"href":1222,"dataGaName":1223,"dataGaLocation":1167},"/fr-fr/privacy/","privacy statement",{"text":1225,"config":1226},"Gestion des cookies",{"dataGaName":1227,"dataGaLocation":1167,"id":1228,"isOneTrustButton":126},"cookie preferences","ot-sdk-btn",{"title":768,"links":1230,"subMenu":1239},[1231,1235],{"text":1232,"config":1233},"Plateforme DevSecOps",{"href":750,"dataGaName":1234,"dataGaLocation":1167},"devsecops platform",{"text":1236,"config":1237},"Développement assisté par l'IA",{"href":757,"dataGaName":1238,"dataGaLocation":1167},"ai-assisted development",[1240],{"title":1241,"links":1242},"Thèmes",[1243,1247,1252,1257,1262,1267,1272,1277],{"text":788,"config":1244},{"href":1245,"dataGaName":1246,"dataGaLocation":1167},"/fr-fr/topics/ci-cd/","cicd",{"text":1248,"config":1249},"GitOps",{"href":1250,"dataGaName":1251,"dataGaLocation":1167},"/fr-fr/topics/gitops/","gitops",{"text":1253,"config":1254},"DevOps",{"href":1255,"dataGaName":1256,"dataGaLocation":1167},"/fr-fr/topics/devops/","devops",{"text":1258,"config":1259},"Contrôle de version",{"href":1260,"dataGaName":1261,"dataGaLocation":1167},"/fr-fr/topics/version-control/","version control",{"text":1263,"config":1264},"DevSecOps",{"href":1265,"dataGaName":1266,"dataGaLocation":1167},"/fr-fr/topics/devsecops/","devsecops",{"text":1268,"config":1269},"Cloud-native",{"href":1270,"dataGaName":1271,"dataGaLocation":1167},"/fr-fr/topics/cloud-native/","cloud native",{"text":1273,"config":1274},"IA pour la programmation",{"href":1275,"dataGaName":1276,"dataGaLocation":1167},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1278,"config":1279},"IA agentique",{"href":1280,"dataGaName":1281,"dataGaLocation":1167},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1283,"links":1284},"Solutions",[1285,1288,1290,1295,1298,1301,1304,1307,1309,1312,1315,1320],{"text":813,"config":1286},{"href":808,"dataGaName":1287,"dataGaLocation":1167},"Application Security Testing",{"text":800,"config":1289},{"href":784,"dataGaName":785,"dataGaLocation":1167},{"text":1291,"config":1292},"Développement Agile",{"href":1293,"dataGaName":1294,"dataGaLocation":1167},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":795,"config":1296},{"href":797,"dataGaName":1297,"dataGaLocation":1167},"source code management",{"text":788,"config":1299},{"href":790,"dataGaName":1300,"dataGaLocation":1167},"continuous integration & delivery",{"text":839,"config":1302},{"href":841,"dataGaName":1303,"dataGaLocation":1167},"value stream management",{"text":1248,"config":1305},{"href":1306,"dataGaName":1251,"dataGaLocation":1167},"/fr-fr/solutions/gitops/",{"text":852,"config":1308},{"href":855,"dataGaName":856,"dataGaLocation":1167},{"text":1310,"config":1311},"PME",{"href":861,"dataGaName":862,"dataGaLocation":1167},{"text":1313,"config":1314},"Secteur public",{"href":867,"dataGaName":868,"dataGaLocation":1167},{"text":1316,"config":1317},"Éducation",{"href":1318,"dataGaName":1319,"dataGaLocation":1167},"/fr-fr/solutions/education/","education",{"text":1321,"config":1322},"Services financiers",{"href":1323,"dataGaName":1324,"dataGaLocation":1167},"/fr-fr/solutions/finance/","financial services",{"title":875,"links":1326},[1327,1329,1331,1333,1336,1338,1341,1343,1345,1347,1349,1351,1353,1355],{"text":888,"config":1328},{"href":890,"dataGaName":891,"dataGaLocation":1167},{"text":893,"config":1330},{"href":895,"dataGaName":896,"dataGaLocation":1167},{"text":898,"config":1332},{"href":900,"dataGaName":901,"dataGaLocation":1167},{"text":903,"config":1334},{"href":905,"dataGaName":1335,"dataGaLocation":1167},"docs",{"text":926,"config":1337},{"href":928,"dataGaName":929,"dataGaLocation":1167},{"text":1339,"config":1340},"Nouveautés",{"href":986,"dataGaName":987,"dataGaLocation":1167},{"text":921,"config":1342},{"href":923,"dataGaName":924,"dataGaLocation":1167},{"text":940,"config":1344},{"href":942,"dataGaName":943,"dataGaLocation":1167},{"text":948,"config":1346},{"href":950,"dataGaName":951,"dataGaLocation":1167},{"text":953,"config":1348},{"href":955,"dataGaName":956,"dataGaLocation":1167},{"text":958,"config":1350},{"href":960,"dataGaName":961,"dataGaLocation":1167},{"text":963,"config":1352},{"href":965,"dataGaName":966,"dataGaLocation":1167},{"text":968,"config":1354},{"href":970,"dataGaName":971,"dataGaLocation":1167},{"text":973,"config":1356},{"href":975,"dataGaName":976,"dataGaLocation":1167},{"title":989,"links":1358},[1359,1361,1363,1365,1367,1369,1374,1379,1381,1383,1385],{"text":997,"config":1360},{"href":999,"dataGaName":991,"dataGaLocation":1167},{"text":1002,"config":1362},{"href":1004,"dataGaName":1005,"dataGaLocation":1167},{"text":1010,"config":1364},{"href":1012,"dataGaName":1013,"dataGaLocation":1167},{"text":1015,"config":1366},{"href":1017,"dataGaName":1018,"dataGaLocation":1167},{"text":1020,"config":1368},{"href":1022,"dataGaName":1023,"dataGaLocation":1167},{"text":1370,"config":1371},"Développement durable",{"href":1372,"dataGaName":1373,"dataGaLocation":1167},"/sustainability/","Sustainability",{"text":1375,"config":1376},"Diversité, inclusion et appartenance (DIB)",{"href":1377,"dataGaName":1378,"dataGaLocation":1167},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1025,"config":1380},{"href":1027,"dataGaName":1028,"dataGaLocation":1167},{"text":1035,"config":1382},{"href":1037,"dataGaName":1038,"dataGaLocation":1167},{"text":1040,"config":1384},{"href":1042,"dataGaName":1043,"dataGaLocation":1167},{"text":1386,"config":1387},"Déclaration de transparence sur l'esclavage moderne",{"href":1388,"dataGaName":1389,"dataGaLocation":1167},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1391},[1392,1394,1396],{"text":1215,"config":1393},{"href":1217,"dataGaName":1218,"dataGaLocation":1167},{"text":1225,"config":1395},{"dataGaName":1227,"dataGaLocation":1167,"id":1228,"isOneTrustButton":126},{"text":1220,"config":1397},{"href":1222,"dataGaName":1223,"dataGaLocation":1167},[1399,1413],{"id":1400,"title":7,"body":696,"config":1401,"content":1403,"description":696,"extension":1407,"meta":1408,"navigation":126,"path":1409,"seo":1410,"stem":1411,"__hash__":1412},"blogAuthors/en-us/blog/authors/michael-friedrich.yml",{"template":1402},"BlogAuthor",{"name":7,"config":1404},{"headshot":1405,"ctfId":1406},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi","yml",{},"/en-us/blog/authors/michael-friedrich",{},"en-us/blog/authors/michael-friedrich","lJ-nfRIhdG49Arfrxdn1Vv4UppwD51BB13S3HwIswt4",{"id":1414,"title":8,"body":696,"config":1415,"content":1416,"description":696,"extension":1407,"meta":1420,"navigation":126,"path":1421,"seo":1422,"stem":1423,"__hash__":1424},"blogAuthors/en-us/blog/authors/alana-bellucci.yml",{"template":1402},{"name":8,"config":1417},{"headshot":1418,"ctfId":1419},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664907/Blog/Author%20Headshots/abellucci-headshot.jpg","abellucci",{},"/en-us/blog/authors/alana-bellucci",{},"en-us/blog/authors/alana-bellucci","3yZkXKzugCivW5k4M4NhFUWGwSBpmKUIdSB4MT4yl4U",[1426,1433,1441],{"title":1427,"description":1428,"heroImage":1429,"category":692,"date":1430,"authors":1431,"slug":1432,"externalUrl":696},"Moderniser Java avec Cursor et GitLab","Ce tutoriel commence par la correction ciblée de tests, introduit des murs qualité et met en œuvre des modifications de code en tenant compte du contexte du cycle de développement, des tests et des preuves de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-08-12",[7],"modernize-java-with-cursor-and-gitlab",{"title":1434,"description":1435,"heroImage":1436,"category":692,"date":1437,"authors":1438,"slug":1440,"externalUrl":696},"Comment utiliser des agents d'IA pour migrer la limitation de débit de GitLab","Découvrez comment notre équipe composée de trois personnes a utilisé GitLab Duo Agent Platform, ainsi que d'autres outils d'IA, pour migrer avec succès le système de limitation de débit et les leçons que nous en avons tirées.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773075582/yiosxfhwk8rfkulrtchv.png","2026-08-10",[1439],"Sam Wiskow","ai-agents-for-migrating-rate-limiting-system",{"title":1442,"description":1443,"heroImage":1444,"category":692,"date":1445,"authors":1446,"slug":1448,"externalUrl":696},"Codage agentique : le contexte fait la différence","Les agents de codage accélèrent le développement. Grâce au contexte dans GitLab, les entreprises évitent les correctifs superficiels et raccourcissent les cycles de revue.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773856365/gsx2c0vqlswox3ldmq88.jpg","2026-08-03",[1447],"Jessica Taylor","agentic-coding-only-as-good-as-context",{"promotions":1450},[1451,1464,1475,1486],{"id":1452,"categories":1453,"header":1454,"text":1455,"button":1456,"image":1461},"ai-modernization",[692],"L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1457,"config":1458},"Obtenez votre score de maturité IA",{"href":1459,"dataGaName":1460,"dataGaLocation":929},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1462},{"src":1463},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1465,"categories":1466,"header":1467,"text":1455,"button":1468,"image":1472},"devops-modernization",[710,1266],"Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1469,"config":1470},"Obtenez votre score de maturité DevOps",{"href":1471,"dataGaName":1460,"dataGaLocation":929},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1473},{"src":1474},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1476,"categories":1477,"header":1478,"text":1455,"button":1479,"image":1483},"security-modernization",[709],"Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1480,"config":1481},"Obtenez votre score de maturité en matière de sécurité",{"href":1482,"dataGaName":1460,"dataGaLocation":929},"/fr-fr/assessments/security-modernization-assessment/",{"config":1484},{"src":1485},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1487,"paths":1488,"header":1491,"text":1492,"button":1493,"image":1498},"github-azure-migration",[1489,1490],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1494,"config":1495},"Découvrez les différences entre GitLab et GitHub",{"href":1496,"dataGaName":1497,"dataGaLocation":929},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1499},{"src":1474},{"header":1501,"blurb":1502,"button":1503,"secondaryButton":1507},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":723,"config":1504},{"href":1505,"dataGaName":726,"dataGaLocation":1506},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1052,"config":1508},{"href":1054,"dataGaName":731,"dataGaLocation":1506},1786803764776]