🔍 Sujet : Polyglot software analysis
🧩 Contexte :
Berger-Levrault développe de nombreuses applications, certaines utilisant plusieurs langages de programmation et d’autres reposant sur des microservices, ce qui entraîne la présence de plusieurs artefacts qui communiquent entre eux.
Au sein de la DRIT (Direction de la Recherche et de l’Innovation Technologique), l’équipe LabGL utilise principalement Moose pour analyser les logiciels de BL.
Cependant, Moose est conçu pour analyser des logiciels monolithiques : lorsqu’un logiciel contient plusieurs langages, il génère un modèle distinct pour chacun d’eux, sans les relier, il ne détecte pas les microservices appartenant à un même logiciel, même si ceux-ci en font effectivement partie.
L’analyse polyglotte est encore faiblement appliquée en général, et pour Moose elle est peu introduite. Pour avancer, il est nécessaire de commencer par la génération de métamodèles permettant de représenter divers langages (Python, TypeScript, C#, VB, Go, R…).
Une solution existe pour générer une première version des métamodèles FAST, capables de représenter des AST (Abstract Syntax Tree) du code source, grâce à Tree-Sitter, qui sait parser plusieurs langages et produire des modèles.
Cependant, la génération des métamodèles FAST avec Tree-Sitter reste incomplète, notamment parce qu’il manque deux compléments très importants :les tests et les propriétés
🎯 Objectif :
Le stage aura pour objectif d’automatiser la génération des tests et des propriétés pour chaque métamodèle FAST généré.
Pour cela, le/la stagiaire devra s’appuyer sur les dépôts Tree-Sitter de chaque langage, qui fournissent de nombreux exemples couvrant la majorité des nœuds des métamodèles.
L’utilisation de l’intelligence artificielle pourra être envisagée pour analyser ces exemples et les associer automatiquement aux nœuds correspondants.
🛠️ Missions :
Explorer Pharo et Moose (Famix, FAST, MoTion actuellement) étant débutant. (1 semaine)
Ajouter 5 propriétés pour FASTTypeScript avec 5 tests manuellement pour pouvoir comprendre comment ça fonctionne (1semaine)
Faire des recherches pour comprendre:
- Comment on peut automatiser la génération des tests en utilisant l’IA ou autre outil
- Est-ce que l’IA peut comprendre un exemple, ça donne quoi …
Générer des métamodèles FAST: on souhaite commencer par Python, et on peut continuer par C#, VB …
Travailler sur la génération des propriétés des nodes (comme par exemple pour FASTTypeScriptClass on a des proriétés comme ‘body’ et ‘name’).
DIVERSITE ET INCLUSION : CHEZ NOUS, C’EST PLUS QU’UNE POLITIQUE, C’EST UNE FORCE !
Nous nous engageons à :
Parce que la singularité de chacun est une richesse, nous mettons tout en place pour que chaque collaboratrice et collaborateur puisse s'exprimer et s'épanouir pleinement.
Rencontrez Sandra, Développeuse Full stack
Rencontrez Xavier, Chief data Officer
Ces entreprises recrutent aussi au poste de “Développement de logiciels et de sites Web”.