Repairnator, un robot autonome pour réparer les bugs informatiques

Date:
Mis à jour le 08/04/2021
À l’image de Terminator, Repairnator est un robot doté d’une intelligence artificielle. Dernier né de l’équipe-projet Spirals*, il a été développé dans le cadre de l’ADT LibRepair obtenue en 2016 par Simon Urli, chercheur postdoctorant. Repairnator est le premier repair bot capable de faire de la réparation automatique de bugs informatiques à grande échelle. En somme, un logiciel efficace et autonome qui sauve des erreurs de code les autres logiciels. Une solution en open source mise à disposition de tous les développeurs.
Illustration oeil
© Inria / Photo H. Raguet

Un logiciel qui répare automatiquement les bugs logiciels

Les chatbots ont le vent en poupe. Facebook, SNCF, Amazon Eco, Google Home, ils se retrouvent partout.

« Ce sont des robots conversationnels, des logiciels programmés pour simuler automatiquement une conversation et interagir avec l’utilisateur », précise Lionel Seinturier, responsable de l’équipe-projet Spirals. «  Repairnator n’est pas un chatbot, mais un repair bot : un logiciel informatique qui propose de réparer automatiquement les bugs d’autres logiciels. 
Il s’adresse aux développeurs et fonctionne sur les plates-formes collaboratives d’échange de code comme 
GitHub, qui a récemment été racheté par Microsoft », ajoute Simon Urli. «  Le robot analyse en permanence les codes informatiques déposés par les développeurs sur ces plates-formes qui offrent des services dits "d’intégration continue". ». Il repère les erreurs de programmation, essaye de les reproduire en local et propose, sous la forme de "patchs" envoyés par mail aux administrateurs du bot, des solutions de réparation automatique. « Disponible en open sourceRepairnator fait gagner du temps aux développeurs », note Simon Urli. « Avant, ils disposaient d’outils d’aide au développement sur leurs propres machines. Repairnator est un outil automatique déporté pour les plates-formes collaboratives, et il présente l’immense avantage de capitaliser sur tout un ensemble de connaissances et de données. »     

Repairnator, l’entrée des développeurs dans l’ère du Big Data

Lionel Seinturier explique que le repair bot est « doté d’une intelligence artificielle issue de techniques poussées d’apprentissage automatique. Il est capable de corriger les bugs identifiés à un instant donné en recherchant et en adaptant les solutions déjà utilisées par le passé pour réparer des erreurs similaires. »  L’idée est de mettre le Big Data à la portée des développeurs. « Repairnator offre une base de données unique au monde et sans cesse enrichie pour faire de la réparation automatique de logiciels à grande échelle et de manière efficace »,confirme le chercheur. Pour fonctionner, le repair bot utilise des algorithmes de réparation automatique codés en Java et développés par l'équipe-projet Spirals dans le cadre de quatre thèses soutenues entre 2014 et 2018 : celles de Matias Martinez, Benoit Cornu, Vincenzo Musco et Thomas Durieux. « Rien n’aurait été possible sans leurs travaux, l’expérience en génie logiciel de Simon Urli, et l’initiative de Martin Monperrus, ancien chercheur de Spirals désormais à l’Institut royal de technologie (KTH) de Stockholm. » L’équipe-projet poursuit sa collaboration avec Martin Monperrus spécialisé dans la réparation automatique, et travaille sur le développement d’une base de données de bugs informatiques avec l’université fédérale d’Uberlândia au Brésil.

Un logiciel prochainement autonome en tout point 

Lancé en 2017 dans sa première version, Repairnator a constaté près de 40 000 bugs sur GitHub. Il est parvenu à en reproduire environ un tiers et sur une dizaine de solutions proposées, 6 patchs ont été intégrés par les développeurs pour réparer leurs logiciels. « Par rapport à la masse de bugs analysés, le pourcentage de réparations finalement réalisées est très faible », confie Simon Urli, « car il faut réussir à reproduire les erreurs, trouver des solutions adaptées à temps et que les patchs de réparation soumis soient acceptés. » Lionel Seinturier poursuit :« ce qu’il est important de voir, c’est que Repairnator a permis de corriger automatiquement, et plus vite qu’un développeur humain, 6 bugs logiciels identifiés sur GitHub. Notre repair bot suit la règle des 80-20 : il agit sur les 20% d’erreurs qui arrivent 80% du temps. » Ces résultats prometteurs ont fait l’objet d’un article** présenté à ICSE 2018, la plus importante conférence dans le domaine du génie logiciel. Une nouvelle version du repair bot est attendue pour septembre 2018, qui marque la fin de l’ADT LibRepair« Cette version sera entièrement opérationnelle et autonome. Les patchs générés devraient être plus nombreux et seront envoyés aux développeurs directement par le logiciel, sans passer par l’intervention de l’équipe qui s’était réservé cette option pour valider le fonctionnement des prototypes. »

Des perspectives et des applications dans le public et le privé

Pour repousser les limites de leur outil, les chercheurs de l’équipe-projet Spirals envisagent des partenariats avec des laboratoires du public portés sur la réparation automatique.
« L’objectif global est d’augmenter la proportion de patchs acceptés et de réparations effectuées » remarque Lionel Seinturier. « Repairnator mérite également d’être développé pour pouvoir s’appliquer à de nouvelles catégories de bugs et d’autres langages de programmation. Sans voir trop loin, il y a encore des perspectives de recherche pour les cinq années à venir. »
Le repair bot pourrait séduire toutes les plates-formes publiques d’échange de code comme GitHub, mais aussi les industriels et les sociétés privées de services en informatique comme IBM et Capgemini, qui œuvrent sur de très gros projets de développement de codes et de programmes informatiques. « Nous avons déjà engagé des discussions pour intégrer Repairnator à Travis CI, le service d’intégration continue par défaut sur GitHub » , conclut Simon Urli, bientôt sur le départ d’une aventure qui n’est pas près d’en finir.

* L’équipe-projet Spirals, « Auto-adaptation pour les services répartis et les systèmes logiciels à large échelle », est commune à Inria et à l’Université de Lille. Au sein de l’UMR 9189 CNRS - Centrale Lille - Université de Lille, CRIStAL. 

** How to design a program repair bot? Insights from the Repairnator project. Simon Urli, Zhongxing Yu, Lionel Seinturier, Martin Monperrus. ICSE-SEIP 2018, Gothenburg, Sweden.