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
Last revisionBoth sides next revision
apuntes:calidad [2021/03/05 17:16] – [Pruebas de rendimiento] Santiago Faciapuntes:calidad [2021/03/07 21:39] – [VisualVM] 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 ===
Line 132: Line 166:
 </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 179:
 <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