(+34) 673 566 782 - (+34) 960 653 052 formacion@imaginagroup.com

¿Cómo instalar SonarQube en Windows 10?

Hoy volvemos al ataque con SonarQube. Ya conoces esta plataforma de software libre para evaluar código fuente que usa diversas herramientas de análisis estático de código fuente como Checkstyle, PMD o FindBugs. Con ello obtiene métricas que pueden ayudar a mejorar la calidad del código de un programa.​

En este tutorial vamos a explicar cómo instalar SonarQube en Windows 10 y cómo configurarlo. Una vez tengamos todo funcionando, crearemos un proyecto Maven con Eclipse y analizaremos su código con la ayuda que nos brindan las herramientas de SonarQube.

Instalación de SonarQube

El primero de los pasos que tenemos que realizar es descargar SonarQube.

Una vez se haya descargado correctamente, descomprimimos el archivo y comprobamos la ruta adecuada al sistema operativo que vamos a utilizar para desplegar SonarQube. Dado que para este tutorial, estaremos usando Windows, accederemos a la carpeta bin y dentro de ésta, accederemos a windows-x86-64 si trabajamos con 64bits, o a windows-x86-64 en caso de utilizar 32bits.

Dentro de esta carpeta encontraremos el archivo con el que iniciaremos SonarQube en nuestro entorno local. El nombre del archivo en cuestión es startsonar.bat:

El tercer paso será el de configurar las variables de entorno de nuestro sistema. Para ello, procedemos a Editar las variables de entorno del Sistema.

Editamos la variable Path, del sistema o del usuario, para crear una nueva:

Obtenemos la dirección donde tenemos alojado nuestro SonarQube y creamos una nueva variable con dicha dirección. En el ejemplo se muestra una dirección que no tiene por qué coincidir con la que tú debas introducir, por ello, asegúrate bien de que la dirección que introduces es la correcta.

Ahora ya deberíamos ser capaces de ejecutar SonarQube desde el CMD de Windows. Comprobar que en efecto, SonarQube se inicia correctamente. Para ello, se navega con la consola hasta la carpeta donde se aloja el archivo startsonar.bat y se ejecuta de la siguiente manera:

Una vez lanzado, podremos acudir a la dirección http://localhost:9000 para ver cómo se ha inicializado correctamente la aplicación de SonarQube.

Por defecto se lanzará en el puerto 9000, pero esto lo podemos modificar si acudimos al archivo de configuración sonar.properties que se encuentra en la carpeta conf de la carpeta de sonarqube-7.4 que hayamos descomprimido al inicio. El cambio de puerto se puede realizar descomentando el campo sonar.web.port y poner el que queramos.

Aquí podremos realizar login con el usuario y contraseña predefinidos: usuario: admin y contraseña: admin.

Creación de un proyecto Maven a través de Eclipse

En este punto ya tendríamos SonarQube inicializado y vamos a ver cómo integrarlo con un proyecto Maven de ejemplo creado con Eclipse.

Instalar Eclipse

El primer paso será el de instalar la última versión de Eclipse Photon a través del instalador de Eclipse.

Crear un proyecto Maven

Una vez instalado, iniciaremos Eclipse y crearemos un proyecto Maven que configuraremos para que SonarQube pueda analizarlo y ofrecernos información acerca de la calidad de su código, debilidades, duplicidades y riesgos.

Para facilitar la creación de un proyecto con una clase predeterminada y un archivo de test unitario, elegiremos la opción de maven-archetype-quickstart:

Le daremos un ID de Grupo (Group ID) y un ID de Artefacto (Artifact ID) para identificar nuestro nuevo proyecto Maven. Por ejemplo, podríamos definir sonar como Group ID y com.sonar.maven como Artifact ID:

Configurar Eclipse y un proyecto Maven

Una vez se haya creado el proyecto, debemos asegurarnos de un par de cosas:

  • Configurar correctamente el JDK en las preferencias de Eclipse
  • Configurar correctamente el archivo Pom.xml del proyecto para poder hacer uso de Junit para las pruebas y las configuraciones necesarias para conectar correctamente con SonarQube.

Configurar correctamente el JDK en las preferencias de Eclipse

Para poder configurar correctamente el JDK, deberemos descargarnos la última versión de JDK que se nos ofrece en la web oficial.

Una vez lo descarguemos e instalemos, deberemos asegurarnos de que tenemos bien configurado nuestro Eclipse y que usamos la JDK que hemos descargado, para ello acudimos a window > preferences y desplegamos la opción de Java, para seguido seleccionar la opción de Installed JREs:

Asegúrate también de que la variable de entorno de Java es la correcta (JAVA_HOME)

Configurar correctamente el archivo pom.xml del proyecto Maven

Ahora vamos a proceder a configurar el archivo pom.xml para utilizar algunos plugins que nos ayudarán a visualizar información en SonarQube y crear nuestros archivos de tests unitarios en el proyecto.

Deberemos asegurarnos de que el bloque Properties contiene la configuración de SonarQube necesaria para poder hacer uso de todas sus funcionalidades y definir el lenguaje que va a analizar.

properties
<!-- Propiedades de Sonar y asignación de Plugin Jacoco para medir Coverage del código -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.core.codeCoveragePlugin>jacoco</sonar.core.codeCoveragePlugin>
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
    <sonar.language>java</sonar.language>
  </properties>

Como se puede apreciar, hemos definido dos propiedades de Sonar que hacen referencia a Jacoco. La primera de todas es codeCoveragePlugin que sirve para indicar que queremos que el Coverage (Porcentaje de código cubierto con tests unitarios) va a ser jacoco. La segunda es la propiedad jacoco.reportPath donde se define el directorio donde se aloja el ejecutable de jacoco.exec que se creará cuando Maven se descargue todas las dependencias y plugins. Además, hemos incluido la propiedad languaje como Java, ya que el proyecto estará escrito en este lenguaje.

dependencies

Ahora debemos asegurarnos de que tenemos una última versión estable de JUnit:

 <!-- Dependencia JUnit para realizar Tests Unitarios -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
build
<!-- Plugin de Maven SureFire y Jacoco para detección de Coverage por parte de SonarQube -->
 <build>
   <plugins>
       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.18.1</version>
       </plugin>
       <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.7.9</version>
          <executions>
          <execution>
             <goals>
                     <goal>prepare-agent</goal>
             </goals>
              </execution>
         </executions>
         <configuration>
         <destFile>${sonar.jacoco.reportPath}</destFile>
         </configuration>
       </plugin>
  </plugins>
</build>

Como se puede apreciar, definimos el plugin de jacoco y el de maven-surefire-plugin.

Update del proyecto Maven

Una vez tengamos el archivo pom.xml deberemos actualizar el proyecto Maven para asegurarnos de que todas los cambios son reflejados correctamente.

Ahora hacemos click sobre el proyecto con el botón derecho.

Configuración de ejecución de Maven

Vamos a crear una configuración personalizada de ejecución del proyecto. Ésta contendrá un clean de Maven, para a continuación, realizar un install y lanzar sonar:sonar para desplegar la aplicación en SonarQube.

Crearemos una ejecución llamada Sonar Run definiendo el Workspace sobre el que estamos trabajando como Base Directory y como Goals incluiremos los comandos clean, install y sonar:sonar.

Le daremos a Apply y a Run para desplegar la aplicación en el servidor Sonar que deberá estar corriendo en localhost:9000.

Esta captura de pantalla se ha realizado sobre un proyecto ya en desarrollo. Si has ejecutado SonarQube en un proyecto creado desde cero, no tendrás vulnerabilidades, bugs o código duplicado.

Uso de cookies: Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies