🔍 Analisando Qualidade de Código com SonarQube e Docker: Guia Completo

Se você trabalha com desenvolvimento de software, sabe o quanto é importante manter um código limpo, seguro e de fácil manutenção. Para isso, ferramentas de análise estática como o SonarQube são grandes aliadas.

Neste post, vou te mostrar como subir um ambiente SonarQube com Docker, analisar um projeto com o SonarScanner via CLI e ainda te explicar como ignorar arquivos específicos e ajustar regras de análise.


🚀 Subindo o SonarQube com Docker Compose

Vamos utilizar dois serviços:

  • SonarQube: Ferramenta de análise de qualidade de código.
  • PostgreSQL: Banco de dados utilizado pelo SonarQube.

A estrutura do docker-compose.yaml define variáveis de ambiente para os dois serviços e três volumes para persistência de dados:

services:
  sonarqube:
    image: sonarqube:lts-community
    depends_on:
      - db
    networks:
      - sonar_net
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar
    ports:
      - "9000:9000"
    volumes:
      - sonar_data:/opt/sonarqube/data
      - sonar_logs:/opt/sonarqube/logs

  db:
    image: postgres:13
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar
    networks:
      - sonar_net
    volumes:
      - sonar_db:/var/lib/postgresql

networks:
  sonar_net:
    driver: bridge
volumes:
  sonar_data:
  sonar_logs:
  sonar_db:
  

Principais volumes:

  • sonar_data: Dados da aplicação SonarQube.
  • sonar_logs: Logs gerados durante a análise.
  • sonar_db: Dados do banco PostgreSQL.

Comando para iniciar:

docker compose up -d

Após isso, o SonarQube estará disponível em http://localhost:9000.

🔎 Executando o SonarScanner via Docker

Para analisar o código, usaremos a imagem oficial sonarsource/sonar-scanner-cli:

docker container run --rm --network=host \
  -e SONAR_HOST_URL="http://localhost:9000" \
  -v "/caminho/para/seu/projeto:/usr/src" \
  sonarsource/sonar-scanner-cli \
  -Dsonar.projectKey=nome-do-projeto \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=SEU_TOKEN_DO_SONARQUBE
Parâmetro Função
--rm Remove o container ao fim da execução
--network=host Permite acesso à rede do host (necessário se o SonarQube estiver em localhost)
-v /seu/projeto:/usr/src Monta o código local dentro do container
-Dsonar.projectKey Nome do projeto no SonarQube
-Dsonar.sources=. Define o diretório onde o código será analisado
-Dsonar.login Token pessoal de acesso ao SonarQube

⚠️ IMPORTANTE!!!

- Certifique-se de que o diretório montado contenha o código a ser analisado.>
- O token informado no parâmetro `-Dsonar.login` precisa ser gerado no painel do SonarQube em **My Account > Security > Generate Tokens**.>
- Altere o valor de `sonar.projectKey` conforme o projeto a ser analisado.

🔒 Ignorando arquivos e diretórios na análise

Nem todo arquivo precisa ser analisado. Para ignorar testes, bibliotecas ou outros arquivos específicos, você pode:

Opção 1 – No comando do scanner:

-Dsonar.exclusions=/tests/,/node_modules/,**/*.spec.js

Opção 2 – Usando sonar-project.properties:

Crie este arquivo na raiz do projeto com:

sonar.projectKey=meu-projeto
sonar.sources=src
sonar.exclusions=**/test/**,**/scripts/**

# Ignorando regras específicas
sonar.issue.ignore.multicriteria=r1
sonar.issue.ignore.multicriteria.r1.ruleKey=squid:S00122
sonar.issue.ignore.multicriteria.r1.resourceKey=**/*.js

Você pode excluir arquivos, diretórios inteiros ou até regras específicas para tipos de arquivos.

🛠 Ajustando as regras de análise

O SonarQube organiza as regras em Quality Profiles. Para editar as regras:

  1. Acesse o painel do SonarQube (http://localhost:9000)
  2. Vá em Quality Profiles
  3. Escolha a linguagem desejada (ex: JavaScript, PHP, etc.)
  4. Clique em Deactivate nas regras que deseja desabilitar

Você também pode clonar um perfil e criar um conjunto de regras personalizado para seu time ou projeto.

🧭 Entendendo a Interface do SonarQube

Após realizar uma análise com sucesso, o SonarQube exibe um painel de controle com os principais indicadores de qualidade do seu projeto.

✅ Quality Gate Status

  • Passed: O projeto passou em todas as regras definidas no Quality Gate.
  • Se aparecer como Failed, é porque alguma métrica crítica (como cobertura de testes, vulnerabilidades, bugs, etc.) não atingiu o valor mínimo esperado.

📊 Painel de Métricas (Measures)

A aba Overall Code exibe um resumo completo da análise. Veja o que cada item significa:

Indicador Significado
Bugs Problemas no código que podem causar comportamentos incorretos.
Vulnerabilities Pontos que podem representar falhas de segurança exploráveis.
Security Hotspots Trechos de código que podem representar risco, mas exigem revisão manual.
Debt (Débito Técnico) Tempo estimado necessário para corrigir todos os problemas.
Code Smells Problemas que não afetam diretamente o funcionamento, mas prejudicam manutenção e legibilidade.
Coverage Percentual do código coberto por testes automatizados.
Duplications Porcentagem de linhas de código duplicadas em diferentes partes do projeto.
Duplicated Blocks Quantidade de blocos de código repetidos.
Unit Tests Número de testes unitários identificados (se configurado).

🔴 Indicadores Críticos

  • Reliability (E): A nota vai de A a E, baseada principalmente na quantidade de bugs. "E" é uma nota baixa, mas se o Quality Gate permitir, o projeto ainda pode passar.
  • Security Review (E): Significa que nenhum dos Security Hotspots foi revisado manualmente.
  • Maintainability (A) e Security (A): Indicam boa saúde nesses aspectos.

✅ Conclusão

Com essa estrutura, você consegue:

  • Rodar o SonarQube em qualquer ambiente com Docker
  • Analisar qualquer projeto local com o scanner CLI
  • Ignorar arquivos irrelevantes para a análise
  • Ajustar regras que não fazem sentido para sua realidade

Essa abordagem te dá controle total sobre a análise de qualidade do seu código, sem depender de ferramentas externas ou ambientes complexos.

Se quiser conferir o vídeo original onde baseei esse setup, dá uma olhada aqui:
🎥 Instalando e Configurando o SonarQube com Docker Compose

:P

Subscribe to Blog NH

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe