IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

280PARTAGES

19  0 
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 ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de DevTroglodyte
Membre extrêmement actif 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.
8  0 
Avatar de Anselme45
Membre extrêmement actif 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!
8  0 
Avatar de SofEvans
Membre émérite 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 ...
6  0 
Avatar de Eric80
Membre éclairé 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!
5  0 
Avatar de 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.
2  0 
Avatar de pokap
Membre régulier 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.
1  0 
Avatar de 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.
1  0 
Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 26/10/2018 à 12:59
Un robot capable de rivaliser avec les développeurs pour trouver des bogues, ça s'appelle un compilateur ou un outil d'analyse de code. De nouveaux langages (ex : Rust) sont créés avec beaucoup de contrôles. De nouvelles fonctionnalités apparaissent dans des langages existants pour renforcer les contrôles. Des outils d'analyse de code se développent. On progresse et c'est une bonne chose.

Un robot capable de corriger les bogues de manière intelligente, par contre, ce serait nouveau. Mais, si on regarde les liens donnés par trichoko (merci à lui), on voit que ce n'est pas le cas de Repairnator.
En effet, dans ces liens, on voit que le robot se contente de remplacer des bouts de code de la forme :
Code : Sélectionner tout
codeQuiNecessiteUnePrecondition();
par :
Code : Sélectionner tout
1
2
if(precondition)
	codeQuiNecessiteUnePrecondition();
et il n'y a pas de else.

Ça, c'est le genre de correction qu'il ne faut surtout pas automatiser bêtement. En effet, quand une précondition est violée, c'est qu'il y a un cas particulier qui a été oublié. Du coup, une fois que cet oubli est détecté, il faut décider explicitement quoi faire dans le cas oublié. Il ne faut pas dire automatiquement que, dans le cas oublié, on ne fait rien.
1  0 
Avatar de Ryu2000
Membre extrêmement actif https://www.developpez.com
Le 29/10/2018 à 8:29
Citation Envoyé par abriotde Voir le message
Pour faire un parallèle, ce n'est pas parce qu'on a des plat cuisiné, des robot de cuisine et bien d'autres outils automatiques, que l'on ne cuisine plus... on est juste plus exigent on mange juste moins des patates à l'eau.
C'est meilleur pour la santé de manger des patates à l'eau que de la bouffe industriel.
Les plats préparé c'est bien si tu veux un cancer et d'autres problèmes de santé.
Ils contiennent beaucoup trop d'additifs dangereux et de sel. (colorant, conservateur, agents antioxydants, agent de texture (émulsifiants, épaississants, stabilisants, etc), édulcorants, acidifiants, exhausteurs de goût, etc.)

On nous fait croire que sans les produits synthétiques (engrais, pesticides, fongicide, insecticide, etc) on ne produirait pas assez de nourriture.
Sauf qu'apparemment c'est faux, avec la permaculture il est possible de produire plus et sans engrais.
Mais à cause de l'automatisation et de la volonté d'avoir des fruits et légumes identique et calibré (pour que les machines puissent récolter), on se retrouve avec une normalisation (les mêmes variétés sont cultiver partout dans le monde, sauf qu'une variété ne peut pas être adapté à toutes les conditions).
La taille des bananes (et leur courbure)
1994. Après avoir radicalement muté avec le traité de Maastricht, l'Europe s'intéresse à la banane. Dans sa réglementation No 2257/94 , la Commission européenne définit les standards de qualité des bananes appelées à être vendue sur le marché unique. Le texte, principalement à destination des grossistes et fournisseurs, divise le fruit en trois catégories : Extra, Classe 1 et Classe 2.
Avant les familles dépensaient beaucoup plus d'argent dans la nourriture.
Aujourd'hui il y a un problème d'obésité chez les pauvres (l’obésité peut mener au diabète)...
Il y a un bon et un mauvais côté.

La bonne nouvelle c'est que le bio est à la mode et on peut retrouver des tomates qui ont l'air plus naturel.
Mais bon il y a des abus dans le bio également...

Dans l'agriculture il faudrait moins de machines, moins de produits (engrais...), plus de mains d’œuvres, plus de variété local.
Il y a une théorie qui dit que si autant de gens sont devenu intolérant au gluten, c'est parce qu'aujourd'hui c'est un peu le même blé qui est cultivé partout, si il y avait plus de nuance ça irait peut être mieux.

L'automatisation n'apporte pas que des bonnes choses...
La qualité est mauvaise.
Il y a beaucoup moins de nutriments dans les aliments.
Avec les engrais les fruits ont tendance à se gorger d'eau. (et il y aussi un problème de nitrate dans le sol)

D'ailleurs dans le futur on s'apercevra que les gens d'aujourd'hui sont en moins bonne santé que les gens d'avant.
L’espérance de vie diminue.

===
L'humain n'est pas plus exigeant, il est juste plus fainéant.
C'est plus facile de manger de la merde acheté au supermarché que de cuisiner à partir d'aliment basique.
Les gens veulent passer plus de temps sur leur smartphone et moins dans leur cuisine.
Du coup ils bouffent de la merde et grignotent n'importe quoi.
1  0 
Avatar de 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
0  0