Révision de code par IA

Personne écrivant du code sur un ordinateur

Auteurs

Teaganne Finn

Staff Writer

IBM Think

Amanda Downie

Staff Editor

IBM Think

Révision de code par IA

La révision de code par IA consiste à utiliser des outils et des techniques d’intelligence artificielle (IA) pour examiner le code et en vérifier la qualité, le style et la fonctionnalité.

Ce processus automatisé utilise des modèles de machine learning (ML) pour identifier les incohérences par rapport aux normes de codage, et détecter les problèmes de sécurité et les vulnérabilités.

Les outils de révision de code par IA proposent souvent des suggestions ou même des correctifs automatisés, permettant aux développeurs de gagner du temps et d’améliorer la qualité du code. Ils peuvent être intégrés dans les environnements de développement et les systèmes de contrôle de version pour faciliter les pratiques d’intégration et de livraison continues (CI/CD). Parmi ces outils, citons GitHub Copilot, DeepCode, SonarQube et What the Diff.

Pourquoi la révision de code par IA est-elle importante ?

Le paysage du développement de logiciels en constante évolution exige des bases de code de haute qualité. Par conséquent, les équipes se tournent de plus en plus vers des référentiels open source pour accélérer les projets, et elles doivent pouvoir gérer les modifications de code efficacement.

L’IA joue un rôle transformateur dans la révision de code, car cette approche révolutionne la façon dont les développeurs maintiennent la qualité du code et soutiennent l’écosystème florissant du développement logiciel. La révision de code par IA constitue une approche innovante s’appuyant sur l’IA générative pour améliorer le processus traditionnel de révision de code.

Puisqu’ils sont capables d’apprendre à partir de vastes quantités de code open source, les systèmes d’IA peuvent reconnaître des schémas, signaler des bugs potentiels et suggérer des améliorations, favorisant une culture de collaboration et d’amélioration continue.

Quels sont les composants clés de la révision de code par IA ?

La révision de code par IA repose sur quatre composants clés qui jouent tous un rôle crucial.1

  • Analyse statique du code

  • Analyse dynamique du code

  • Systèmes basés sur des règles

  • Traitement automatique du langage naturel (NLP) et grands modèles de langage (LLM)

Analyse statique du code 

Cette méthode consiste à analyser le code source avant d’exécuter un programme. Son objectif, qui est aussi son principal avantage, est d’identifier les problèmes ou les erreurs avant l’exécution. L’analyse statique du code permet de détecter précocement les bugs, d’identifier les problèmes de sécurité et d’améliorer la maintenabilité, ce qui en fait un composant essentiel du processus de révision de code.

Les outils d’analyse statique du code peuvent analyser le code source au niveau du langage de programmation, ce qui les rend particulièrement utiles pour les bases de code plus complexes. Avec les outils appropriés, l’analyse statique du code peut analyser des milliers de lignes de code en quelques secondes, faisant gagner du temps aux entreprises et leur permettant d’économiser des ressources précieuses. Une fois l’analyse statique du code effectuée, les algorithmes d’IA peuvent exploiter ces informations pour recommander des améliorations ou un nouveau plan d’action.

Analyse dynamique du code

À l’inverse de l’analyse statique, l’analyse dynamique du code est conçue pour tester le code ou exécuter l’application pour détecter des problèmes potentiels ou des failles de sécurité en cours d’exécution. L’avantage de cette méthode, c’est qu’elle permet de tester le code pour en vérifier les problèmes pendant que le logiciel fonctionne, et de trouver ceux qui n’auraient peut-être pas été détectés en mode statique.

L’analyse dynamique du code est également connue sous le nom de test dynamique de la sécurité des applications (DSAT). Ces outils DSAT disposent d’un dictionnaire de vulnérabilités connues à rechercher pendant l’exécution des applications. Ils analysent ensuite les réponses données aux entrées et enregistrent les problèmes, le cas échéant. Les outils d’analyse dynamique du code apportent une certaine tranquillité d’esprit aux développeurs en détectant les problèmes de performance et les failles de sécurité bien avant que les clients n’aient accès à l’application.

Systèmes basés sur des règles

Ce système informatique s’appuie sur des règles prédéfinies et des bonnes pratiques pour analyser le code. L’avantage de cette méthode, c’est qu’elle applique une logique aux données d’entrée pour tirer une conclusion. Elle joue un rôle clé dans le processus de révision de code. Les règles permettent de s’assurer que le code respecte les normes du secteur et les directives de l’entreprise.

Ce système basé sur des règles établit une base de référence cohérente pour l’analyse de code et peut fournir aux équipes de développement une source fiable pour la réaliser. Des outils tels que les linters examinent le code pour détecter les erreurs de syntaxe ou les écarts par rapport à un style de codage particulier, et ils peuvent corriger l’application, permettant de garantir la qualité du code.

Traitement automatique du langage naturel (NLP) et grands modèles de langage (LLM)

Les modèles NLP, entraînés sur de grands jeux de données, se trouvent au cœur de la révision de code par IA. Ces modèles sont essentiels dans la révision de code par IA, car ils apprennent à reconnaître des schémas dans le code qui pourraient signaler des problèmes ou des inefficacités. L’objectif, c’est qu’à mesure de leur utilisation, les NLP vont commencer à mieux détecter les erreurs et à faire des recommandations plus détaillées.

Par ailleurs, les LLM comme GPT-4 commencent à être intégrés dans les outils de révision de code. Les LLM sont capables de comprendre la structure et la logique du code à un niveau plus complexe que les techniques traditionnelles de machine learning. La méthode LLM permet d’identifier des anomalies et des erreurs plus nuancées, pour une révision plus minutieuse du code.

Outils clés pour la révision de code par IA

watsonx Code Assistant : La solution watsonx Code Assistant utilise l’IA générative pour accélérer le développement, tout en respectant les principes de confiance et de sécurité. Avec watsonx Code Assistant, les développeurs peuvent réduire les erreurs, minimiser la courbe d’apprentissage et créer un code de qualité grâce à la génération, à la mise en correspondance et à la modernisation du code.

Codacy : Codacy propose des processus de révision de code automatisés prenant en charge les langages tels que JavaScript et Python, permettant aux développeurs de maintenir la qualité du code dans tous leurs projets. Le processus d’onboarding est conçu pour s’intégrer de façon fluide dans les workflows logiciels, permettant aux équipes de détecter les problèmes à un stade précoce.

DeepCode : DeepCode utilise l’IA pour analyser le code en temps réel et fournir des informations exploitables pour les projets open source. Cet outil améliore l’expérience d’intégration des nouveaux développeurs en identifiant les pièges les plus courants et en promouvant les bonnes pratiques en matière d’ingénierie logicielle.

Bito AI : Avec son interface intuitive et ses révisions de code alimentées par l’IA, Bito AI vise à rationaliser l’intégration des équipes d’ingénierie logicielle. Il peut instantanément fournir des commentaires et des recommandations exploitables, et aider les nouveaux membres de l’équipe à s’adapter rapidement aux normes et aux bonnes pratiques de codage de l’entreprise.

PullRequest : PullRequest fournit à la fois des informations pilotées par l’IA et une expertise humaine, facilitant ainsi le processus d’intégration des équipes d’ingénierie logicielle. La plateforme favorise la collaboration et le partage des connaissances afin d’encourager les nouveaux développeurs à apprendre de réviseurs expérimentés.

Coderabbit : Coderabbit est une plateforme de révision de code par IA qui s’appuie sur des outils d’IA pour réaliser des analyses et donner des commentaires clairs. Il fournit des révisions semblables à celles d’évaluateurs humains, et il est personnalisable, car il fonctionne avec tous les langages de programmation.

Avantages de la révision de code par IA

La révision de code alimentée par l’IA peut représenter de nombreux avantages pour une organisation et son équipe de développement, notamment :

  • Efficacité
  • Cohérence
  • Détection d’erreurs
  • Apprentissage amélioré

Efficacité

L’un des principaux avantages de la révision de code par IA, c’est son efficacité. Un processus traditionnel de révision de code peut nécessiter beaucoup de temps et de ressources. Avec la révision de code automatisée, par l’IA par exemple, le processus peut être effectué en quelques instants. Chaque méthode de révision de code par IA décrite précédemment joue un rôle crucial dans l’ensemble du processus de développement d’une application.

IBM watsonx Code Assistant for Z en est un exemple. Ce produit basé sur l’IA générative a été conçu pour accélérer le cycle de vie des applications mainframe et rationaliser la modernisation, plus efficace et plus économique. Les développeurs peuvent automatiquement remanier les éléments sélectionnés, optimiser le code et le moderniser grâce à la conversion de COBOL en Java.2

Cohérence

Les membres humains de l’équipe de révision de code peuvent être affectés par des influences extérieures, telles que la fatigue ou des biais, ce qui peut conduire à des révisions incohérentes. L’IA est capable d’analyser le code avec précision et cohérence, quelle que soit sa quantité ou sa complexité, un atout clé de la révision de code par IA. La révision de code est un processus chronophage pouvant tirer parti de technologies avancées telles que les outils d’IA générative, s’ils sont utilisés correctement.

Citons pour sa cohérence le modèle Granite d’IBM , qui a été entraîné sur une grande base de code comptant 115 langages de programmation et de 1,63 mille milliards de jetons. La méthode de révision de code par IA est simple, et les modèles sont entraînés sur divers jeux de données. De plus, les modèles Granite utilisés pour l’entraînement sont soumis à un processus de vérification de la GRC (gouvernance, risque, conformité) spécialement conçu.

Détection des erreurs    

Les outils de révision de code alimentés par l’IA s’appuient sur la technologie. Ils sont donc très efficaces pour détecter les erreurs les plus infimes en temps réel, souvent négligées lors de la révision manuelle, comme les mauvaises odeurs ou code smells. Ces erreurs passent parfois inaperçues de par leur subtilité, ou parce qu’elles n’apparaissent que sous certaines conditions, à moins d’appliquer des méthodes de révision bien précises.

IBM Research a par exemple amélioré sa plateforme IBM AIOps Insights afin de permettre aux experts IT de trouver des solutions à leurs problèmes informatiques plus rapidement. Grâce à la puissance des LLM et de l’IA générative, AIOps Insights peut collecter les données de l’environnement informatique du client et trouver des corrélations entre elles afin d’identifier les problèmes potentiels.

Apprentissage amélioré

Autre avantage de la révision de code par IA, c’est qu’elle constitue une précieuse opportunité d’apprentissage pour les développeurs cherchant à améliorer leurs compétences en codage à long terme. Un grand atout de l’IA, c’est qu’elle fournit aux développeurs énormément de feedback et de recommandations qu’ils peuvent utiliser pour modifier les workflows de développement et qui leur garantissent d’apprendre à produire du code de qualité.

Pour reprendre notre exemple, IBM AIOps Insights permet donc d’unir les forces des informations humaines et du codage alimenté par l’IA. Grâce à un module de résolution intelligent, le développeur peut prendre les mesures nécessaires pour retracer les causes d’un ralentissement ou d’un problème technique avec le système. Il n’a plus besoin d’écrire son propre script pour effectuer la résolution.

Les défis de la révision de code par IA

Dépendance excessive à l’égard de l’IA

Les développeurs risquent de devenir trop dépendants des outils d’IA pour rationaliser les processus de révision de code, ce qui pourrait amenuiser l’importance de leur expertise personnelle et de leur esprit critique. Cette dépendance pourrait entraîner une dette technique non maîtrisée, car les développeurs pourraient négliger des problèmes plus profonds requérant une supervision humaine.

Un moyen de surmonter ces défis, c’est de mettre en place des normes éthiques pour encadrer le processus de révision de code, et de s’assurer que tous les développeurs respectent ces règles. Les organisations doivent fixer des limites pour empêcher tout usage abusif et essayer de trouver le bon équilibre entre éthique et rapidité. Plus important encore, l’élément humain reste le premier facteur dans la révision de code, et l’IA ne doit servir qu’à améliorer les processus.

Limites en matière de compréhension du contexte

Les outils d’IA ont souvent du mal à gérer le contexte spécifique d’un projet, notamment les subtilités des API et de l’architecture globale. Cette compréhension insuffisante du contexte peut se traduire par une validation inadéquate de la qualité du code et conduire à des opportunités manquées d’apporter des optimisations alignées sur les objectifs du projet.

Lorsque la quantité de données est conséquente, il est important d’utiliser des jeux de données d’entraînement diversifiés qui représentent tous les groupes que l’organisation tente de cibler. Un autre moyen de surmonter ces limites consiste à tester régulièrement le système d’IA pour détecter les biais potentiels, ce via une surveillance automatisée et la définition de lignes directrices strictes à faire suivre à l’IA générative.

Faux positifs et faux négatifs

Les systèmes de révision de code par IA peuvent générer des faux positifs, signalant de manière erronée le code comme problématique, ou des faux négatifs, manquant des défauts bien réels. Ces imprécisions peuvent compliquer le processus de révision de code, se traduisant par du temps perdu sur l’application de correctifs inutiles, ou par des problèmes non résolus augmentant la dette technique.

Pour relever à ce défi, il est possible d’utiliser des algorithmes de ML afin de surveiller les grandes quantités de données. Il s’agit également de prendre le temps d’identifier le comportement de chaque indicateur. Une base de référence peut réduire les faux résultats et permettre aux développeurs d’ajuster les niveaux de gravité des faux négatifs. Sinon, l’un des moyens de surmonter ce défi consiste à entraîner à nouveau le modèle sur le même jeu de données, mais en modifiant les valeurs de sortie pour un meilleur alignement sur les résultats précédents.

Design 3D de balles roulant sur une piste

The latest AI News + Insights 


Expertly curated insights and news on AI, cloud and more in the weekly Think Newsletter. 

Comment se lancer avec la révision de code par IA

En se lançant dans la révision de code par IA, les équipes chargées du développement logiciel pourront considérablement améliorer leurs processus, car elles seront en mesure de maintenir des niveaux élevés d’efficacité et de qualité du code. Voici quelques étapes générales à suivre pour intégrer efficacement les outils pilotés par l’IA dans le workflow de révision de code des entreprises.3

  1. Choisir le bon outil de révision de code par IA : Pour commencer, choisissez un outil de révision de code par IA répondant aux besoins de votre organisation. La plupart des options populaires incluent diverses fonctionnalités, notamment la prise en charge de plusieurs langages de programmation et l’intégration aux workflows existants. Les organisations devraient rechercher des outils qui fournissent des indicateurs permettant d’évaluer la qualité du code, notamment la complexité du code, les taux de duplication et le respect des normes de codage. À partir de ces indicateurs, les organisations peuvent définir des bases de référence pour leur processus de développement.
     

  2. Mettre en place l’intégration de l’équipe et la configuration : Une fois l’outil choisi, l’étape suivante consiste à intégrer l’équipe. Cela nécessite une documentation claire et des sessions de formation qui permettront à tous de se familiariser avec les fonctionnalités et les capacités de l’outil. Les organisations doivent configurer les outils pour les aligner sur les normes de codage et les exigences spécifiques du projet, ce qui peut inclure la mise en place de règles ou de seuils personnalisés pour des indicateurs spécifiques.
     

  3. Incorporer l’IA dans le processus de révision : L’étape suivante consiste à intégrer l’outil d’IA dans le processus de révision de code existant de l’organisation. L’IA génère des commentaires de révision basés sur son analyse : elle met en évidence les problèmes potentiels et suggère des améliorations. Non seulement cette procédure rationalise le processus de révision, mais elle permet également aux développeurs de tirer des enseignements des commentaires au fil du temps.
     

  4. Utiliser des indicateurs pour favoriser les améliorations : Les organisations devraient utiliser les informations issues de la révision de code par IA et utiliser ces indicateurs pour suivre les performances des équipes. En suivant les tendances observées dans la qualité du code au fil du temps, les équipes de développement peuvent repérer les points à améliorer. En outre, les équipes peuvent utiliser ces informations lors des réunions pour réfléchir à la manière dont elles pourraient gérer les problèmes récurrents et améliorer les pratiques de codage.
     

  5. Trouver un équilibre entre les informations issues de l’IA et les informations humaines : Les outils de révision de code pilotés par l’IA peuvent améliorer considérablement ce processus de révision, mais il est essentiel de trouver un équilibre entre les commentaires automatisés et les informations humaines. Les organisations devraient encourager les membres de l’équipe à passer en revue les commentaires générés par l’IA et à apporter leur propre point de vue. Cette approche collaborative peut renforcer le processus de révision et favoriser une culture d’apprentissage et d’amélioration continue au sein des équipes.

Notes de bas de page

1. AI Code Review: How It Works and 5 Tools You Should Know, Swim, octobre 2024 (lien externe à IBM.com) 

2. Software has eaten the world. What now?, blog IBM, 17 janvier 2024

3. Boosting Code Quality with AI-Based Review and Assessment, Medium, 29 mars 2024 (lien externe à IBM.com)

Ressources

Modernisation et génération de code
Éducation
Perspectives du secteur sur la valeur des assistants de codage IA
Webinaire
Water Corporation et IBM
Étude de cas
Utiliser la méthode de prompt-tuning pour optimiser un modèle Granite en Python avec watsonx
Tutoriel

Passez à l’étape suivante

Les développeurs et les opérateurs informatiques peuvent accélérer les efforts de modernisation des applications et générer une automatisation pour dimensionner rapidement les environnements informatiques avec IBM watsonx Code Assistant. Cet outil s’appuie sur l’IA générative pour accélérer le développement tout en maintenant les principes de confiance, de sécurité et de conformité.

  1. Découvrir watsonx Code Assistant
  2. Abonnez-vous à la Think Newsletter