Brancher Sonar à Jest pour afficher la couverture de code du frontend

December 10, 2020

Sonar est un outil de test de la qualité de code. Il se base sur un ensemble de règles qui ont une sévérité : code smell, bug, vulnerability, security hotspot. Sonar permet aussi d’afficher les résultats de la couverture de code, c’est à dire le pourcentage de lignes de code qui est testée dans l’application. Il ne se charge cependant pas du calcul à proprement parler.

Par exemple, pour un projet JAVA basé sur Maven, c’est en général le plugin Maven Jacoco qui se charge du calcul de la couverture. Il suffit de déclarer ce plug-in et le tour est joué. Pour l’analyse de code du frontend (basé bien souvent sur le langage Javascript, ou Typescript), il va falloir effectuer une conversion des rapports de couverture de code depuis Jest (l’outil de test frontend) vers Sonar. Nous allons voir comment.

Générer nos rapports de tests Jest

Flag coverage

Pour générer vos rapports de tests d’une application frontend via Jest, il faut ajouter le flag coverage. Cela va générer un répertoire coverage contenant tous les rapports de test au format Jest. La commande pour executer les et les rapports associés est donc :

npm run test --coverage

Flag watchAll

Nous ne voulons pas que nos tests s’executent en mode watch (bien que cette fonctionnalié peut s’avérer intéressante dans d’autres circonstances). Nouus allons donc la désactiver via la cxommande watchAll=false : Notre commande devient donc :

npm run test --coverage --watchAll=false

Conversion des rapports Jest vers Sonar

Nos rapports sont correctement générés dans le répertoire coverage, il faut donc les transformer en un format compréhensible par Sonar. C’est l’objet de la librairie jest-sonar-reporter. Il suffit d’ajouter le flag testResultsProcessor.

Notre commande devient donc:

npm run test --coverage --watchAll=false --testResultsProcessor=jest-sonar-reporter

Il faut aussi mettre à jour ou mettre à jour la configuration Sonar pour appeler le bon rapport : sonar.testExecutionReportPaths=test-report.xml (Par défaut le fichier généré par jest-sonar-reporter est test-report.xml.)

Lancer l’analyse Sonar, et le tour est joué! Vous devriez avoir vos beaux rapports de couverture de code Jest dans Sonar!


Ecrit par Sylvain Maestri qui vit et travaille à Paris, et qui aime construire des applications WEB avec les langages Java & Javascript, et appliquer les bons patterns de programmation SOLID, TDD, BDD et DDD. Me suivre sur Twitter

Vous voulez apprendre ou améliorer vos compétences avec Spring (Core, MVC, Data, Security) et React?
Suivez ma formation sur Udemy où nous apprendront les fondamentaux et développerons ensemble une application!