Qué es SonarCloud: Análisis de calidad de código y métricas
SonarCloud es una plataforma en la nube para el análisis estático de código, que permite evaluar la calidad y seguridad del software de forma continua. Se integra con repositorios de código como GitHub y ofrece análisis para múltiples lenguajes de programación, incluyendo Java, Python, JavaScript y muchos más.
Con SonarCloud, se pueden detectar bugs, vulnerabilidades y code smells en el código fuente antes de que lleguen a producción. Además, proporciona métricas detalladas sobre la cobertura de pruebas, la duplicación de código y el nivel de deuda técnica.
SonarCloud puede implementar Quality Gates, que actúan como puntos de control para garantizar que el código cumple con ciertos estándares de calidad antes de integrarse en la rama principal. Si el código no supera estos umbrales definidos, se puede bloquear su incorporación hasta que se realicen las correcciones necesarias.
La integración con GitHub permite que los análisis de SonarCloud se ejecuten automáticamente mediante GitHub Actions, proporcionando retroalimentación inmediata en las solicitudes de extracción (pull requests).
SonarCloud también ofrece una interfaz web intuitiva donde se visualizan todas las métricas y resultados de análisis. Desde allí, se pueden explorar detalles específicos, asignar problemas a miembros del equipo y seguir el progreso de la mejora continua.
¿Te está gustando esta lección?
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
Configuración de SonarCloud en proyecto Spring Boot para GitHub Actions
Para integrar SonarCloud en un proyecto Spring Boot y utilizar GitHub Actions para análisis continuos, se deben realizar configuraciones tanto en SonarCloud como en el repositorio de GitHub.
Primero, se necesita crear una cuenta en SonarCloud o acceder si ya se dispone de una. Se recomienda utilizar la autenticación vía GitHub para facilitar la integración y permitir que SonarCloud acceda a los repositorios necesarios.
Dentro de SonarCloud, se crea una organización o se utiliza una existente. Esta organización debe estar vinculada al repositorio de GitHub que contiene el proyecto Spring Boot. Para ello, se otorgan los permisos necesarios a SonarCloud para acceder a los repositorios en GitHub.
A continuación, se añade el proyecto a SonarCloud. Se selecciona la opción de importar un proyecto desde GitHub y se elige el repositorio correspondiente. SonarCloud asignará un identificador único al proyecto, que será necesario para las configuraciones posteriores.
Tras elegir un repositorio SonarCloud lo analiza automáticamente:
Ejecución del análisis de forma automatizada con GitHub Actions
Si se quiere que cuando se haga un commit y push se ejecute el análisis automáticamente con GitHub Actions, se puede configurar en Adminstración y método de análisis:
Después pulsar y configurar GitHub Actions:
Después veremos las instrucciones exactas para configurarlo:
Para que GitHub Actions pueda ejecutar el análisis en SonarCloud, se requiere un token de autenticación. El token se ha generado en pantalla, se copia y se pega en el repositorio de GitHub:
Después es nececesario crear el workflow en el repositorio de GitHub, este es un ejemplo de un workflow:
name: WorkFlow 1 paso con SonarCloud
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
services:
selenium:
image: selenium/standalone-chrome
ports:
- 4444:4444
options: --shm-size=2g
steps:
# 1. Checkout the repository
- uses: actions/checkout@v4
# 2. Cache SonarQube Cloud packages
- name: Cache SonarQube Cloud packages
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
# 3. Cache Maven packages
- name: Cache Maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
# 4. Set up JDK 23
- name: Set up JDK 23
uses: actions/setup-java@v4
with:
java-version: '23'
distribution: 'temurin'
cache: maven
# 5. Install dependencies
- name: Install dependencies
run: mvn install
# 6. Run tests with coverage
- name: Run tests with coverage
run: mvn clean verify
# 7. Upload Jacoco coverage to SonarCloud
- name: Análisis con SonarCloud
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: mvn org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=alansastre_spring-github-actions -Dsonar.organization=alansastre -Dsonar.host.url=https://sonarcloud.io
# Construir imagen docker
# - name: Construir imagen docker
# run: docker build -t alansastre/spring-github-actions .
#
# # Push docker image to docker hub
# - name: Push docker image to docker hub
# run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin && docker push alansastre/spring-github-actions
Se puede ver el repositorio entero aquí.
A partir de ahora cada vez que se hace commit y push se analiza automáticamente el proyecto:
Aprendizajes de esta lección
- Entender los beneficios de usar SonarCloud para el análisis de calidad del código.
- Aprender a integrar SonarCloud con un repositorio de GitHub.
- Configurar un proyecto Spring Boot para ser analizado por SonarCloud.
- Implementar GitHub Actions para análisis automatizados en cada cambio de código.
- Crear un archivo de propiedades 'sonar-project.properties'.
- Generar y usar un token de autenticación en GitHub Secrets.
- Configurar un workflow en GitHub Actions para SonarCloud.
Completa Git y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs