alphaspirit - Fotolia
Revue de code : quels outils adopter pour l’automatiser ?
La revue de code est une pratique qui n’est pas vraiment compatible avec une approche itérative et agile du développement. Les outils de support et leurs versions automatisées améliorent la qualité des applications.
L’examen en bonne et due forme du code d’un programme est bénéfique pour de nombreuses raisons, mais cela demande beaucoup de temps et de moyens. Un processus de développement agile et itératif rend cette pratique difficile, voire impossible.
L’automatisation de revue de code, qui désigne un large panel de systèmes allant d’un processus assisté par logiciel à un remplacement des experts humains par l’IA, vise à réduire les délais induits par les contrôles qualité. Cela doit améliorer leur efficacité et faciliter leur adoption par les entreprises.
Ces examens automatisés reposent sur plusieurs mécanismes. Les sociétés pourraient surveiller de près les programmeurs ou les demandes de « relecture » adressées par mail à des experts, mais ces outils sont plus efficaces. La programmation coopérative et la revue de code assistée par l’intelligence artificielle exigent une stratégie nuancée, mais présentent des avantages indéniables.
La meilleure approche en la matière dépend de la politique d’assurance qualité appliquée dans une entreprise, ainsi que des problèmes spécifiques que ces outils doivent mettre en lumière. Respect des lois, sécurité ou d’autres éléments peuvent être plus ou moins importants suivant l’application.
Les outils sont déjà là
Les dispositifs en question sont variés. Certains servent à la gestion de projet de flux de travail, d’autres effectuent une analyse statistique du code, tandis qu’une troisième catégorie se base sur l’IA. Il convient de comparer les fonctionnalités de chacun d’entre eux pour répondre aux besoins de l’entreprise.
Les systèmes de revue de code les plus communs visent en premier lieu à améliorer la collaboration entre les développeurs, en favorisant un contrôle par les pairs. Ces applications peuvent intégrer la révision du programme et en faire une étape de son élaboration, sans que cela exige des efforts supplémentaires. Le service de gestion de projets Basecamp, le système de dépôt de code Git, ou encore l’outil de suivi des erreurs Atlassian Jira sont conçus pour améliorer la qualité du développement.
De nombreux utilitaires prennent en charge un ou plusieurs modèles coopératifs ou collaboratifs. Les produits tels que Collaborator de SmartBear et Devart’s Review Assistant, ou des options open source comme Codestriker ou Gerrit proposent ce type de fonctions.
Certains outils doivent améliorer également le respect des processus. Ceux-ci définissent les liens entre les personnes et les tâches à effectuer, puis s’assurent de leur exécution. Les stratégies de conformité d’entreprise impliquent souvent la mise en application de workflows. Cette pratique s’applique à la programmation pour aider à respecter les cadres de gouvernance ou des réglementations particulières.
Integrify, Kissflow et Pipefy sont des éditeurs populaires d’applications de gestion de workflows, mais les entreprises peuvent combiner différents outils de développement et de collaboration afin d’obtenir le même résultat.
Une autre catégorie répandue d’outils de revue de code se concentre sur la gestion des composants, de la structure des données et des API. Ces services détectent les changements et suivent les dépendances d’un logiciel, y compris les espaces de stockage où sont hébergés les tables, les objets, les enregistrements et autres graphes utilisés pour d’autres applications.
Les équipes peuvent suivre les modifications apportées au code, aux structures de données et aux spécifications de l’API qui sont stockées dans un répertoire contrôlé par version. Puis, elles évaluent comment ces modifications affectent les autres systèmes et composants. Les environnements de développement intégrés (IDE) embarquent les fonctionnalités nécessaires à la gestion de ces différents éléments. Il convient de mettre en place un répertoire et s’assurer que les bonnes pratiques de codage sont appliquées. Les développeurs qui adoptent cette approche veulent créer une source unique de vérité. Tout le code et tout son historique sont dans le dépôt de référence.
Automatiser et renforcer les standards
Avec la revue de code automatisée, les responsables appliquent une analyse statique du code pour évaluer si les programmeurs ont respecté les pratiques établies. Toutefois, cette pratique ne vise pas à chasser les bugs, mais fait respecter les normes spécifiques de l’entreprise en matière de développement. Il est primordial de disposer d’une trousse d’outils complète, capable de traiter la plupart des types d’examens décrits ici. En effet, les normes de conformité sont très spécialisées et peuvent changer souvent au sein d’une organisation.
Le principe de base de l’automatisation consiste à exercer un contrôle sur le processus « pull and commit » (publication des modifications, puis sauvegarde permanente des éléments) au sein d’un dépôt Git. Les outils correspondants analysent le code à la recherche d’erreurs communes et le non-respect de pratiques établies. Il y a de nombreuses solutions disponibles, dont une bonne partie est open source. Codacy, Code Climate et Codebeat sont proposés sous une licence commerciale. Peu importe l’application choisie, il faut garder en mémoire que ces systèmes d’analyse automatisée souffrent d’une limitation importante. Bon nombre d’entre eux ne fonctionnent que pour un seul langage de programmation.
L’IA, vecteur de qualité
Beaucoup de chefs de projet considèrent l’IA comme la prochaine étape de la revue de code automatisée. Selon de nombreux utilisateurs, les outils basés sur l’intelligence artificielle permettent de réaliser des examens proches de ceux effectués par une équipe dédiée dans des délais bien plus courts. Certains pensent même que cette technologie surpasse la révision humaine, car elle détecte davantage de problèmes et assimile plus de facteurs à surveiller.
Dans la catégorie IA, nous pouvons citer les produits AI Reviewer, DeepCode, SapFix de Facebook et IntelliCode de Microsoft. Certains d’entre eux basent leurs analyses sur les pratiques adoptées dans les grands projets publics hébergés dans un dépôt Git. Encore une fois, tous les langages de programmation ne sont pas pris en compte. Par exemple, AI Reviewer est spécifique au langage C++, au moment de la publication de cet article.
Si ces solutions intelligentes attirent l’attention, les entreprises peuvent rencontrer des difficultés à les utiliser dans leur chaîne d’outillage qui repose sur un autre modèle d’examen. Il faut donc évaluer la pertinence et les avantages offerts par ces dernières. Si l’IA ne convient pas, l’analyse statique de programmes peut faciliter la tâche des développeurs.