Repairnator, un bot capable de rivaliser avec les développeurs pour trouver et corriger des bogues,
Un pas vers l'automatisation du codage ?

Le , par Michael Guilloux, Chroniqueur Actualités
La programmation peut-elle être automatisée ? En réponse à cette question, bon nombre de développeurs ici nous diront probablement de venir reposer la question dans 10 ou 20 ans. Mais une chose est sure, c'est que certaines tâches faisant partie de la programmation devraient et peuvent être automatisées. C'est le cas par exemple de la correction de bogues.

Comme on a coutume de le dire, programmer c'est l'art de créer des bogues. Alors, les programmes informatiques étant de plus en plus complexes, des bogues apparaissent de manière inévitable au cours du processus de développement. Raison pour laquelle la recherche des bogues ainsi que l'écriture de patchs pour les corriger font partie intégrante de tout projet de développement logiciel.

Cependant, la recherche de bogues et le développement de correctifs prennent beaucoup de temps et mobilisent des ressources importantes. C'est pourquoi plusieurs chercheurs et entreprises ont travaillé, et continuent de le faire, sur des moyens d'automatiser ce processus. Mais jusque-là, les résultats n'ont pas vraiment été à la hauteur des attentes, puisque les bots développés pour réaliser ces tâches ont tendance à être bien plus lents que les humains, sans oublier la qualité du code qu'ils produisent. On ne sera satisfait des solutions d'automatisation de recherche et de corrections de bogues que si le résultat est comparable est à celui d'un développeur humain. Mais quand pourrait-on atteindre cette étape ? La question se pose...

Pour une équipe de chercheurs de l'Institut royal de technologie de Stockholm, pilotée par Martin Monperrus, ce rêve ne devrait pas tarder à se réaliser. Et c'est ce que vient de prouver Repairnator, un bot ou programmateur automatisé qu'ils ont développé et qui pourrait rivaliser avec les développeurs humains pour trouver des bogues et écrire des correctifs de haute qualité. Repairnator a en effet été capable de trouver des bogues et écrire des correctifs assez rapidement et de bonne qualité pour être acceptés et intégrés dans des bases de code de projets open source.


Monperrus et ses coéquipiers ont testé Repairnator en le déguisant en développeur humain et en lui permettant de rivaliser avec les humains pour développer des correctifs sur GitHub. Le test consistait notamment pour le bot à « générer automatiquement des patchs qui corrigent les échecs de génération (échecs de builds) puis à les montrer aux développeurs humains, pour enfin voir si ces développeurs les accepteraient comme des contributions valables à la base de code », déclare Monperrus.

Les chercheurs ont pour cela créé un utilisateur GitHub appelé Luc Esape, qui semblait être un ingénieur logiciel travaillant dans leur laboratoire. « Luc a une photo de profil et ressemble à un développeur junior, désireux de faire des contributions open source sur GitHub », disent-ils. Mais Luc est en réalité Repairnator déguisé en développeur humain. Ce camouflage était nécessaire parce que les modérateurs humains ont tendance à évaluer le travail des bots et des humains différemment. Or les chercheurs voulaient tester l'hypothèse selon laquelle le bot était comparable aux humains dans ce domaine.

Le test s'est déroulé en deux étapes. Lors de la première étape, de février à décembre 2017, les chercheurs ont positionné Repairnator sur une liste fixe de 14 188 projets GitHub à la recherche d’erreurs. Et ils ont constaté que leur prototype pouvait effectuer environ 30 tentatives de corrections de bogues par jour. En chiffres, Repairnator a analysé plus de 11 500 builds avec échecs. Parmi celles-ci, il a été capable de reproduire l'erreur dans plus de 3000 cas et il a ensuite développé un patch dans 15 cas. Cependant, aucun de ces correctifs n'a été accepté dans les builds, car Repairnator prenait trop de temps pour les développer ou écrivait des correctifs qui étaient peu performants pour être acceptés.

Mais dans la deuxième étape du test, qui s'est déroulée de janvier à juin 2018, Repairnator a connu plus de succès. Après des améliorations qui lui ont été apportées, le 12 janvier, Repairnator a écrit un correctif qu'un modérateur humain a accepté dans une build. « En d'autres termes, Repairnator pouvait rivaliser avec les humains pour la première fois », estiment les chercheurs. Au cours des mois qui ont suivi, le programmeur automatisé a pu produire quatre autres correctifs qui ont été acceptés dans des bases de code de projets open source. Les chercheurs se sont réjouis de ce travail impressionnant qui, selon eux, est une étape importante dans la recherche en génie logiciel sur la réparation automatique de programmes.

Source : MIT Technology Review

Et vous ?

Qu’en pensez-vous ?
Quelles sont les limites aujourd'hui de la correction automatique de bogues ?
Pensez-vous que le rêve de ces chercheurs pourrait devenir une réalité de sitôt ? Pourquoi ?
Considérez-vous ce travail comme un pas de plus vers une programmation automatisée de bout en bout ?

Voir aussi :

Qui doit bénéficier des fruits de l'automatisation des tâches sur le lieu du service ? Les programmeurs ? Leurs employeurs ? Les deux ?
Les efforts de Tech pour enseigner le codage aux enfants ne sont-ils qu'en faveur de leur réussite ? Ils viseraient à réduire les salaires
Une étude révèle que l'automatisation pourrait détruire plus de 2 millions d'emplois en France, mais va-t-elle en créer beaucoup plus ?
Les salariés français plébiscitent l'automatisation des tâches de routine, car 55 % d'entre eux y consacraient au moins 40 % de leur temps en 2017
Une banque suédoise ayant opté pour l'automatisation poussée réalise des bénéfices record, le secteur bancaire prochain eldorado de l'automatisation ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de jwar0 jwar0 - Membre actif https://www.developpez.com
le 25/10/2018 à 16:51
Généralement un problème de build se règle rapidement par un développeur/intégrateur avec un peu d'expérience.

La majorité des bugs qui arrivent :
En integ ce sont des démarrage foireux du a des soucis de config, des environnement pas raccord etc...
En Recette/production ce sont des bug runtime, et c'est ceux là qui posent le plus de problèmes, des fois non reproductible ou qui arrive 1 fois tout les 36 du mois
Avatar de Ecthelion2 Ecthelion2 - Membre extrêmement actif https://www.developpez.com
le 25/10/2018 à 16:53
Qui est-ce qui disait il y a encore quelques jours, que les développeurs ne seraient jamais ô grand jamais remplacés par des IA ?

Ca se rapproche quand même pour ceux qui, malheureusement déjà pour eux, ne font que pisser du code, quoi qu'on en dise...
Avatar de Eric80 Eric80 - Membre actif https://www.developpez.com
le 25/10/2018 à 17:05
cela me refait penser à une discussion en cours de productique en 1999 ou 2000:
1) le boulot de l'ingénieur, c'est d automatiser la production, donc in fine de créer du chômage.
2) l ingénieur logiciel doit finir par se virer lui même, en automatisant son boulot!
Avatar de DevTroglodyte DevTroglodyte - Membre expérimenté https://www.developpez.com
le 25/10/2018 à 17:21
Citation Envoyé par Ecthelion2 Voir le message
Qui est-ce qui disait il y a encore quelques jours, que les développeurs ne seraient jamais ô grand jamais remplacés par des IA ?

Ca se rapproche quand même pour ceux qui, malheureusement déjà pour eux, ne font que pisser du code, quoi qu'on en dise...
Il y a quand même une très grosse différence entre une analyse de logs formalisés pour pondre des correctifs (et quels genre de correctifs, d'ailleurs ?), et créer une application à partir de specs incomplètes d'un client final qui ne sait pas trop ce qu'il veut.
Avatar de pokap pokap - Membre du Club https://www.developpez.com
le 25/10/2018 à 17:22
Est-ce que le bot propose aussi le test de non-régression ?
Corrigé un bug c'est bien, éviter qu'il se reproduise c'est mieux.
Avatar de Anselme45 Anselme45 - Membre éprouvé https://www.developpez.com
le 25/10/2018 à 17:41
Le test consistait notamment pour le bot à « générer automatiquement des patchs qui corrigent les échecs de génération (échecs de builds) puis à les montrer aux développeurs humains, pour enfin voir si ces développeurs les accepteraient comme des contributions valables à la base de code », déclare Monperrus.
...
En chiffres, Repairnator a analysé plus de 11 500 builds avec échecs. Parmi celles-ci, il a été capable de reproduire l'erreur dans plus de 3000 cas et il a ensuite développé un patch dans 15 cas
Non, mais de qui on se moque?

1. Il s'agit de corriger des échec de build, donc des erreurs de formalisme du code (un ";" oublié, une variable non-déclarée, etc.). On ne parle pas de développer un algo entier pour corriger un problème fonctionnel

2. 15 correctifs sur 11'500 soit un taux de réussite de... 0,13%

Et ben, je ne crains pas pour mon job de développeur et je peux poursuivre sereinement ma carrière jusqu'à l'age de la retraite!
Avatar de SofEvans SofEvans - Membre expérimenté https://www.developpez.com
le 25/10/2018 à 18:08
Citation Envoyé par Anselme45 Voir le message
Non, mais de qui on se moque?

1. Il s'agit de corriger des échec de build, donc des erreurs de formalisme du code (un ";" oublié, une variable non-déclarée, etc.). On ne parle pas de développer un algo entier pour corriger un problème fonctionnel

2. 15 correctifs sur 11'500 soit un taux de réussite de... 0,13%

Et ben, je ne crains pas pour mon job de développeur et je peux poursuivre sereinement ma carrière jusqu'à l'age de la retraite!
Entièrement d'accord, le titre est carrément trompeur.
J'aimerais bien voir un bot corriger une race-condition d'un programme multi-threadé, qu'on rigole un coup ...
Avatar de transgohan transgohan - Expert éminent https://www.developpez.com
le 26/10/2018 à 7:54
Vu le taux de réussite je préfère encore prendre un stagiaire.
Avatar de NaSa NaSa - Membre régulier https://www.developpez.com
le 26/10/2018 à 7:59
Le bot peut auto-corriger ses bogues ?
Avatar de trichoko trichoko - Membre du Club https://www.developpez.com
le 26/10/2018 à 10:47
Pour ceux qui se demandent quel genre de correctifs ont été acceptés:
https://github.com/aaime/geowebcache/pull/1/commits/3f89e3a0020336f545def482a150fee8ea5ec967
https://github.com/parkito/BasicDataStructuresAndAlgorithms/pull/3/commits/343f449badbe8f1025cfe5a51f4b9427f175649c
https://github.com/dkarv/jdcallgraph/pull/2/commits/2f65b8c23e65fab8f0cdd4ee781baa2e01b5884e
https://github.com/eclipse/ditto/pull/151/commits/7ab96e373ecc55e1b942bfff4c9550c8ba5e584d
https://github.com/donnelldebnam/CodeU-Spring-2018-29/pull/59/commits/4f53c5b7331de31ec4634d01cdde7bde4f2bb88a

Et pour ceux qui ne voudraient pas aller sur les liens, les commits sont tous du genre évitement de potentielle NPE:
Code : Sélectionner tout
1
2
3
4
5
-    Map<String, Hashtag> tags = hashtagStore.getAllHashtags();
+     if (this.hashtagStore != null) {
+      Map<String, Hashtag> tags = hashtagStore.getAllHashtags();
+    }
Donc pour l'instant, rassurez vous, nous n'allons pas être remplacés par des machines avant quelques temps.
Contacter le responsable de la rubrique Accueil