Clever-Commit : Identifier les bugs et régressions du code grâce à l’IA

Ubisoft La Forge : le laboratoire des savants fous de l’Intelligence artificielle. Ubisoft, l’éditeur français mais néanmoins géant du jeu vidéo, et Mozilla, éditeur de Firefox, ont signé en février dernier un partenariat pour l’utilisation conjointe et l’amélioration commune de Clever-Commit, l’assistant au développement d’Ubisoft.

La Forge, le labo d’Ubisoft

Clever-Commit a été développé dans le lab La Forge d’Ubisoft Montréal. Cet outil contribue déjà au développement d’importants titres AAA de l’éditeur français en aidant les développeurs à détecter et corriger les bugs. Rappelons que les titres AAA représentent des jeux dont le développement est long et surtout complexe. Ils représentent les produits phares de l’éditeur. Clever-Commit utilise à cette fin des techniques de machine learning en vue d’identifier d’éventuels bugs et régressions futurs. Il se base pour cela sur les erreurs précédemment rencontrées et s’appuie sur du Deep Learning pour suggérer des corrections aux développeurs. Mozilla, grâce à ce partenariat, va pouvoir l’implémenter dans le processus de développement de votre navigateur préféré, ou non, Firefox. La fondation va travailler à son amélioration pour les langages C++, Javascript et Rust, un langage récemment créé par Mozilla. Clever-Commit analyse le code de chaque contribution (livraison de code par un développeur) au référentiel central (dépôt de code) dans le but de détecter des bugs ou des régressions présents et surtout à venir. C’est Yves Jacquier, le directeur d’Ubisoft La Forge, qui a fait l’annonce de cette collaboration lors du D.I.C.E. Summit 2019. Ubisoft La Forge a initié ce projet avec l’Université Concordia. La Forge est en quelque sorte un laboratoire de prototypage, un cabinet d’études R & D au sein d’Ubisoft Montréal. En résumé, Clever-Commit est une technologie d’Intelligence artificielle développée dans le but d’aider les programmeurs à évaluer si une modification du code peut provoquer de nouveaux bugs ne serait-ce que par « effet de bord ».

Prédiction des bugs avec Clever-Commit

Clever-Commit s’appelle ainsi simplement parce qu’il est capable, grâce à l’IA, d’identifier les bugs lors du « commit », la phase au cours de laquelle un développeur publie son code pour l’ensemble de l’équipe. Il est « intelligent » au moment du commit. L’assistant propose aussi des corrections ou améliorations du code. C’est l’étude du code des développements passés qui apprend à l’IA à mieux identifier les bugs – encore le Deep Learning. Et, de fil en aiguille, de bug en bug plutôt, l’outil apprend et se perfectionne. Chez Ubisoft et les autres éditeurs de jeux complexes, à coder, pas forcément à jouer, heureusement, la conception de jeux vidéo requiert un grand nombre de développeurs. L’objectif est, bien évidemment, de gagner du temps dans ce processus complexe et d’améliorer la qualité des logiciels. Cet assistant sera désormais utilisé par les développeurs de Firefox. « Mozilla va commencer par utiliser l’outil à l’étape de la révision du code. Si les résultats sont jugés satisfaisants, il sera employé à d’autres étapes du processus de développement, plus particulièrement lors de l’automatisation », dixit Mozilla. Clever-Commit avait été présenté l’an dernier en tant que prototype du nom de Commit-Assistant. Tout d’abord testé avec des données amassées lors du développement de jeux vidéo, le prototype avait ensuite été transféré au Groupe Technologique d’Ubisoft, qui a eu pour mission de l’adapter pour divers types de projets. Microsoft Risk Detection, l’IA corrective de Microsoft, est essentiellement basée sur la technique du fuzzing.

Nettoyer le code grâce à l’Intelligence artificielle

Clever-Commit utilise l’IA – plus précisément le Machine Learning – pour analyser les bugs passés et détecter des morceaux de code susceptibles de produire les mêmes types d’erreurs. Il s’appuie par ailleurs sur des techniques d’apprentissage profond – le Deep Learning – en vue de suggérer de possibles résolutions des problèmes aux développeurs. Selon Ubisoft, le gain de temps serait de 20 à 70 %, selon les projets, sur la durée globale du développement. Cela inclue donc logiquement la conception, le testing et le débogage. D’après le responsable de la gestion des lancements et de la qualité de Firefox, Sylvestre Ledru, « en intégrant CleverCommit au flux de développement, nous améliorerons le processus de programmation de Firefox en repérant les tendances en matière de bogues et en identifiant plus tôt les correctifs antérieurs, à une étape où corriger un bogue coûte beaucoup moins cher qu’après la parution ». Cela devrait avoir pour conséquence de réduire le temps et les ressources consacrés à la correction des bugs du navigateur et d’offrir des releases bien plus stables. Ubisoft compte par le biais de ce partenariat signé avec Mozilla – qui, soit dit en passant, ne comporte à priori aucune dimension financière – accélérer l’amélioration de son assistant en supportant notamment de nouveaux langages de programmation. Ubisoft pourra aussi profiter des données issues de la programmation de Firefox et de l’expérience de ses développeurs pour enrichir CleverCommit. En l’état actuel des choses, c’est un outil interne à Ubisoft et il n’est pas disponible en Open source. L’accord conclu ne concerne que Mozilla.

Contribution de Mozilla

À partir de maintenant, Mozilla va également contribuer au développement de l’outil. « Travailler avec Mozilla sur Clever-Commit va nous permettre de prendre en charge d’autres langages de programmation et d’améliorer les performances générales de l’outil », a déclaré Mathieu Nayrolles, architecte technique, data scientist et membre du Groupe Technologique d’Ubisoft Montréal. Spécialiste du Web, Mathieu Nayrolles va fournir son expertise dans les langages de programmation C++, Rust et Javascript. Son expérience en matière d’analyse de code C++ et de systèmes de suivi des bugs est loin d’être négligeable pour l’avancement du projet. Alors que CleverCommit contribue déjà au processus de développement d’importants titres d’Ubisoft, l’éditeur est en train de l’intégrer pour d’autres marques. Mozilla va pour sa part intégrer Clever-Commit au flux de développement de Firefox. L’éditeur devrait commencer par l’utiliser à l’étape de la révision du code. Si les résultats s’avèrent concluants, il sera implémenté à d’autres étapes du processus de programmation, sans doute en priorité dans les phases d’automatisation (génération automatisée de portions de code).  L’idée poursuivie est d’analyser le code de Firefox au moment des commit (contribution/soumission de nouveau code dans le dépôt du projet). Clever-Commit utilise une base évolutive de signatures de bugs qu’il analyse grâce à des algorithmes de Machine learning. Lorsqu’il détecte du code suspect, il alerte automatiquement la ou les personnes concernées en proposant d’éventuelles corrections. 60 % des bugs et régressions seraient ainsi identifiés en amont comparativement au process de développement classique utilisé auparavant. Actuellement, le système ferait remonter 30 % de faux positifs, mais cela devrait évoluer progressivement à la baisse au fur et à mesure que la base de signatures de bugs s’enrichit, et que l’outil se forme de ses erreurs passées.  Clever-Commit ne s’arrête pas à la détection. Il va plus loin en suggérant des correctifs pour remplacer le code défaillant ou dangereux. La charge d’un développeur serait ainsi réduite d’au moins 20 %, temps qui peut alors être employé pour de la conception au lieu du débogage fastidieux. Et, au final, l’expérience des utilisateurs que nous sommes tous s’en verra améliorée avec un navigateur internet offrant une meilleure finition.

La genèse

Yves Jacquier, responsable de La Forge, la fameuse division R&D d’Ubisoft à Montréal, a déclaré « Je pense que comme beaucoup de bonnes idées, on se demande : comment se fait-il que nous n’y ayons pas penser avant ? » Son département travaille en partenariat avec des universités locales, dont McGill et Concordia – avec laquelle a été initié Clever-Commit. La Forge travaille sur des projets visant à faire progresser le domaine de l’Intelligence artificielle dans son ensemble et non pas seulement dans l’industrie des jeux vidéo. La Forge a fourni au « Commit Assistant » une dizaine d’années de code à travers la bibliothèque de logiciels d’Ubisoft, ce qui n’est pas rien. Cela lui a permis de déterminer quelles erreurs ont été historiquement rencontrées, de référencer les corrections un des aspects les plus coûteux en termes de ressources de développement et parmi les plus laborieux de la conception de jeux. L’éditeur de jeux affirme que l’élimination des bugs au cours de la phase de développement nécessite des ressources très importantes et peut parfois absorber jusqu’à 70 % du coût de développement d’un projet. Nous ne le contredirons certainement pas sur ce point – ni sur les autres d’ailleurs : la phase de débogage de grands projets complexes peut parfois être si coûteuse et si longue que certaines sociétés ne seront pas toujours en mesure de la gérer et pourra même conduire à leur disparition faute de moyens financiers suffisants. Clever-Commit s’attaque donc à un sujet très sensible et problématique dans le monde du développement d’applications. La pyramide d’Abraham Maslow, idolâtrée des écoles de management, mais à prendre « avec beaucoup de modération » (source Wikipédia).

Les débuts de l’IA dans le processus de développement

Néanmoins, le fait de décharger le processus d’élimination de bugs à une Intelligence artificielle, même en partie, n’est pas exempt de problème. Yves Jacquier le souligne : « Vous avez besoin d’une très grosse quantité de données, mais aussi d’une énorme puissance de calcul pour traiter les données et toutes les méthodes mathématiques. Cela permet à l’IA de faire cette prédiction avec suffisamment de précision pour que le développeur fasse confiance à la recommandation. » Ce procédé ne peut donc pas, c’est clair, être utilisé pour des projets de moyenne envergure. Seuls les grands projets comme ceux cités peuvent se le permettre. Et même pour ceux-là, il est trop tôt pour évaluer les bénéfices réels de l’utilisation de Clever-Commit. Il va falloir sans doute un peu de recul pour voir comment cela affecte la création de jeux. Le facteur humain doit lui aussi être pris en considération. Les développeurs vont devoir désormais collaborer avec l’Intelligence artificielle. Cela ne sera peut-être pas si évident. « La partie la plus importante, en termes de gestion du changement, est juste de s’assurer que vous prenez les gens à bord pour leur montrer que vous êtes totalement transparent vis-à-vis de ce que vous faites avec l’IA – ce qu’il peut faire, la façon dont vous obtenez les données », fait encore remarquer Yves Jacquier. « Le fait que lorsque vous montrez à un programmeur des statistiques qui disent “ Eh, apparemment vous avez fait une erreur ! ”, vous voulez qu’il se rende compte que c’est un outil pour l’aider et aller plus vite, pas pour le remplacer. »

Fuzzing avec Microsoft Security Risk Detection

Microsoft Security Risk Detection est lui aussi un outil pour les développeurs. C’est une IA basée dans le Cloud capable d’analyser le code source d’un projet à la recherche d’éventuelles failles de sécurité. Sur ce point Security Risk Detection semble loin d’égaler Clever-Commit, mais l’annonce faite par Ubisoft et Mozilla va peut-être réveiller l’éditeur de Seattle ? Sinon, c’est toujours la même histoire : une vulnérabilité repérée avant la livraison du logiciel vaut toujours mieux qu’une vulnérabilité détectée tardivement et corrigée via un patch que les utilisateurs n’appliqueront pas tous ou du moins pas aussitôt. Microsoft Security Risk Detection se présente principalement sous la forme d’un outil de fuzzing automatisé et boosté à l’Intelligence artificielle, entièrement dans le Cloud. Rappelons que le fuzzing est une technique de détection des vulnérabilités consistant à évaluer les réactions du logiciel en lui envoyant des qui ont été appliquées et de prédire quand un développeur pourrait écrire du code avec des bugs similaires. «Il s’agit avant tout de comparer les lignes de code que nous avons créées dans le passé, les bugs qui y ont été créés et ceux qui ont été corrigés et d’ainsi trouver un moyen de créer des liens entre eux pour fournir une super-IA prédictive et corrective pour les programmeurs », explique encore Yves Jacquier. Ubisoft fomente l’espoir que le « Commit Assistant » réduira données plus ou moins aléatoires afin de tester son comportement dans des cas inhabituels. C’est, grosso-modo, le sacro-saint principe d’automatisation des tests, mais avec une IA derrière cette fois. La tâche était jusque-là l’apanage d’experts en testing qui se chargeaient d’établir des protocoles de test en écrivant pour cela du code spécifique, aidés tout de même par certains outils (Rational Rose, la famille XUnit, etc). Microsoft veut donc automatiser ce processus grâce à l’Intelligence artificielle, ce qui ne semble pas être une mauvaise idée.  Security Risk Detection se présente sous la forme d’un portail, sur lequel les développeurs peuvent uploader le fichier binaire de l’application qu’ils souhaitent tester. La plate-forme proposera plusieurs tests à la disposition de l’utilisateur afin de l’aider à identifier les différents bugs et crashs pouvant survenir. L’application SRD produit ensuite des rapports détaillés afin d’identifier et de corriger les failles détectées et offre de plus notamment la possibilité d’accéder aux paramètres ayant permis de provoquer un bug afin de pouvoir le reproduire en local. Ceci est plus qu’intéressant en matière de testing : connaître le scénario précis d’utilisation d’une application ayant provoqué un bug. Microsoft a déclaré que ce nouveau service intègre des outils de fuzzing testés et utilisés dans le développement interne de produits Microsoft depuis plusieurs années. Bon, cet argument est-il vraiment rassurant ? Là, il nous faudra un peu de temps (et de bonnes expériences…) pour nous prononcer. Ce ne sont pas les sorties un peu trop rapides de kb et sous versions Windows actuelles qui nous rassureront sur ce point. Microsoft propose également son programme pour les développeurs d’applications pour les systèmes Linux. Positionnement de l’IA d’un point de vue global par rapport au Machine Learning et au Deep learning. Et imbrication des uns avec les autres (source Wikipédia).

Résoudre des problèmes du monde réel grâce à l’IA dans les jeux

Ubisoft travaille également sur d’autres applications d’IA que la prédiction de bugs. L’amélioration considérable de l’IA dans les jeux pourrait aider à résoudre certains problèmes du monde réel. Un programmeur en IA chez Ubisoft, Olivier Delalleau pour ne pas le citer, a parlé de la conduite autonome dans le jeu Watch Dogs 2. Prenant en exemple une voiture non-pilotée par un joueur et circulant dans un San Francisco virtuel, Delalleau a expliqué comment, au départ, il était difficile pour l’IA d’apprendre à bien négocier les virages : « Les voitures en question n’ont pas freiné dans les virages parce qu’elles ne considéraient pas que c’était une bonne solution. C’est assez difficile pour une IA d’apprendre à freiner, parce qu’elle ne considère pas d’emblée que cela représente la meilleure solution la plupart du temps. Vous devez l’aider à comprendre cela.». Delalleau a utilisé pour ce faire l’apprentissage par renforcement, une forme d’apprentissage automatique où on « guide » l’IA pour l’aider à apprendre cette compétence. Ubisoft lui a fourni des milliers d’exemples de freinage pour que le système apprenne qu’il pouvait atteindre ses objectifs plus efficacement en suivant ces règles de pilotage. Le résultat a été concluant : les voitures pilotées par l’IA ont commencé à prendre les virages plus lentement. Cela a rendu la représentation de San Francisco plus réaliste dans le jeu et a réduit les accidents aléatoires. Cette technique peut être employée pour les vraies voitures autonomes, après un premier testing virtuel sans risque pour les piétons et les passagers.

Les applications de l’IA dans les jeux

L’IA a devant elle de nombreux domaines d’application dans les jeux vidéo. Les personnages non-joueurs (PNJ), par exemple, ont un comportement souvent limité justement parce qu’ils suivent des algorithmes « primaires », séquentiels, n’étant pas gérés par une vraie IA. Ubisoft a implémenté dans son jeu Far Cry 5 une version virtualisée de la hiérarchie des besoins de Maslow, la célèbre théorie psychologique des facteurs de motivation du comportement humain. Cela apporte aux acteurs du jeu des motivations pour leur comportement, modelées sur les strates d’auto-préservation de la pyramide de Maslow. Lorsqu’un joueur dans Far Cry 5 rencontre un personnage non-joueur, deux facteurs sont pris en compte : la confiance et la morale. Si vous sortez votre arme face à quelqu’un que vous n’avez jamais rencontré auparavant, ce personnage réagira avec méfiance et crainte et il vous demandera de baisser votre arme. Si le PNJ, grâce à l’analyse de l’IA, reconnaît une menace persistante de votre part, il lancera alors une attaque à votre encontre pour se protéger, comme dans la vraie vie – par exemple aux États-Unis. Idem pour les animaux qui pourront avoir un comportement variable en fonction de celui du joueur. Ces « petites choses » ajoutent de la profondeur au réalisme au monde virtuel concerné, ce qui est loin d’être négligeable. L’Intelligence artificielle est clairement l’un des points forts du mode « solo » des jeux.