User Tools

Site Tools


apuntes:calidad

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:calidad [2021/03/05 17:16] – [Pruebas de rendimiento] Santiago Faciapuntes:calidad [2021/03/07 21:40] (current) – [JConsole] Santiago Faci
Line 11: Line 11:
 === Máquina virtual con SonarQube === === Máquina virtual con SonarQube ===
  
-[[https://bitnami.com/stack/sonarqube/virtual-machine|Máquina virtual con SonarQube de Bitnami]]+Para comenzar a trabajar con [[https://www.sonarqube.org/|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 [[https://bitnami.com/stack/sonarqube/virtual-machine|Máquina virtual con SonarQube de Bitnami]] y la importaremos desde [[https://www.virtualbox.org|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> <figure>
Line 18: Line 22:
 </figure> </figure>
  
-=== Configurar Maven con SonarQube ===+A continuación veremos los pasos que se han de seguir para poner en marcha la máquina virtual de Sonarqube: 
 + 
 +{{ youtube>qh0UWUndgpk }}\\ 
 + 
 +==== 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): 
  
 <file xml settings.xml> <file xml settings.xml>
Line 37: Line 49:
 </settings> </settings>
 </file> </file>
 +
 +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:
  
 <code xml> <code xml>
Line 53: Line 67:
 . . . . . .
 </code> </code>
 +
 +Asi, en cualquier momento, podremos lanzar el análisis contra SonarQube ejecutando **mvn sonar:sonar** tras compilar previamente el proyecto.
  
 <code bash> <code bash>
Line 70: Line 86:
 [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------
 </code> </code>
 +
 +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> <figure>
Line 75: Line 93:
 <caption>Vista 'Projects' en SonarQube</caption> <caption>Vista 'Projects' en SonarQube</caption>
 </figure> </figure>
 +
 +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> <figure>
Line 80: Line 100:
 <caption>Estado del proyecto en SonarQube</caption> <caption>Estado del proyecto en SonarQube</caption>
 </figure> </figure>
 +
 +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> <figure>
Line 85: Line 107:
 <caption>Issues en el código del proyecto</caption> <caption>Issues en el código del proyecto</caption>
 </figure> </figure>
 +
 +{{ youtube>GNo0aNPiBOg }}
 +
 +==== 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 nuestro 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.
 +
 +{{ youtube>1CMikzmbtjk }}
  
 ==== Integrar SonarQube con Jenkins ==== ==== Integrar SonarQube con Jenkins ====
Line 99: Line 129:
 {{ jconsole.png?100 }} {{ jconsole.png?100 }}
 </figure> </figure>
 +
 +[[https://docs.oracle.com/javase/10/management/using-jconsole.htm#JSMGM-GUID-77416B38-7F15-4E35-B3D1-34BFD88350B5|JConsole]] es una herramienta de las conocidas como APM (Application Performance Monitoring) tools, puesto que permite monitorizar la ejecución de aplicaciones Java.
 +
 +Permite monitorizar multitud de aspectos en aplicaciones Java locales y remotas: uso de CPU, memoria utilizada, hilos en ejecución, . . . y también realizar volcados de memoria del Heap de Java.
  
 === Ejecutar JConsole === === Ejecutar JConsole ===
 +
 +Viene disponible "de serie" con cualquier versión de JDK por lo que para instalarla solamente debemos ejecutar el comando ''jconsole'' desde la consola:
  
 <code bash> <code bash>
Line 132: Line 168:
 </figure> </figure>
  
-[[https://visualvm.github.io/|VisualVM]]+[[https://visualvm.github.io/|VisualVM]] es otra herramienta de las conocidas como APM (Application Performance Monitoring) tools, puesto que permite monitorizar la ejecución de aplicaciones Java.
  
 +Permite monitorizar multitud de aspectos en aplicaciones Java locales y remotas: uso de CPU, memoria utilizada, hilos en ejecución, . . . y también realizar volcados de memoria del Heap de Java.
  
 <figure> <figure>
 {{ visualvm-monitor.png }} {{ visualvm-monitor.png }}
-<caption>Monitor de memoria (Tomcat)</caption>+<caption>Monitor de CPU, memoria (Heap), carga de clases e hilos en ejecución</caption>
 </figure> </figure>
  
Line 144: Line 181:
 <caption>Hilos de ejecución (Tomcat) </caption> <caption>Hilos de ejecución (Tomcat) </caption>
 </figure> </figure>
 +
 +A continuación, en el siguiente video se puede ver como iniciar la monitorización de un aplicación local Java y algunos aspectos importantes a tener en cuenta sobre la misma que ayudará a interpretar los datos y gráficos que muestra la aplicación:
 +
 +{{ youtube>8BS4mcr_5QM }}\\
 +
 +==== Memory Analyzer ====
 +
 +{{ mat.png?200 }}
 +
 +https://www.eclipse.org/mat/
  
 ---- ----
apuntes/calidad.txt · Last modified: 2021/03/07 21:40 by Santiago Faci