← Derniers articles
💻 computer science

Generating Complex Code Analyzers from Natural Language Questions

Ce papier présente Merlin, un système qui combine les grands modèles de langage avec le cadre d'analyse de programme CodeQL en utilisant une approche novatrice de génération itérative et d'auto-test basée sur la RAG pour répondre efficacement à des questions complexes en langage naturel concernant de grandes bases de code, améliorant ainsi considérablement la précision et l'efficacité des tâches des développeurs.

Auteurs originaux : Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

Publié 2026-05-12
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous possédiez une bibliothèque massive contenant des millions de livres (la base de code) rédigés dans une langue très spécifique et technique. Vous êtes un bibliothécaire (le développeur) qui doit trouver un motif très précis : « Trouvez chaque livre où un personnage se présente avant d'être pleinement né. »

Le faire à la main est impossible. Utiliser une simple barre de recherche pour chercher le mot « né » (comme grep) est inutile car cela manque le sens de la phrase. Demander à un assistant IA ultra-intelligent (un grand modèle de langage ou LLM) de lire toute la bibliothèque et de vous donner la réponse échoue souvent, car la bibliothèque est trop grande pour que l'IA puisse la contenir dans sa mémoire d'un coup, ou bien l'IA fait simplement de mauvaises suppositions.

Voici Merlin.

Merlin est un nouveau système qui agit comme un traducteur et un détective surpuissants. Il se place entre vous (qui parlez l'anglais naturel) et un moteur de base de données très strict et puissant appelé CodeQL (qui comprend parfaitement la structure technique du code).

Voici comment Merlin fonctionne, en utilisant des analogies simples :

1. Le Traducteur (du langage naturel vers CodeQL)

Vous posez une question à Merlin en anglais simple : « Montrez-moi tous les endroits où un constructeur appelle une méthode qui peut être modifiée plus tard. »
Merlin ne se contente pas de deviner la réponse. Au lieu de cela, il traduit votre question en une requête précise pour la base de données CodeQL. Considérez CodeQL comme une gigantesque feuille de calcul structurée de tout votre code. Merlin rédige une commande spécifique de type SQL pour demander à cette feuille de calcul les données exactes dont vous avez besoin.

2. Le « Auto-test » (Le test décisif)

Voici la partie délicate : même si Merlin rédige une requête qui semble grammaticalement correcte, elle peut encore être logiquement erronée. Elle pourrait demander des « pommes » alors que vous vouliez dire « fruits », ou elle pourrait être trop pointilleuse et ne rien trouver.

Pour corriger cela, Merlin dispose d'une fonctionnalité d'auto-test. Avant de fouiller votre bibliothèque massive, il demande à l'IA de créer un tout petit exemple factice (un scénario « mock ») pour vérifier si la requête fonctionne.

  • L'analogie : Imaginez que vous testez un détecteur de métaux. Avant de parcourir toute une ville, vous traversez un petit jardin avec quelques pièces enterrées. Si le détecteur de métaux émet un signal pour les pièces, vous savez qu'il fonctionne. S'il reste silencieux, vous savez que le détecteur est défectueux, et vous le réparez avant de perdre du temps à chercher dans la ville.
  • Le résultat : Si la requête échoue à ce petit test, Merlin sait qu'elle est défectueuse et réessaie.

3. La « Requête d'Assistance » (La lampe torche du détective)

Parfois, la requête est syntaxiquement parfaite mais ne trouve toujours rien parce que l'IA a mal compris un détail subtil.
Merlin utilise une technique appelée Requêtes d'Assistance.

  • L'analogie : Imaginez que vous cherchez un type spécifique d'oiseau dans une forêt, mais que vos jumelles sont embuées. Au lieu de simplement regarder plus intensément, vous demandez à un assistant de crier tout ce qu'il voit dans les arbres en ce moment (« Je vois un oiseau rouge, un oiseau bleu, un écureuil... »).
  • Comment cela aide : En voyant cette liste de « témoins », l'IA réalise : « Ah ! Je cherchais des oiseaux rouges, mais la forêt est remplie d'oiseaux bleus. Je dois modifier ma recherche. » Cela aide l'IA à déboguer sa propre logique et à trouver la bonne réponse.

4. Les Résultats : Pourquoi c'est important

Les chercheurs ont testé Merlin contre d'autres outils et des développeurs humains.

  • Trouver l'aiguille : Merlin a trouvé presque tous les bogues que les outils professionnels existants ont détectés, mais il en a également trouvé beaucoup plus que les autres outils ont manqués.
  • Vitesse humaine : Dans une étude où de vrais programmeurs devaient trouver et corriger des bogues :
    • Ceux qui utilisaient Merlin étaient 3,8 fois plus précis que ceux qui ne l'utilisaient pas.
    • Ils ont terminé les tâches 31 % plus rapidement.
  • Le « Pourquoi » : Sans Merlin, les programmeurs restaient souvent bloqués à faire des recherches manuelles fastidieuses ou s'appuyaient sur une IA qui leur donnait de mauvaises réponses. Merlin leur a fourni une liste claire et vérifiable des emplacements et la logique exacte utilisée pour les trouver, afin qu'ils puissent faire confiance aux résultats.

Résumé

Merlin est comme avoir un traducteur qui parle à la fois « l'anglais humain » et « la logique machine », un inspecteur de contrôle qualité qui teste les instructions avant de les envoyer, et un détective qui utilise des lampes torches pour comprendre pourquoi une recherche a échoué. Il permet aux développeurs de poser des questions complexes sur d'énormes bases de code et d'obtenir des réponses fiables et précises sans avoir besoin d'être eux-mêmes des experts en langage de requête technique.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →