User Tools

Site Tools


apuntes:calidad

This is an old revision of the document!


Calidad, pruebas y rendimiento

Calidad del código

SonarQube

Máquina virtual con SonarQube

Para comenzar a trabajar con SonarQube primero debemos contar con la herramienta instalada. Es una aplicación web que debe ser instalada en alguna máquina dentro de la red de forma que todos los desarrolladores tengan acceso a ella.

La instalación puede ser un tanto complicada pero nosotros contaremos con una máquina virtual que ya viene con la herramienta instalado y lista para usar. Asi, descargaremos la Máquina virtual con SonarQube de Bitnami y la importaremos desde VirtualBox.

Al iniciar esta nueva máquina virtual podremos ver en la pantalla la IP que le ha sido asignada (192.168.8.107 en mi caso) y también el usuario y contraseña del usuario de SonarQube que ya se encontrará creado en la herramienta (admin en mi caso). También podemos encontrar en esa pantalla (en rojo) el usuario y contraseña del usuario del sistema Linux de la máquina (bitnami/bitnami). Eso permite que podamos también iniciar sesión en el sistema por si tuvieramos que configurar o instalar alguna herramienta que necesitaramos.

Figure 2: Máquina virtual de Bitnami con SonarQube


Configurar Maven con SonarQube

Aunque la forma más habitual de utilizar SonarQube es hacerlo a través de Jenkins integrando ambas aplicaciones, también podemos lanzar directamente nuestro proyecto contra SonarQube para hacer un análisis del código en cualquier momento.

Lo primero que tenemos que hacer es indicarle a maven cuál es la ubicación de la máquina donde tenemos SonarQube instalado. Para eso, accedemos al fichero ~/.m2/settings.xml y añadimos la siguiente configuración (modificando la IP por la que corresponda en cada caso):

settings.xml
<settings>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.host.url>
                  http://192.168.8.107
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

Y ahora, en el fichero pom.xml de nuetro proyecto, añadiremos el plugin sonar-maven-plugin para poder lanzar al análisis de código contra el SonarQube que acabamos de configurar:

. . .
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.8.0.2131</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
. . .

Asi, en cualquier momento, podremos lanzar el análisis contra SonarQube ejecutando mvn sonar:sonar tras compilar previamente el proyecto.

santi@zenbook:$ mvn clean compile
santi@zenbook:$ mvn sonar:sonar -Dsonar.login=admin -Dsonar.password=sonar
. . .
. . .
[INFO] ANALYSIS SUCCESSFUL, you can browse http://192.168.8.107/dashboard?id=com.sanvalero.introrxjava%3AIntroRxJava
[INFO] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[INFO] More about the report processing at http://192.168.8.107/api/ce/task?id=AXfWTNYWvSx51keoM15i
[INFO] Analysis total time: 31.355 s
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  34.022 s
[INFO] Finished at: 2021-02-25T00:08:15+01:00
[INFO] ------------------------------------------------------------------------

Para ver los resultados, solamente tendrmeos que acceder a SonarQube introduciendo la IP de la máquina en el navegador (por ejemplo, http://192.168.8.109) y veremos, en la vista general, el proyecto para el que acabamos de lanzar el análisis. Si ya lo hubieramos lanzado antes, lo veríamos actualizado.

Figure 3: Vista 'Projects' en SonarQube

Si pinchamos en el proyecto, entraremos en la vista general del mismo, donde podremos ver algunos parámetros y detalles sobre el análisis del mismo:

Figure 4: Estado del proyecto en SonarQube

Y, por ejemplo, si accedemos ahora a la zona Issues del proyecto, podemos ver un informe totalmente detallado de todas las deficiencias que SonarQube ha encontrado en nuestro código. Para cada una de ellas nos ofrecerá, a parte de otras tantas acciones, una explicación y una forma de arreglarla, asi cómo la ubicación exacta del fichero de código donde se encuentra.

Figure 5: Issues en el código del proyecto

Revisar el análisis de código y corregir defectos en el código

A partir del análisis de código que queda registrado en SonarQube, podemos ver cuáles son los defectos que tiene nuesstro código en general (Overall) y también tras el último análisis realizado, con el objetivo de corregirlos en el proyecto para mejorar la calidad del mismo.

Integrar SonarQube con Jenkins

Monitorizar el rendimiento

JConsole

Ejecutar JConsole

santi@zenbook:$ jconsole
Figure 7: Selección de aplicación a monitorizar con JConsole
Figure 8: Vista general de la aplicación (Tomcat)
Figure 9: Monitor de memoria de JConsole (Tomcat)
Figure 10: Threads de ejecución (Tomcat)

VisualVM

VisualVM

Figure 12: Monitor de memoria (Tomcat)
Figure 13: Hilos de ejecución (Tomcat)



Pruebas de rendimiento

JMeter

Integrar JMeter con Jenkins

apuntes/calidad.1615126588.txt.gz · Last modified: 2021/03/07 14:16 by Santiago Faci