Passer au contenu principalAméliorer la couverture de code avec Devin
La plupart des applications en production n’ont pas une couverture de code de 100 %. Les équipes d’ingénierie doivent établir des priorités strictes et ont tendance à se concentrer sur l’écriture de tests pour les chemins critiques afin de tirer le maximum de valeur du temps investi. Devin peut combler cet écart en analysant le style de la suite de tests existante d’une base de code et en augmentant la couverture de fonctions moins critiques mais néanmoins importantes.
Pour cet exemple, nous allons utiliser une application d’exemple open source en TypeScript basée sur la spécification RealWorld, qui dispose déjà de quelques tests mais sans couverture exhaustive : https://github.com/SeuRonao/realworld-express-prisma
Vous pouvez suivre le Run complet ici, ou parcourir le reste de cet article qui met en avant chaque étape du processus de Devin. Nous mettrons en évidence différentes parties de l’espace de travail de Devin, comme l’éditeur ou le shell.
Nous commençons ce Run avec un simple prompt demandant à Devin de configurer notre environnement de développement et d’évaluer la couverture de code actuelle de notre application :
Dans son shell, Devin commence par cloner notre dépôt depuis GitHub, analyser le fichier README et installer les dépendances de notre projet dans son environnement local.
Devin utilise ensuite son éditeur intégré pour créer notre fichier .env afin que l’application puisse s’exécuter en local. Lorsque vous travaillez avec Devin, vous avez également la possibilité d’ouvrir vous-même VS Code pour effectuer des modifications manuelles ou examiner les fichiers sur lesquels Devin travaille.
Établir une base de référence pour la couverture
Devin exécute ensuite la suite de tests dans son Shell. L’un des principaux avantages de Devin est que non seulement il peut modifier ou créer du code pour votre équipe, mais il peut aussi travailler directement dans son navigateur et son Terminal pour effectuer des interactions de plus haut niveau avec votre base de code, son environnement de développement, ou même votre application en cours d’exécution.
On voit ci-dessous comment Devin a interprété et reformulé les résultats de son Shell dans notre chat afin de les rendre plus lisibles pour un humain et mieux synthétisés.
Élaborer un plan d’amélioration
Nous pouvons maintenant passer à la tâche principale : augmenter la couverture de code. Il semble que profileViewer.ts soit un bon point de départ, étant donné sa couverture pratiquement inexistante par défaut. Nous demandons à Devin quelles sont les prochaines étapes, et il nous informe de ce qui se passe tout au long du processus.
Devin est capable de lire le fichier existant, de déterminer quels cas de test nous pourrions vouloir implémenter en fonction des fonctionnalités présentes, puis d’écrire lui-même les nouveaux tests pour nous, sans aucune intervention de notre part. Une fois les nouveaux cas de test implémentés, Devin nous fournit un dernier récapitulatif de ses modifications :
Il partage également le nouveau fichier avec nous afin que nous puissions le télécharger et le relire. Nous aurions aussi pu demander à Devin de créer une Pull Request directement sur GitHub avec ce nouveau fichier pour qu’il soit examiné dans le cadre de notre processus habituel de revue de code. Je décide de simplement le relire dans l’éditeur intégré de Devin pour ne pas avoir à télécharger le fichier.
Globalement, les changements ont l’air bons, mais nous voulons nous assurer qu’il n’y a pas de bugs à l’exécution qui nous auraient échappé, donc nous demandons à Devin de relancer la suite de tests et de nous faire un retour.
Tout s’exécute comme prévu et nous avons augmenté notre couverture globale de 28,57 % des fonctions à 57,14 % des fonctions, ce qui est exactement ce que nous voulions atteindre. L’ensemble du processus n’a pris à Devin que moins de 10 minutes de travail à mettre en œuvre, même si nous nous sommes absentés entre-temps avant de donner à Devin notre prochaine série d’instructions. Vous pouvez augmenter la couverture de tests et retirer une tâche fastidieuse du backlog de votre équipe d’ingénierie simplement en la déléguant à Devin.
Si vous revenez souvent vers Devin pour augmenter la couverture de code, vous pouvez même transformer cette invite en un Playbook détaillé afin de pouvoir facilement lancer de nouvelles Runs pour différentes parties de votre application. Si vous souhaitez en savoir plus sur les types de Prompts pour lesquels Devin est particulièrement performant, consultez certains de nos exemples dans la documentation.