← Derniers articles
💻 computer science

SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks

Cet article présente SmellBench, un nouveau benchmark conçu pour évaluer les agents de code sur des tâches de refactorisation en injectant des odeurs de code réelles, révélant que les modèles actuels les plus performants éprouvent des difficultés avec la compréhension inter-fichiers et n'atteignent qu'un succès modéré dans l'élimination de ces problèmes de maintenabilité.

Auteurs originaux : Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

Publié 2026-06-05
📖 6 min de lecture🧠 Analyse approfondie

Auteurs originaux : Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

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

La vue d'ensemble : Le problème de la « chambre en désordre »

Imaginez que vous avez un assistant robot très intelligent (un Agent de Code) capable d'écrire du code, de corriger des bugs et d'organiser des fichiers. Vous lui demandez de ranger une chambre en désordre (refactoriser le code).

La plupart des tests pour ces robots se contentent de demander : « As-tu déplacé la chaise pour qu'on puisse passer par la porte ? » Si le robot déplace la chaise et que vous pouvez passer, le test dit « Réussi ! ».

Mais le papier soutient que cela ne suffit pas. Le robot a peut-être déplacé la chaise, mais ce faisant, il a renversé une lampe, laissé un tas de vêtements par terre et bloqué la fenêtre. La pièce fonctionne (vous pouvez marcher), mais c'est un désastre pour y vivre à long terme. C'est ce que les développeurs appellent les « Code Smells » (odeurs de code) — du code lourd, désordonné ou mal organisé qui fonctionne aujourd'hui, mais qui causera des maux de tête demain.

SmellBench est un nouveau test conçu pour voir si ces robots IA peuvent réellement nettoyer le désordre sans l'aggraver, plutôt que de simplement vérifier si la porte est toujours ouverte.


Comment ils ont construit le test (L'usine à « Désordre Contrôlé »)

Les chercheurs se sont rendu compte que trouver des exemples réels de code désordonné revient à chercher un grain de sable spécifique sur une plage. C'est difficile, et le désordre est souvent mélangé à d'autres choses (comme de nouvelles fonctionnalités ou des corrections de bugs).

Ils ont donc construit une usine pour créer des désordres parfaitement contrôlés :

  1. La Chambre Propre : Ils sont partis de 7 projets Python célèbres, propres et bien organisés (comme pandas ou numpy). Considérez cela comme des bibliothilles pristine et parfaitement organisées.
  2. L'Injection de l'Odeur : Au lieu d'attendre qu'un désordre survienne naturellement, ils ont utilisé une IA pour intentionnellement dégrader le code. Ils ont injecté 7 types spécifiques d'« odeurs » (comme une « God Class » qui essaie de faire trop de choses, ou du « Dead Code » qui n'est jamais utilisé).
  3. La Vérité Terrain (Ground Truth) : Puisqu'ils ont créé le désordre, ils savent exactement à quoi ressemblait la version propre avant qu'elle ne soit cassée. C'est leur « Corrigé ».

Le Résultat : Un ensemble de données de 294 scénarios spécifiques de « désordre », allant du plus facile au plus difficile, couvrant 7 types différents de laideur de code.


Les 7 types d'« Odeurs de Code » (Les scénarios de la chambre en désordre)

Le papier se concentre sur 7 façons dont le code devient désordonné. Voici comment ils se traduisent dans la vie de tous les jours :

  1. Feature Envy (Envie de fonctionnalité) : Une personne (une fonction) qui emprunte constamment des choses chez son voisin au lieu d'utiliser ses propres affaires. Analogie : Vous empruntez sans cesse le marteau de votre voisin parce que vous n'en avez pas, même si vous avez votre propre boîte à outils.
  2. God Classes (Classes Dieu) : Une seule personne qui essaie de faire tous les métiers de l'entreprise (cuisine, comptabilité, sécurité et RH). Analogie : Un seul concierge qui essaie de réparer la plomberie, d'enseigner les mathématiques et de cuire du pain à la fois.
  3. Data Clumps (Grappes de données) : Porter le même groupe d'objets (clés, portefeuille, téléphone) partout avec soi, même quand on n'en a besoin que d'un seul. Analogie : Porter une boîte à outils entière juste pour changer une ampoule.
  4. Shotgun Surgery (Chirurgie au fusil de chasse) : Vous voulez changer une petite chose (comme la couleur des murs), mais vous devez passer par 10 pièces différentes pour le faire. Analogie : Changer le prix d'un produit nécessite de mettre à jour séparément le reçu, le site web, la facture et l'étiquette d'expédition.
  5. Dead Code (Code mort) : Des meubles dans une pièce sur lesquels personne ne s'assoit ou ne les utilise jamais. Analogie : Une étagère remplie de livres que vous avez lus il y a 10 ans et que vous ne touchez plus jamais.
  6. Interface Segregation (Ségrégation d'interface) : Une télécommande avec 50 boutons, mais vous n'en utilisez que 3. Analogie : Un menu au restaurant qui vous oblige à commander un steak, une salade et un dessert juste pour obtenir un verre d'eau.
  7. Deep Inlining (Inlining profond) : Une recette qui dit « Faites l'étape 1, ce qui signifie faire l'étape 2, ce qui signifie faire l'étape 3... » le tout écrit dans un seul paragraphe géant. Analogie : Une carte où les directions sont écrites à l'intérieur des directions, rendant le suivi impossible.

L'Expérience : Les robots peuvent-ils nettoyer ?

Les chercheurs ont soumis ces extraits de code désordonnés à 2 agents IA populaires (OpenHands et Qwen Code) alimentés par 6 « cerveaux » différents (des modèles de langage étendus comme Claude, GPT et DeepSeek).

Les Règles :

  • L'IA devait trouver le désordre.
  • L'IA devait corriger le désordre.
  • L'IA devait s'assurer que le code fonctionnait toujours (passait les tests).

Les Résultats (La partie choquante) :
Même la meilleure combinaison d'IA (Qwen Code + Claude Sonnet 4.5) n'a obtenu un score de 50,34 % pour l'élimination des odeurs.

  • Le Test de la « Porte » (Correctitude fonctionnelle) : Les robots étaient excellents pour cela. La plupart ont gardé la « porte ouverte » (le code s'exécutait toujours). Ils ont réussi les tests de base 80 à 90 % du temps.
  • Le Test de la « Chambre Propre » (Qualité de la refactorisation) : Les robots ont échoué ici. Ils ont souvent réglé le problème immédiat mais ont laissé la pièce en désordre. Ils ont eu du mal à voir l'ensemble du tableau, surtout quand le désordre impliquait plusieurs fichiers (comme l'odeur de « Shotgun Surgery »).

Résultat clé : L'IA est douée pour faire fonctionner le code, mais elle est actuellement mauvaise pour rendre le code beau et maintenable.


Pourquoi cela importe

Le papier conclut que nous ne pouvons pas simplement demander à l'IA : « Est-ce que le code a tourné ? ». Nous devons demander : « Est-ce que le code est propre ? ».

Ils ont introduit une nouvelle façon de noter l'IA en utilisant une « IA Juge » qui examine :

  1. A-t-elle réussi les tests ? (La porte s'ouvre-t-elle ?)
  2. A-t-elle trouvé le bon endroit pour réparer ? (A-t-elle regardé dans la bonne pièce ?)
  3. Le code est-il réellement meilleur ? (La pièce est-elle rangée ?)

L'essentiel : Les agents IA actuels sont comme des stagiaires enthousiastes qui peuvent déplacer des meubles mais qui laissent souvent une trace de poussière derrière eux. Ils s'améliorent, mais ils ont encore un long chemin à parcourir avant de pouvoir être dignement « chargés » de refactoriser (nettoyer) des systèmes logiciels complexes de manière autonome.

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 →