====== Fábrica - Análisis de Código Fuente: SonarQube® ======
SonarQube® es una herramienta de revisión automática de código para detectar errores, vulnerabilidades y olores de código en su código. Puede integrarse con su flujo de trabajo existente para permitir la inspección continua del código en las ramas de su proyecto y solicitudes de extracción.((https://docs.sonarqube.org/latest/))
===== Procesos Previos =====
Antes de realizar un analisis de código fuente centralizado deben realizarse los siguientes procesos.
==== Usuario SonarQube ====
Es el usuario con el cuál se generarán los análisis de código de fuente de los proyectos. Este usuario es generado por equipo de desarrollo los cuales se listan a continuación:
* Java BPP
* Java Situ
* Java Otros
* .Net Alissta
Cada usuario es representado por un hash (token) el cuál es identificado como login al momento de ejecutar [[#Comando de ejecución del proyecto SonarQube|Comandos de ejecución de proyectos SonarQube]]
Nota:El hash generado por cada usuario debe utilizarse sólo con los proyectos bajo la gestión del equipo. Si se pierde el hash se debe solicitar al adminsitrador uno nuevo.
==== Solicitud de creación de proyecto SonarQube ====
Este es el proceso inicial que se debe realizar para implementar el análisis de código fuente centralizado y consiste en la creación del proyecto en el servidor SonarQube. Esta solicitud la debe realizar el lider de equipo al administrador del servidor SonarQube. Solo basta con enviar un correo donde se indique el nombre del proyecto el cual debe ser el mismo del proyecto de código fuente respetando mayusculas y minusculas. El administrador responderá con el [[#Comando de ejecución del proyecto SonarQube|Comando de ejecución del proyecto SonarQube]] el cual debera ser utilizado para los procesos de analsis.
==== Comando de ejecución del proyecto SonarQube ====
Es el comando que se genera al crear un proyecto de análisis de código fuente en el servidor **SonarQube** la estrucutra del comando es la siguiente según la tecnología y lenguaje de desarrollo y será entregada al equipo de desarrollo por medio del administrador:
=== Java: Maven ===
mvn sonar:sonar \
-Dsonar.projectKey=[Nombre del Proyecto] \
-Dsonar.host.url=[IP y Puerto del Servidor SonarQube] \
-Dsonar.login=[Token asociado al proyecto SonarQube]
Ejemplo:
mvn sonar:sonar \
-Dsonar.projectKey=MiProyecto \
-Dsonar.host.url=http://10.1.40.171:9000 \
-Dsonar.login=1234567890123456789012345678901234567890
=== Java: Gradle ===
Instale el plugin en las dependencias
plugins {
id "org.sonarqube" version "3.0"
}
Ejecute el comando
./gradlew sonarqube \
-Dsonar.projectKey=MiProyecto \
-Dsonar.host.url=http://10.1.40.171:9000 \
-Dsonar.login=1234567890123456789012345678901234567890
=== .Net: Core ===
Scanner .NET Core Global Tool
#As a prerequisite you need to have the sonarscanner tool installed globally using the following command:
dotnet tool install --global dotnet-sonarscanner
#Make sure dotnet tools folder is in your path. See dotnet global tools documentation for more information.
Execute the Scanner from your computer
#Running a SonarQube analysis is straighforward. You just need to execute the following commands at the root of your solution.
dotnet sonarscanner begin /k:"MiProyecto" /d:sonar.host.url="http://10.1.40.171:9000" /d:sonar.login="1234567890123456789012345678901234567890"
dotnet build
dotnet sonarscanner end /d:sonar.login="1234567890123456789012345678901234567890"
=== .Net: Framework ===
Download and unzip the [[https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-msbuild/|Scanner for .NET]] and add the executable's directory to the %PATH% environment variable
Execute the Scanner from your computer
#Running a SonarQube analysis is straighforward. You just need to execute the following commands at the root of your solution.
SonarScanner.MSBuild.exe begin /k:"MiProyecto" /d:sonar.host.url="http://10.1.40.171:9000" /d:sonar.login="1234567890123456789012345678901234567890"
MsBuild.exe /t:Rebuild
SonarScanner.MSBuild.exe end /d:sonar.login="1234567890123456789012345678901234567890"
El administrador o responsable de crear el proyecto responderá el correo con este comando el cuál deberá utilizarse al momento de lanzar un análisis centralizado.
===== Integrar SonarQube/SonarLint en los proyectos de la fábrica =====
==== Consideraciones previas ====
* En el alcance inicial solo se soporta el lenguaje java
* Solo se soportan los gestores de dependencias Maven((https://maven.apache.org/)), Gradle((https://gradle.org/))
* Antes de subir un análisis al servidor SonarQube debe existir el proyecto. Este debe ser solicitado al administrador carlos.torres.
=== Nota ===
La configuración de la integración SonarQube/SonarLint se realizará en entorno window 10 con maven 3.x
==== Configuración Global del repositorio ====
Lo primero que se debe hacer es ir a las configuraciones globales del gestor de dependencias en el usuario en sesión del sistema operativo. En el caso de window esta ruta por lo general se encuentra en C:\Users\Usuario\.m2\wrapper\dists\apache-maven[Versión Maven instalada]\[directorio hash del empequetado]\apache-maven-[Versión maven instalada]\conf\**settings.xml**. El archivo que debemos ubicar es el archivo **settings.xml** y en el debemos realziar la siguiente configuración:
=== Sección pluginGroups ===
Ubique la sección pluginGroups y copie el siguiente texto como se muestra en el siguiente código de ejemplo
org.sonarsource.scanner.maven
== Nota ==
Si existen más plugins registrado agregue la linea **org.sonarsource.scanner.maven** antes del final de la sección ****
=== Sección profiles ===
Ubique la sección **profiles** y al final copie el siguiente perfil como se muestra en el siguiente código de ejemplo
sonar
true
http://10.1.40.171:9000
Para finalizar guarde el archivo((En algunas configuraciones solicitará usuario administrador)) y con eso ya estará configurado el maven para lanzar análisis en el servidor SonarQube.
[[ada:howto:sicoferp:factory:sourcecodeanalyzer|←Volver atras]]