Qu'est-ce qu'une revue de code ?
Une revue de code est une évaluation par les pairs qui aide les développeurs à assurer ou à améliorer la qualité du code avant de le fusionner et de l'expédier.
Les revues de code, également appelées évaluations par les pairs, servent d'assurance qualité au code base.
Les revues de code sont des évaluations méthodiques du code visant à identifier les bogues, à améliorer la qualité du code et à aider les développeurs à apprendre le code source.
Une fois qu'un développeur de logiciels a fini de coder, une revue de code est une étape importante du processus de développement logiciel pour obtenir un deuxième avis sur la solution et la mise en œuvre avant qu'elle ne soit fusionnée dans une branche amont comme une branche de fonctionnalité ou une branche principale. Le relecteur peut également agir comme une deuxième étape dans l'identification des bogues, des problèmes logiques, des cas particuliers non couverts ou d'autres problèmes.
Cette pratique permet aux auteurs et aux relecteurs de code d'identifier les failles de sécurité, de respecter les normes de qualité et de partager des connaissances à travers les langages de programmation et les frameworks. Les relecteurs peuvent appartenir à n'importe quelle équipe ou groupe, à condition d'être un expert du domaine. Si les lignes de code couvrent plusieurs domaines, deux experts devront examiner le code.
Le développement d'un processus de revue de code solide jette les bases d'une amélioration continue et empêche l'expédition de code instable aux clients. Les revues de code doivent faire partie du workflow d'une équipe de développement logiciel pour améliorer la qualité du code et s'assurer que chaque élément de code a été examiné par un autre membre de l'équipe.
Le processus de revue de code est également un élément important de diffusion des connaissances au sein de l'ensemble d'une entreprise. Pour ces raisons et d'autres encores, 76 % des développeurs qui ont participé à l'enquête Global DevSecOps 2022 ont déclaré que les revues de code étaient « très précieuses ».
- Partager les connaissances : Lorsque les développeurs de logiciels examinent le code dès qu'un membre de l'équipe apporte des modifications, ils peuvent apprendre de nouvelles techniques et solutions. Les revues de code aident les développeurs juniors à apprendre des membres plus expérimentés de l'équipe, de la même manière que la programmation en binôme aide efficacement les développeurs à partager des compétences et des idées. En diffusant des connaissances dans toute l'entreprise, les revues de code permettent de s'assurer qu'aucune personne ne devienne un point de défaillance unique. Tout le monde a la possibilité d'évaluer et de donner son avis. Le partage des connaissances aide également les membres de l'équipe à prendre des vacances, car tous les membres de l'équipe ont des connaissances de base sur un sujet donné.
- Découvrir les bogues plus tôt : Plutôt que de découvrir les bogues après l'expédition d'une fonctionnalité et de se démener pour sortir un correctif, les développeurs peuvent immédiatement détecter et résoudre les problèmes avant même que les clients ne s'en aperçoivent. Le fait d'avancer le processus de révision dans le cycle du développement logiciel à travers des tests unitaires aide les développeurs à travailler sur des correctifs avec des connaissances à jour. Lorsqu'ils attendent la fin du cycle de vie pour faire une revue, les développeurs ont souvent du mal à se souvenir du code, des solutions et du raisonnement. L'analyse statique est un moyen peu coûteux et efficient de répondre à la valeur commerciale et client.
- Maintenir la conformité : Les développeurs ont des expériences et des formations variées qui influencent leurs styles de codage. Pour les équipes qui souhaitent avoir un style de codage standardisé, les revues de code aident tout le monde à adhérer aux mêmes normes. Cette étape est particulièrement importante pour les projets de code open source auxquels plusieurs personnes contribuent. Les évaluations par les pairs font appel à des chargés de maintenance pour évaluer le code avant d'effectuer un push des modifications.
- Amélioration de la sécurité : les revues de code créent un niveau de sécurité élevé, en particulier lorsque les professionnels de la sécurité effectuent une évaluation ciblée. La sécurité des applications fait partie intégrante du développement logiciel, et les revues de code aident à détecter les problèmes de sécurité et à garantir la conformité. Les membres de l'équipe de sécurité peuvent évaluer le code à la recherche de vulnérabilités et alerter les développeurs de la menace. Les revues de code sont un excellent complément aux scans et tests automatisés qui détectent les vulnérabilités de sécurité.
- Collaboration renforcée : lorsque les membres de l'équipe travaillent ensemble pour créer une solution, ils se sentent plus responsables de leur travail et ont un sentiment d'appartenance plus fort. Les auteurs et les relecteurs peuvent travailler ensemble afin de trouver les solutions les plus efficaces pour répondre aux besoins des clients. Il est important de renforcer la collaboration tout au long du cycle du développement logiciel pour éviter les silos d'informations et tenir à jour un workflow fluide entre les équipes. Pour mener à bien les revues de code, il est important que les développeurs développent un état d'esprit de revue de code solidement ancré dans le développement collaboratif.
- Amélioration de la qualité du code : les revues de code sont un moyen important de vous assurer que vous expédiez du code et des logiciels de qualité. Un humain qui connaît votre code base peut remarquer des problèmes de qualité de code que les tests automatisés peuvent ne pas détecter. Il peut même vous aider à réduire la dette technique.
- Délai d'expédition plus long : le temps de revue pourrait retarder le processus de sortie, car les relecteurs doivent collaborer avec les auteurs pour discuter des problèmes. En raison de sa charge de travail, il se peut qu'un relecteur n'achève pas une revue aussi rapidement que l'auteur le souhaiterait. Ce défi peut être surmonté en utilisant des outils de revue de code qui incluent des tests automatisés pour détecter des erreurs. L'utilisation d'outils automatisés est un moyen efficace de libérer les développeurs afin qu'ils puissent se concentrer sur les problèmes d'ingénierie logicielle plus importants plutôt que de mettre en évidence de simples erreurs lint.
- Attention détournée des autres tâches : les développeurs ont souvent une charge de travail élevée, et une revue de code peut détourner leur attention d'autres tâches hautement prioritaires dont ils sont responsables. Les membres de l'équipe pourraient être contraints de choisir entre l'achèvement de leur tâche ou l'interruption de leur travail au profit d'une revue de code. Dans les deux cas, le travail est retardé quelque part dans l'entreprise. Pour réduire ce point de friction, les membres de l'équipe peuvent disposer d'une reviewer roulette ou d'une liste d'experts de domaine afin qu'un même développeur ne soit pas inondé de requêtes de revue.
- Les revues importantes impliquent des temps de revue plus longs : si les développeurs doivent effectuer des revues de code sur une modification importante, ils pourraient passer beaucoup de temps à examiner le code. Les revues de code volumineuses sont difficiles à évaluer, et les développeurs sont naturellement susceptibles d'expédier rapidement le processus afin de terminer dans les temps, ce qui entraîne une diminution de la qualité des commentaires. Le développement de code incrémentiel empêche ce problème en permettant aux relecteurs de regarder un petit morceau de code plusieurs fois plutôt qu'une modification majeure en une seule fois.
Certains de ces inconvénients peuvent être minimisés en sélectionnant la méthode de revue de code la plus appropriée pour votre équipe. Voici quatre approches courantes de la revue de code :
Programmation en binôme
La programmation en binôme implique la collaboration de deux développeurs en temps réel : l'un écrit le code (le pilote), l'autre le revoit (le navigateur). Les séances de programmation en binôme sont populaires auprès des équipes de développement car les coéquipiers collaborent pour identifier la solution la plus efficace à un défi. Les membres de l'équipe partagent leurs connaissances et peuvent rapidement surmonter les difficultés en évaluant différentes idées ensemble et en s'appuyant sur leur expertise.
Les avantages de la programmation en binôme
- Transfère les connaissances
- Empêche les silos d'information
- Résout des problèmes complexes
- Augmente le moral
- Découvre plus de bogues
- Peut s'effectuer à distance
Les inconvénients de la programmation en binôme
- Chronophage
- Peut être surexploitée
- Difficile à mesurer
Analyses par dessus l'épaule
Dans une analyse par dessus l'épaule, deux développeurs (l'auteur et le relecteur) font équipe en personne ou à distance via un écran partagé et l'auteur explique la proposition de la modification effectuée et justifie les solutions choisies. Le relecteur pose des questions et fait des suggestions, de la même manière que les membres de l'équipe collaborent lors des séances de programmation en binôme. L'auteur peut apporter de légères modifications au cours de la revue et noter des corrections plus importantes pour y revenir plus tard.
Les avantages des analyses par dessus l'épaule
- Mise en œuvre et réalisation faciles
- Réalisable à distance
- Plus rapide que la programmation en binôme
Les inconvénients des analyses par dessus l'épaule
- Le relecteur est détaché du code
- La revue avance au rythme de l'auteur
- Manque d'objectivité
- Aucune vérification possible que des modifications ont été apportées
- Difficile à mesurer
Revues assistées par des outils
Les équipes peuvent décider d'utiliser des outils pour gagner du temps et s'assurer qu'un code de la plus haute qualité est expédié. Les revues assistées par des outils peuvent automatiquement rassembler les fichiers modifiés et afficher les différences, ou faciliter les retours et les conversations via des commentaires, et intégrer des éléments tels que des tests statiques de sécurité des applications (SAST) pour aider à identifier et à apporter une correction aux vulnérabilités.
La meilleure façon de considérer les revues assistées par des outils est de les envisager comme un complément à d'autres types de revues. L'utilisation d'outils automatisés est un moyen efficace de faire respecter les normes de code, d'identifier les vulnérabilités, de collecter des métriques et de rassembler des fichiers, mais certaines équipes peuvent être tentées de s'appuyer entièrement sur l'utilisation d'outils et de renoncer à l'implication des membres de l'équipe dans les revues de code. Les outils doivent être considérés comme une extension des revues de code et un moyen d'améliorer le processus.
Les avantages des revues assistées par des outils
- Rassemblement facilité des métriques
- L'utilisation d'outils automatisés libère l'attention des développeurs
Les inconvénients des revues assistées par des outils
- Les développeurs doivent tenir à jour des outils
- Coûteuses
- Nécessiteront toujours des revues par ses coéquipiers
Revue par échange d'e-mails
Les revues par échange d'e-mails sont souvent utilisées pour des difficultés mineures et de petits morceaux de code. Elles peuvent être effectuées par e-mail ou via des systèmes de gestion du code source. Lors d'une revue par échange d'e-mails, un auteur envoie un e-mail contenant des modifications de code aux relecteurs. Les revues par échange d'e-mails sont similaires aux analyses par dessus l'épaule en ce sens qu'elles peuvent être facilement mises en œuvre et qu'elles ne nécessitent pas une courbe d'apprentissage importante ou une étape de mentorat pour enseigner à l'auteur comment effectuer une modification.
Les avantages des revues par échange d'e-mails
- Mise en œuvre et réalisation faciles
- Revues à distance et asynchrones facilitées
- Revues automatiques via des systèmes de gestion du code source
Les inconvénients des revues par échange d'e-mails
- Rassembler des fichiers prend du temps
- Conversations difficiles à suivre
- Aucune date de fin de revue définitive
- Aucune vérification que des modifications ont été apportées
- Difficiles à mesurer
- Limitez les sessions de revue de code pour qu'elles restent productives. Déterminez ce qui fonctionne pour votre équipe — disons, pas plus d'une heure ou 200 lignes de code — et encouragez-la à respecter cette limite.
- Incluez tout le monde — y compris les nouveaux membres et les membres seniors de l'équipe — dans le processus. Les revues de code sont un excellent moyen d'aider les nouveaux membres de l'équipe à se familiariser avec le code base, à la fois en révisant le code et en le faisant réviser par des développeurs plus expérimentés de l'équipe. Inclure tout le monde dans le processus de revue de code facilite le travail lorsque des membres de l'équipe partent en vacances ou quittent l'équipe.
- Distribuez les demandes de revue de code au sein de l'équipe. Il est possible que certains développeurs reçoivent la majorité des demandes de revue de code, ce qui n'est bénéfique ni pour eux, ni pour le reste de l'équipe, ni pour le code base à long terme. Vous pouvez créer une liste d'experts de ce domaine ou une « reviewer roulette » (outil d'attribution aléatoire de relecteurs) pour éviter cela.
- Posez des questions et fournissez un contexte utile. Lorsque vous effectuez la revue de code d'un autre membre de l'équipe, faites de votre mieux pour que vous puissiez tous les deux apprendre au cours du processus. Vous ne comprenez pas pourquoi votre collègue a traité une partie du code différemment de ce que vous auriez fait ? Posez-lui la question. Vous avez une suggestion à lui faire afin qu'il puisse améliorer son code ? N'oubliez pas de lui expliquer dans votre commentaire les raisons qui motivent vos suggestions. Cela vous permettra d'en tirer tous les deux des leçons, en plus de vous faire probablement gagner du temps.
En intégrant des pratiques de revue de code efficaces dans le processus de développement logiciel, les entreprises peuvent relever les défis des délais serrés sans compromettre l'intégrité de leurs produits. Le dialogue entre l'auteur du code et le relecteur du code jette les bases d'un processus de développement solide, garantissant que chaque élément de code répond non seulement aux normes établies, mais les dépasse.
Adopter les revues de code, c'est se tourner vers un avenir où l'innovation, la collaboration et la sécurité conduisent à la création de solutions logicielles impactantes.
Découvrez comment GitLab simplifie le processus de revue de code
GitLab rationalise le développement logiciel grâce à un système complet de contrôle de version et de collaboration.
Vous souhaitez en savoir plus sur les revues de code ?
Voir toutes les ressourcesLancez-vous dès maintenant
Découvrez comment la plateforme DevSecOps unifiée de GitLab peut aider votre équipe.