Des logiciels apprennent à améliorer des codes informatiques. Comment? En imitant les changements effectués par des humains. | Photo: shutterstock/eXpose

Les programmeurs se font déjà aider par des algorithmes capables de chercher les erreurs dans les codes ou ajouter des commentaires. Des scientifiques de l’Université de la Suisse italienne à Lugano et du Collège de William et Mary à Williamsburg (Etats-Unis) ont franchi un pas supplémentaire: ils ont entraîné un logiciel afin qu’il améliore par lui-même des codes sources. Habituellement, seuls des développeurs expérimentés assument des tâches de cette nature.

Pour que le logiciel puisse procéder automatiquement aux modifications, ils ont d’abord dû commencer par lui apprendre à identifier les changements pertinents en recourant à des réseaux neuronaux courants utilisés pour la traduction des langues naturelles. Ils lui ont ensuite enseigné comment adapter lui-même des éléments du code en lui montrant en quoi consistait ce dernier avant et après les changements apportés par des développeurs. Le logiciel a ainsi appris la façon de corriger les erreurs ou d’intégrer de nouveaux éléments. Les exemples programmés en Java provenaient de trois dépôts de codes d’Android, Google Source et Ovirt.

Dans plus 20% des cas, le logiciel d’amélioration a proposé exactement le même changement que les développeurs, un taux jugé encourageant par les chercheurs. Les autres propositions n’étaient pas nécessairement fausses, mais différentes, explique Gabriele Bavota de l’USI. «Nous voyons dans nos modèles uniquement un soutien pour les développeurs de logiciels. Les adaptations qu’ils proposent doivent être examinées et acceptées par un spécialiste, souligne le chercheur. Le dernier mot reviendra toujours au développeur et non à la machine.»

M. Tufano et al: On Learning Meaningful Code Changes via Neural Machine Translation.Arxiv (2019)