Git

Git

Tutorial Git: Análisis estático con SonarCloud

SonarCloud: Aprende a configurar un proyecto Spring Boot con GitHub Actions para análisis de calidad de código continuo y mejora de estándares.

Aprende Git y certifícate

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.

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.

SonarCloud crear proyecto

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.

SonarCloud crear repositorio

Tras elegir un repositorio SonarCloud lo analiza automáticamente:

SonarCloud análisis

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:

SonarCloud Integrar GitHub Actions

Después pulsar y configurar GitHub Actions:

SonarCloud GitHub Actions

Después veremos las instrucciones exactas para configurarlo:

Configurar workflow github actions

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:

sonar token

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:

SonarCloud análisis GitHub repo

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende Git online

Ejercicios de esta lección Análisis estático con SonarCloud

Evalúa tus conocimientos de esta lección Análisis estático con SonarCloud con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Git

Accede a todas las lecciones de Git y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Git y certifícate

Certificados de superación de Git

Supera todos los ejercicios de programación del curso de Git y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje 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.