SonarQube - Cobertura de código fuente

Hola a todo@s, en la siguiente entrada os quiero presentar como incorporar al informe del análisis de código fuente que realiza SonarQube, el informe de la cobertura de código fuente a través de sus tests de covertura.

Hay que informar, que SonarQube, no se encarga de lanzar los procesos de cobertura de código, lo único que hace es recoger unos informes generado por vuestra plataforma de desarrollo, he integrarlo en el informe global de SonarQube.

Aun que toda la información para realizar la cobertura las tenéis en los enlaces oficiales de SonarQube (Test Coverage & Execution) y de su comunidad ([Coverage & Test Data] Generate Reports for C#, VB.net), he de reconocer que me ha costado entender como funciona y por eso espero poder dejar un poco más claro su funcionamiento.

Los objetos que persigue la entrada son los siguientes:

  • Configurar la ejecución de los proyectos de tipo test fuera de Visual Studio
  • Ejemplo de agregar la cobertura de código al informe de SonarQube

Configurar la ejecución de los proyectos de tipo test fuera de Visual Studio

En este apartado lo que se pretende es configurar una serie de rutas físicas de Visual Studio relacionadas con los proyectos de tipo test, con el fin de no tener que manejar esas rutas físicas en los comandos de ejecución de las pruebas unitarias y pruebas de cobertura por la línea de comando.

Para lanzar las pruebas unitarias y la cobertura de código a través de una consola, son necesarios ejecutar los comandos vstest.console.exe y CodeCoverage.exe que se encuentran en mi caso, por usar un Visual Studio 2019 Enterprise, en las rutas C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow y C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Dynamic Code Coverage Tools

Por ello, se han configurado las rutas a nivel de máquina, para facilitar su manejo y no estar pendiente de las rutas físicas.

Ejemplo de agregar la cobertura de código al informe de SonarQube

Para agregar la cobertura de código al análisis de SonarQube, se van a agregar las líneas de comandos relacionadas con la cobertura de código sobre las líneas de comando de analizar el código fuente del proyecto.


    SonarScanner.MSBuild.exe begin /k:"[Key-Proyecto]" /n:"[Nombre-Proyecto]" /v:"[Versión]" /d:sonar.cs.vscoveragexml.reportsPaths="VisualStudio.coveragexml"
    MSBuild.exe /t:Rebuild
    del "VisualStudio.coveragexml"
    del "VisualStudio.coverage"
    vstest.console.exe /EnableCodeCoverage "[Ruta relativa del fichero DLL del proyecto de tipo test]"
    CodeCoverage.exe collect /output:"VisualStudio.coverage" "vstest.console.exe" "[Ruta relativa del fichero DLL del proyecto de tipo Test]"
    CodeCoverage.exe analyze /output:"VisualStudio.coveragexml" "VisualStudio.coverage"
    SonarScanner.MSBuild.exe end
       

Los comandos del que se encargan de eliminar los ficheros VisualStudio.coveragexml y VisualStudio.coverage se hacen porque si ya se ha generado una cobertura de código, al volver a ejecutar los scripts, no sobrescribe los ficheros y entonces no se actualiza en el análisis de SonarQube, y así nos aseguramos de que siempre se vuelve a generar cada vez que se ejecuta el script.

Tras ejecutar el escaneo del proyecto, en el DashBoard de SonarQube, ya debería de aparecer en el informe, la sección de cobertura rellena.

Visión global del análisis de SonarQube con la cobertura de código agregada

Representación gráfica de la cobertura de código a través de sus ficheros analizados

A continuación, os dejo un ejemplo de las sentencias lanzadas para realizar todo este análisis de código en SonarQube, para que dispongáis un ejemplo real y espero que esto os ayude a tener un código más mantenible en el futuro.


    SonarScanner.MSBuild.exe begin /k:"SonarQube-key" /n:"SonarQube" /v:"2.0" /d:sonar.cs.vscoveragexml.reportsPaths="VisualStudio.coveragexml"
    MSBuild.exe /t:Rebuild
    del "VisualStudio.coveragexml"
    del "VisualStudio.coverage"
    vstest.console.exe /EnableCodeCoverage "SonarQube.Test\bin\Debug\SonarQube.Test.dll"
    CodeCoverage.exe collect /output:"VisualStudio.coverage" "vstest.console.exe" "SonarQube.Test\bin\Debug\SonarQube.Test.dll"
    CodeCoverage.exe analyze /output:"VisualStudio.coveragexml" "VisualStudio.coverage"
    SonarScanner.MSBuild.exe end
       

Entradas populares de este blog

Cargar archivos desde PowerApps a bibliotecas de SharePoint

Menús desplegables relacionados en SharePoint Online

Generar contenido para páginas modernas con JSON