- D’après l’analyse de 470 PR open source, le code écrit par l’IA contient en moyenne 1,7 fois plus de problèmes que celui écrit par des humains
- Les principaux défauts, comme les erreurs logiques, la baisse de lisibilité et les vulnérabilités de sécurité, sont nettement plus fréquents dans le code IA ; les problèmes de lisibilité sont notamment plus de 3 fois plus nombreux
- Les omissions dans la gestion des erreurs, les erreurs de concurrence et les incohérences de nommage sont fréquentes dans le code IA, ce qui alourdit la revue et accroît les risques en production
- Les causes identifiées incluent une compréhension insuffisante de la logique métier, la recherche d’une exactitude superficielle et une préférence pour des patterns peu efficaces
- Le rapport souligne la nécessité de renforcer les dispositifs de contrôle qualité du code IA et d’introduire des प्रक्रédures de revue, de sécurité et de test adaptées à l’IA
Vue d’ensemble du rapport AI vs Human Code Generation
- CodeRabbit a mené cette étude afin d’analyser de manière empirique les différences de qualité entre le code écrit par l’IA et celui écrit par des humains
- 470 PR GitHub open source ont été examinées, dont 320 coécrites avec l’IA et 150 écrites uniquement par des humains
- Tous les résultats ont été normalisés en nombre de problèmes pour 100 PR, puis la fréquence de chaque type de problème a été mesurée via une comparaison statistique des ratios
- En conclusion, l’IA améliore la productivité, mais augmente aussi le taux d’erreurs
- En moyenne, 10,83 problèmes par PR rédigée par l’IA, contre 6,45 pour une PR humaine
- Les erreurs les plus graves ont été trouvées plus souvent dans le code IA
Limites de l’étude
- Comme il était impossible de vérifier directement si une PR avait été écrite par l’IA, les PR portant le signal co-authored-by ont été classées comme rédigées par l’IA
- Les PR sans ce signal ont été considérées comme humaines, sans qu’une séparation parfaite soit possible
- Malgré cette limite, les différences statistiques de patterns de problèmes entre les deux groupes restent significatives
- La méthodologie complète est publiée à la fin du rapport
Les 10 principaux constats
- Tous les types d’erreurs ne sont pas exclusifs à l’IA, mais dans la plupart des catégories, le taux d’erreur du code IA est plus élevé
- Humains et IA commettent les mêmes types d’erreurs, mais l’IA les produit plus souvent et à plus grande échelle
-
1. Une hausse de 1,7x du nombre total de problèmes
- En moyenne 10,83 problèmes par PR IA, contre 6,45 pour une PR humaine
- Les PR avec une forte concentration de problèmes (outliers) sont bien plus nombreuses dans le code IA, ce qui accroît la charge de revue
-
2. Augmentation des erreurs les plus graves
- Les problèmes majeurs et critiques sont 1,4 à 1,7 fois plus nombreux
-
3. Hausse de 75 % des problèmes de logique et d’exactitude
- Cela inclut les erreurs de logique métier, mauvaises dépendances, défauts de flux de contrôle et erreurs de configuration
- Leur correction est coûteuse et ils peuvent mener à des incidents en production
-
4. Plus de 3x de problèmes de lisibilité
- Les conventions de nommage, la structure du code et la cohérence d’expression se dégradent nettement
- Même si le code semble propre en apparence, les violations des patterns locaux sont fréquentes
-
5. Doublement des oublis de gestion d’erreurs et de chemins d’exception
- Les vérifications de
null, conditions de garde et logiques de gestion d’exception manquent souvent
- Il s’agit d’un type de défaut directement lié aux pannes de service
-
6. Jusqu’à 2,74x plus de problèmes de sécurité
- Parmi les exemples typiques : mauvaise gestion des mots de passe et vulnérabilités de référence d’objet
- Il ne s’agit pas de vulnérabilités inédites, mais la plupart des défauts de sécurité sont amplifiés
-
7. Moins de problèmes de performance, mais concentrés côté IA
- Les appels I/O excessifs sont environ 8 fois plus nombreux
- L’IA privilégie un code centré sur la clarté, au détriment de l’efficacité
-
8. Environ 2x plus d’erreurs de concurrence et de dépendance
- Les erreurs d’ordre, mauvais flux de dépendance et mauvais usage du contrôle de concurrence sont fréquents
-
9. 2,66x plus de problèmes de formatage
- Les erreurs formelles, comme l’indentation, les espaces ou les incohérences de style, sont nombreuses
- Même avec des formatters et linters automatiques, le bruit augmente dans le code IA
-
10. Doublement des incohérences de nommage
- Les noms peu explicites, incohérences terminologiques et identifiants génériques sont fréquents, ce qui augmente la charge cognitive des reviewers
Causes des problèmes
- L’IA comprend mal la logique métier
- Elle génère le code à partir de patterns statistiques et rate les règles du système
- Une génération centrée sur l’exactitude en surface
- Le code semble correct, mais présente des défauts dans la protection du flux de contrôle ou l’ordre des dépendances
- Non-respect des conventions propres au dépôt
- Les règles de nommage, de structure et de format sont ramenées à des formes trop génériques
- Affaiblissement des patterns de sécurité
- Sans consigne explicite, l’IA reproduit des patterns de code anciens ou vulnérables
- Préférence pour la simplicité plutôt que l’efficacité
- Tendance à utiliser des I/O répétées et des structures non optimisées
Réponses recommandées pour les équipes d’ingénierie
- Adopter l’IA ne consiste pas seulement à gagner en vitesse ; cela exige aussi de repenser le dispositif d’assurance qualité
-
1. Fournir suffisamment de contexte à l’IA
- Il faut préciser les règles métier, patterns de configuration et contraintes d’architecture pour réduire les erreurs
- Inclure dans les prompts des consignes propres au dépôt et des schémas
-
2. Imposer un style de code basé sur des politiques
- Utiliser CI, formatter, linter et guide de style pour prévenir les problèmes de lisibilité
-
3. Ajouter des garde-fous d’exactitude
- Tests obligatoires, vérifications
null/types, standardisation de la gestion des exceptions et conditions de garde explicites
-
4. Renforcer les paramètres de sécurité par défaut
- Centralisation des credentials, interdiction de l’usage direct des mots de passe et exécution automatique de SAST et de linters de sécurité
-
5. Orienter vers des patterns efficaces
- Traitement par lot des I/O, choix approprié des structures de données et indications de performance
-
6. Mettre en place une checklist de PR adaptée à l’IA
- Lors de la revue, vérifier les points suivants :
- couverture des chemins d’erreur
- exactitude du contrôle de concurrence
- validation des valeurs de configuration
- mode de gestion des mots de passe
-
7. Automatiser la revue du code IA
- Afin d’éviter que l’augmentation de la fatigue de revue ne fasse passer des bugs inaperçus, le rapport propose d’utiliser un outil de revue de code IA (CodeRabbit)
- Cela permet de standardiser la qualité des revues et de réduire le temps d’examen et la charge cognitive
Conclusion
- Les outils de coding IA sont de puissants accélérateurs, mais accélérer sans garde-fous est risqué
- Le code généré par l’IA présente une variabilité, un taux d’erreur et un niveau de gravité plus élevés
- Il est essentiel d’utiliser l’IA comme outil complémentaire et non comme substitut, tout en renforçant les dispositifs de qualité, de sécurité et de test
- Pour concilier vitesse et qualité, une gouvernance d’ingénierie intentionnelle est nécessaire
- L’usage d’outils de revue de code IA peut concrètement aider à maintenir la qualité
Aucun commentaire pour le moment.