Pour aider les développeurs de logiciels à trouver et à corriger les bogues logiciels, plusieurs techniques de réparation de programmes automatisées ont été introduites. Étant donné une suite de tests, les méthodes standard synthétisent généralement une réparation ou naviguent dans un espace de recherche de modifications logicielles pour trouver des variantes de réussite de la suite de tests. Les méthodes récentes de réparation de programme sont basées sur des approches d'apprentissage en profondeur. ChatGPT est l'une de ces nouvelles méthodes, qui n'est pas principalement destinée à la réparation automatisée de programmes, mais qui lui convient tout de même. Cependant, les performances de correction des bogues de ChatGPT ne sont pas encore claires.
Aussi, dans un article, des chercheurs ont évalué ChatGPT sur l'ensemble de référence de correction de bogues standard, QuixBugs, et ont comparé les performances avec les résultats de plusieurs autres approches rapportées dans la littérature.
C'est ainsi que les chercheurs ont donné 40 morceaux de code bogué à quatre systèmes de correction de code différents : ChatGPT, Codex, CoCoNut et Standard APR. Essentiellement, ils ont demandé à ChatGPT*: « Qu'est-ce qui ne va pas avec ce code*? » puis ont copié et collé le code dans la fonction de chat.
Lors du premier passage, ChatGPT a fait à peu près aussi bien que les autres systèmes. ChatGPT a résolu 19 problèmes, Codex en a résolu 21, CoCoNut en a résolu 19 et les méthodes APR standard en ont résolu sept. Les chercheurs ont trouvé que ses réponses étaient les plus similaires à Codex, ce qui n'était « pas surprenant, car ChatGPT et Codex appartiennent à la même famille de modèles de langage ».
Cependant, la possibilité de discuter avec ChatGPT après avoir reçu la réponse initiale a fait la différence, ce qui a finalement permis à ChatGPT de résoudre 31 questions et de surpasser facilement les autres, qui fournissaient des réponses plus statiques.
Et les chercheurs d'indiquer :
Un avantage puissant de ChatGPT est que nous pouvons interagir avec le système dans un dialogue pour spécifier une demande plus en détail[...]. Nous constatons que les performances de correction de bogues de ChatGPT sont compétitives par rapport aux approches communes d'apprentissage en profondeur CoCoNut et Codex et nettement meilleures que les résultats rapportés pour les approches de réparation de programme standard. Contrairement aux approches précédentes, ChatGPT offre un système de dialogue à travers lequel des informations supplémentaires, par exemple, la sortie attendue pour une certaine entrée ou un message d'erreur observé, peuvent être saisis. En fournissant de tels conseils à ChatGPT, son taux de réussite peut être encore augmenté, corrigeant 31 bogues sur 40, surpassant l'état de l'art.
Par exemple, lorsque les chercheurs ont posé la question illustrée ci-dessous, ils s'attendaient à ce que ChatGPT recommande de remplacer n^=n-1 par n&=n-1, mais la première chose que ChatGPT a dite a été*: « Je ne peux pas dire si le programme a un bogue sans plus d'informations sur le comportement attendu ». Sur la troisième réponse de ChatGPT, après plus d'incitations des chercheurs, il a trouvé le problème : « La fonction ne marche pas. Pour l'entrée 1, il semble s'agir d'une boucle infinie ».
Cependant, lorsque d'autres ont saisi la même question dans ChatGPT, il a répondu différemment. Plutôt que d'avoir à lui dire quel est le comportement attendu, il a deviné ce que c'était. ChatGPT apprend toujours sur la base des contributions des utilisateurs, et il semble qu'il ait appris ce que ce morceau de code est censé faire, peut-être des chercheurs qui ont réalisé l'étude. L'échange que les observateurs extérieurs ont eu était différent de celui des chercheurs et sera probablement différent la prochaine fois également pour d'autres curieux qui voudraient s'y essayer....
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

