Contexte et enjeux
Les grands modèles de langage (LLM) produisent du code presque toujours syntaxiquement correct. Cette correction ne garantit pas l'absence d'abstractions superflues, de duplication ou de décisions architecturales pauvres. Dans des projets où plusieurs millions de lignes de code (LOC) sont ajoutées chaque mois, la croissance rapide dépasse la capacité d'inspection humaine, ce qui réduit la maîtrise du système.
Métriques de sloppiness
Le suivi du changement de nombre de LOC s'avère un indicateur simple mais efficace : une hausse brutale indique souvent une perte de lisibilité. Deux métriques plus fines, introduites par le papier SlopCodeBench, sont la verbosité et l'érosion. La verbosité mesure la proportion de lignes redondantes ou inutiles, tandis que l'érosion compare la masse de fonctions complexes à la masse totale du code. L’érosion se calcule ainsi :
erosion = Σ_{f | CC(f) > 10} SLOC(f) / Σ_{all f} SLOC(f)où CC(f) est la complexité cyclomatique de la fonction f et SLOC(f) le nombre de lignes sources de f.
Évaluation expérimentale
Sur un corpus de dépôts open‑source, la verbosité moyenne est de 0,15 ± 0,06 contre 0,33 ± 0,10 pour le code produit par les agents LLM. L’érosion moyenne passe de 0,31 ± 0,17 à 0,68 ± 0,20 respectivement. Ainsi, le code d’agent est environ deux fois plus verbeux et plus érodé que le code humain. Des projets personnels évalués affichent des valeurs de verbosité jusqu’à 0,4 et d’érosion jusqu’à 0,75, confirmant que ces écarts ne sont pas des artefacts de l’échantillonnage.
Le benchmark SlopCodeBench impose des itérations d’instructions et de tests où le contexte du modèle est réinitialisé entre chaque étape. Cette procédure reproduit le flux de travail réel des développeurs assistés par IA. Sous ces conditions, aucun modèle d’état‑de‑l’art n’atteint un taux de réussite strict (tous les tests doivent être validés à chaque checkpoint) : le taux de passage est de 0 %. Cette performance souligne que la capacité à générer du code correct ne suffit pas à maintenir la qualité lorsqu’on accumule les changements.
Limites et perspectives
Les métriques présentées reposent sur des heuristiques statiques (AST‑Grep) et ne capturent pas la couplage fonctionnel, la cohésion ou le churn de code, qui restent des axes de recherche. De plus, la dépendance à la complexité cyclomatique >10 comme seuil d’érosion peut masquer des fonctions longues mais bien structurées. L’évaluation humaine, bien que non scalable, demeure le critère de référence pour la lisibilité et la maintenabilité. Les futures directions incluent l’intégration de mesures de couplage, de cohésion et de churn, ainsi que la conception de tests adaptatifs capables de détecter la dégradation progressive du code généré par IA.