Integración de SonarQube con HCL Commerce 9
por Rúnar Sverrisson, 7/29/2020, 2:04:59 PMIntroducción a SonarQube
SonarQube es un conjunto de herramientas de código abierto para medir y analizar la calidad del código fuente. Está implementado en el lenguaje Java y es capaz de analizar el código de unos 20 lenguajes de programación diferentes. Cualquier cosa que afecte al código base, desde pequeños detalles de estilo hasta errores críticos de diseño, es inspeccionado y evaluado por SonarQube, lo que ayuda a nuestros desarrolladores a identificar el problema y su efecto.
SonarQube es perfecto para usar en un entorno CD/CI, como una herramienta capaz de analizar el código antes de su despliegue. ¿Es nuestro código lo suficientemente bueno para desplegarlo? ¿Deberíamos suspender el despliegue hasta que la calidad del código coincida con un estándar establecido? SonarQube nos da los datos que necesitamos para tomar estas decisiones.
Más información sobre SonarQube en esta página.
Introducción a SonarLint
SonarLint es un plugin para varias aplicaciones IDE, como Eclipse o IntelliJ IDEA, que funciona como una herramienta local de análisis de código SonarQube. Ayuda a los desarrolladores a arreglar problemas de calidad del código antes de subir el código al repositorio. Puede hacer un nuevo análisis sobre las partes cambiadas de un archivo cuando se guarda o analizar un proyecto entero (o un archivo) bajo demanda.
SonarLint es una herramienta maravillosa para nuestros proyectos, ya que sirve para hacer el análisis del código durante el proceso de desarrollo. De esta manera, los desarrolladores pueden prevenir y corregir problemas antes de enviar su código. También se puede vincular a un servidor de SonarQube para actualizar las reglas de análisis cuando son cambiadas por el director del proyecto o el equipo de control de calidad, para que todo el equipo siga las mismas reglas.
Más información sobre SonarLint en esta página.
Instalación actual SonarQube
Actualmente en nuestra empresa tenemos dos instalaciones de SonarQube en diferentes máquinas de nuestra red local. Una de ellas puede ser enlazada con un SonarLint local y está destinada a ser utilizada por nuestros equipos en sus proyectos.
La otra instalación es una versión más antigua que actualmente sólo está siendo utilizada por el equipo de control de calidad. Este SonarQube no puede funcionar bien con SonarLint, pero es muy útil para probar nuevas reglas y configuraciones antes de usarlas en la principal.
Como instalar SonarLint en HCL Rational Application Developer
El análisis de SonarQube se ejecuta en el código que ya está en el repositorio, pero SonarLint está integrado en cada IDE de los desarrolladores. Esto significa, en nuestros proyectos de Comercio, que necesita ser integrado en HCL Rational Application Developer, que es el RAD de IBM bajo un nombre diferente, al menos hasta que HCL publique su primera revisión del IDE. RAD está basado en Eclipse, con todas las herramientas y plugins que IBM decidió integrar para convertirlo en la herramienta perfecta para usar cuando se desarrolla una aplicación de comercio electrónico de Websphere Commerce (ahora HCL Commerce).
Una de las características más rígidas de IBM RAD para los desarrolladores es que ha sido concebido como una caja negra inmutable, no dando a los desarrolladores la posibilidad de añadir o integrar fácilmente herramientas o plugins como en el Eclipse básico. Esta restricción puede y debe ser superada para instalar SonarLint, y el proceso es relativamente simple. Los siguientes pasos muestran cómo instalar SonarLint en el IDE RAD para Websphere Commerce versión 9.X
- Primero que nada, con RAD cerrado, necesitamos localizar el JRE que RAD usa para lanzar el IDE. Al igual que Eclipse, se inicia como una aplicación Java, asociada a una instancia de JRE.
- Una vez allí, necesitamos editar el archivo java.security, ubicado en el directorio lib/security/. Querremos restaurar el contenido del archivo más tarde, así que hacer una copia de seguridad del archivo es una buena idea. El archivo puede ser editado con cualquier programa de edición de texto plano. En el archivo, necesitamos localizar las entradas que comienzan con "ssl.KeyManagerFactory" y "ssl.TrustManagerFactory", y vaciar sus valores. Esto es para evitar que RAD no pueda conectarse al host de los archivos necesarios para la instalación del plugin. Edita esos valores y guarda los cambios.
- Ahora abre RAD, y cuando esté listo, accede a la opción "Eclipse Marketplace...", situada en el menú de ayuda de la cabecera. Al abrirlo, podemos simplemente buscar "SonarLint" y debería mostrar algo como esto:
- Seleccionamos el enlace Instalar para iniciar el proceso. Es un proceso bastante sencillo que sólo requiere presionar "Siguiente" cuando se le pide. Una vez que termine, el proceso probablemente dirá que para aplicar los cambios se requiere reiniciar el RAD. Aunque no lo diga, ciérralo.
- Ahora vuelve al archivo java.security y restaura los cambios realizados. Si hiciste una copia de seguridad del archivo original, ahora es el momento de utilizarlo. Si no lo hiciste, recupera el contenido tal como estaba, guarda y cierra el archivo.
- El proceso ha terminado. La próxima vez que inicies RAD, puede que requiera un poco más de tiempo de lo normal para iniciar el juego de herramientas, pero SonarLint estará disponible.
SonarLint vsita en RAD
SonarLint tiene cuatro vistas para mostrar o manejar diferentes datos:
- Informe de SonarLint: muestra todas las violaciones de las reglas detectadas en el ámbito completo del último análisis, sin importar en qué elemento o archivo de código estamos actualmente.
- SonarLint On-The-Fly: muestra todas las violaciones de reglas detectadas en el archivo de código en el que estamos actualmente. Su diseño y los datos que muestra son idénticos a los del informe de SonarLint.
- Descripción de la regla de SonarLint: Muestra la documentación sobre la violación de código seleccionada. Para mostrar aquí un error específico, podemos seleccionarlo ya sea en SonarLint Report o en SonarLint On-The-Fly, o bien hacer un hover en una línea marcada con una violación de regla y seleccionar la opción "Abrir descripción de la regla" en el tooltip.
- Servidores de SonarQube: Maneja los servidores de SonarQube que están enlazados a SonarLint y la relación entre los proyectos de código y los proyectos de SonarQube. Más sobre este tema en el siguiente punto.
Vinculando SonarLint a SonarQube
Aunque SonarLint puede ser muy poderoso por sí mismo, funciona mejor cuando está conectado a SonarQube. Este enlace (denominado en la herramienta "binding") permite la opción de que los equipos gestionen las reglas establecidas en un lugar (SonarQube) y apliquen esas reglas en múltiples lugares (SonarLint en las máquinas del equipo de desarrollo) a través de un proceso de carga automatizado.
Lo único que se requiere es tener un análisis hecho en SonarQube, y vincular ambas herramientas. Tener un análisis hecho en SonarQube es importante por la forma en que funciona la vinculación. Si SonarLint se vincula a un proyecto de SonarQube que no existe o no está vinculado a ningún servidor de SonarQube, analizaría el código con el conjunto de reglas predeterminadas definidas por SonarQube y los creadores de SonarLint. Este conjunto de reglas es bastante bueno por sí mismo, pero algunos equipos podrían querer personalizar su conjunto de reglas de código, y el conjunto de reglas a utilizar se establece en SonarQube y luego es aplicado por SonarLint gracias a este vínculo.
- Para hacer este enlace, primero que nada necesitarás agregar el servidor de SonarQube en la vista Servidores de SonarQube. Si no tienes ningún servidor de SonarQube enlazado, la vista mostrará un enlace para crear una conexión. Si ya tienes una conexión configurada, simplemente haz clic con el botón derecho del ratón, selecciona New, y Server connection.
- Asegúrate de seleccionar la opción "Connect to a server", y haz click en Next. En el siguiente paso, introduce la url de tu servidor de SonarQube.
- En los dos pasos siguientes, tienes que seleccionar la opción de identificación del servidor, e introducir los datos de autenticación. Hay dos opciones: o bien tu nombre de usuario y contraseña para acceder a SonarQube, o un token (generado en SonarQube). Esto requiere que tengas una cuenta en el servidor de SonarQube, pero no es necesario que sea una cuenta de administrador.
Escribe un alias para la conexión (se mostrará en la vista) y el proceso habrá terminado. - Aparecerá una nueva ventana, sugiriendo que se vincule un proyecto local a SonarQube. Selecciona el botón "Add", selecciona el proyecto deseado en la lista y haz clic en Next.
- En el siguiente paso, introduce el id de proyecto de SonarQube. Este es el id en SonarQube, si ya has hecho un análisis con SonarQube, que no necesariamente es el mismo que el nombre mostrado del proyecto. Este id se establece cuando se hace el primer análisis en SonarQube. Una vez finalizado este paso, haz clic en finalizar en el asistente y el IDE realizará las operaciones para la vinculación. Hecho!
Cambiar reglas en SonarQube
SonarQube maneja diferentes conjuntos de reglas de análisis a través de lo que llama Perfiles de Calidad. Si necesita información sobre el proceso de cambio de las reglas, puede encontrar la documentación oficial.
Sólo debes saber que estos cambios no se aplicarán inmediatamente a SonarLint.
Presta atención en SonarQube a los perfiles de calidad seleccionados para tu proyecto. Puedes verlos en la página principal del tablero del proyecto. Estos son los conjuntos de reglas aplicados en el análisis de SonarQube, y serán los que utilice SonarLint después de la siguiente sección.
Actualizar reglas SonarLint’s
Cuando hayas hecho alguna personalización a las reglas de análisis en SonarQube o cambiado el conjunto de reglas, seguramente querrás compartir los cambios con el equipo. Eso es fácil de hacer, y requiere poco esfuerzo de los miembros de su equipo:
Necesitan ir a la vista de Servidores de SonarQube, y seleccionar el servidor configurado. Hacer clic con el botón derecho, seleccionar "Actualizar todos los enlaces del proyecto", y esperar a que el proceso de fondo termine.
Hecho!
Ahora SonarLint usará el conjunto de reglas seleccionadas en SonarQube al analizar el proyecto.