Tecnologia além do código.
Régys Borges da Silveira

SonarQube e Delphi: Como Configurar Análise de Qualidade de Código em Projetos Delphi

Neste artigo 18 tópicos

A maioria dos sistemas Delphi possui uma característica em comum: são aplicações que evoluem durante muitos anos. ERPs, sistemas fiscais, aplicações industriais, financeiras e governamentais frequentemente acumulam milhares de linhas de código, dezenas de módulos e diversas equipes ao longo do tempo.

Nesse cenário, manter a qualidade do código passa a ser um desafio cada vez maior.

Questões como duplicidade de código, métodos excessivamente complexos, padrões inconsistentes, problemas de manutenção e até possíveis bugs podem se acumular silenciosamente durante anos.

É exatamente para esse tipo de situação que o SonarQube foi criado.

O SonarQube é uma das ferramentas de análise estática de código mais utilizadas do mercado e permite monitorar continuamente a qualidade dos projetos através de métricas, regras de validação e indicadores de manutenção.

Neste artigo vamos configurar uma instalação completa utilizando Docker, habilitar o suporte a Delphi através do Marketplace e executar nossa primeira análise de código.

O que é o SonarQube

O SonarQube é uma plataforma de inspeção contínua de código-fonte.

Sua função é analisar automaticamente o código e identificar problemas relacionados a:

  • Bugs potenciais
  • Vulnerabilidades
  • Complexidade excessiva
  • Código duplicado
  • Problemas de manutenção
  • Violações de padrões definidos pela equipe

Além disso, a ferramenta fornece indicadores históricos que permitem acompanhar a evolução da qualidade do projeto ao longo do tempo.

Entre os principais conceitos do SonarQube estão:

  • Project: Representa um sistema ou aplicação monitorada.
  • Scanner: Ferramenta responsável por coletar informações do código-fonte e enviá-las ao servidor.
  • Quality Profile: Conjunto de regras utilizadas durante a análise.
  • Quality Gate: Critérios mínimos de qualidade que o projeto deve atender.
  • Issues: Problemas encontrados durante a análise.

Arquitetura Utilizada

Neste artigo utilizaremos a seguinte arquitetura:

  • Docker
  • SonarQube Community Edition
  • PostgreSQL
  • Plugin Delphi instalado via Marketplace
  • SonarScanner CLI

O fluxo será simples:

  1. O SonarQube recebe e processa as análises.
  2. O Scanner analisa os fontes Delphi.
  3. Os resultados são enviados ao servidor.
  4. O SonarQube apresenta as métricas e problemas encontrados.

Instalando o SonarQube com Docker

Crie um arquivo chamado:

docker-compose.yml

Com o seguinte conteúdo:

services:

  sonarqube:
    image: sonarqube:community
    container_name: sonarqube

    depends_on:
      - postgres

    ports:
      - "9000:9000"

    environment:
      SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonarqube
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar

    volumes:
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_logs:/opt/sonarqube/logs
      - sonarqube_extensions:/opt/sonarqube/extensions

  postgres:
    image: postgres:16

    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonarqube

    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  sonarqube_data:
  sonarqube_logs:
  sonarqube_extensions:
  postgres_data:

Inicie os containers:

docker compose up -d

Aguarde alguns minutos para a inicialização completa.

Depois acesse:

http://localhost:9000

Login padrão:

Usuário: admin
Senha: admin

No primeiro acesso será solicitada a alteração da senha.

Instalando o Plugin Delphi pelo Marketplace

Com o SonarQube em execução, acesse:

Administration → Marketplace

O Marketplace permite instalar extensões diretamente pela interface web, sem necessidade de copiar arquivos manualmente para o container.

Procure pelo plugin Delphi disponível para sua versão do SonarQube.

Após localizar o plugin:

  1. Clique em Install.
  2. Aguarde o download.
  3. Reinicie o SonarQube quando solicitado, caso não solicite após algum tempo, faça o restart via interface ou linha de comando.

Em ambientes Docker, a reinicialização pode ser realizada com:

docker restart sonarqube

Após o retorno do serviço, o suporte a Delphi estará disponível no servidor.

Validando a Instalação

Acesse: Quality Profiles no menu principal, busque por Delphi, agora você deverá ver um profile Delphi.

Também é possível verificar: Administration → Marketplace, selecione installed e seu plugin será mostrado na lista.


Instalando o SonarScanner

Faça o download do SonarScanner CLI.

Após extrair os arquivos, adicione ao PATH do sistema:

C:\sonar-scanner\bin

Valide a instalação:

sonar-scanner --version

A versão instalada deverá ser exibida no terminal.Dica: todas as IA’s atuais está preparadas para instalar automaticamente o SonarScanner CLI e criar o arquivo de configuração, faça uso disso, basta passar no seu prompt o token criado para o projeto e o nome do projeto.

Criando o Projeto

No SonarQube:

Projects → Create Project

Informe:

  • Nome do projeto
  • Chave do projeto
  • Método de autenticação

Em seguida gere um token de acesso.

Esse token será utilizado pelo Scanner para autenticação.

Configurando o Projeto Delphi para Análise com SonarDelphi

Após instalar o plugin Delphi no SonarQube, o próximo passo é configurar corretamente o arquivo sonar-project.properties.

Esse arquivo deve ficar na raiz do projeto Delphi, normalmente no mesmo nível do .dproj, .groupproj ou da pasta principal de fontes.

Segundo a documentação do SonarDelphi, os parâmetros específicos do plugin podem ser configurados pela interface do SonarQube, pelo arquivo sonar-project.properties ou diretamente pela linha de comando do sonar-scanner.

Exemplo básico:

sonar.projectKey=erp-delphi
sonar.projectName=ERP Delphi
sonar.projectVersion=1.0

sonar.sources=src
sonar.sourceEncoding=UTF-8

sonar.host.url=http://localhost:9000
sonar.token=SEU_TOKEN_AQUI

Para um projeto Delphi real, normalmente é necessário informar mais de uma pasta de fontes:

sonar.sources=src,lib,packages,modules

Também é importante excluir arquivos que não devem entrar na análise:

sonar.exclusions=**/__history__/**,**/Win32/**,**/Win64/**,**/Debug/**,**/Release/**,**/*.dcu,**/*.exe,**/*.dll,**/*.bpl

Em projetos Delphi, recomendo começar excluindo:

**/__history__/**
**/Win32/**
**/Win64/**
**/Debug/**
**/Release/**
**/*.dcu
**/*.exe
**/*.dll
**/*.bpl
**/*.res

Caso o projeto tenha bibliotecas de terceiros dentro do repositório, como componentes, frameworks ou fontes externos, também é interessante removê-las da análise:

sonar.exclusions=**/ThirdParty/**,**/LibsExternas/**,**/ACBr/**,**/Componentes/**

A ideia é analisar o código da aplicação, não o código de bibliotecas mantidas por terceiros.

Exemplo Mais Completo de sonar-project.properties

sonar.projectKey=erp-delphi
sonar.projectName=ERP Delphi
sonar.projectVersion=1.0

sonar.sources=src,modules,packages
sonar.sourceEncoding=UTF-8

sonar.exclusions=**/__history__/**,**/Win32/**,**/Win64/**,**/Debug/**,**/Release/**,**/*.dcu,**/*.exe,**/*.dll,**/*.bpl,**/*.res,**/ThirdParty/**,**/ACBr/**

sonar.host.url=http://localhost:9000
sonar.token=SEU_TOKEN_AQUI

Configuração de Testes e Cobertura

O SonarDelphi também permite importar relatórios de testes e cobertura.

Segundo o projeto SonarDelphi, o plugin possui suporte para importação de relatórios de teste no formato NUnit, compatíveis com DUnitX, e relatórios de cobertura compatíveis com DelphiCodeCoverage.

Exemplo conceitual:

sonar.delphi.coverage.reportPaths=coverage.xml
sonar.delphi.test.reportPaths=test-results.xml

A nomenclatura exata dos parâmetros deve ser validada conforme a versão do SonarDelphi utilizada, pois pode variar entre versões do plugin.

O fluxo esperado é:

  1. Executar os testes com DUnitX.
  2. Gerar o relatório de testes.
  3. Executar a cobertura com DelphiCodeCoverage.
  4. Gerar o relatório de cobertura.
  5. Executar o sonar-scanner.
  6. Enviar os dados consolidados para o SonarQube.

Executando a Análise

Com o arquivo configurado, abra o terminal na raiz do projeto e execute:

sonar-scanner

Se quiser passar o token sem deixar salvo no arquivo:

sonar-scanner -Dsonar.token=SEU_TOKEN_AQUI

Essa abordagem é mais segura para pipelines e ambientes CI/CD.

Configuração Recomendada para Projetos Legados

Em sistemas Delphi antigos, evite começar analisando tudo, uma estratégia mais segura é configurar apenas uma pasta inicialmente:

sonar.sources=src/fiscal

Depois, conforme a equipe for ajustando o Quality Profile e entendendo os resultados, novas pastas podem ser adicionadas:

sonar.sources=src/fiscal,src/financeiro,src/estoque

Essa abordagem reduz ruído e ajuda a equipe a adotar o SonarQube de forma gradual.

Onde Configurar as Regras do Plugin

As regras específicas do Delphi aparecem em:

Quality Profiles → Delphi

Ali você pode:

  • Ver as regras disponíveis.
  • Ativar ou desativar regras.
  • Criar um perfil próprio.
  • Ajustar o padrão de análise da equipe.
  • Aplicar o perfil ao projeto Delphi.

A recomendação é não alterar diretamente o perfil padrão. Crie um novo perfil baseado nele, por exemplo:

Delphi - Padrão da Empresa

Depois associe esse perfil ao projeto.

Exemplo de Configuração Inicial Recomendada

sonar.projectKey=erp-delphi
sonar.projectName=ERP Delphi
sonar.projectVersion=1.0

sonar.sources=src
sonar.sourceEncoding=UTF-8

sonar.exclusions=**/__history__/**,**/Win32/**,**/Win64/**,**/Debug/**,**/Release/**,**/*.dcu,**/*.exe,**/*.dll,**/*.bpl,**/*.res,**/ThirdParty/**

sonar.host.url=http://localhost:9000

E executar informando o token pela linha de comando:

sonar-scanner -Dsonar.token=SEU_TOKEN_AQUI

Dessa forma, o arquivo sonar-project.properties pode ser versionado no Git sem expor credenciais.

Executando a Primeira Análise

Abra um terminal na raiz do projeto.

Execute:

sonar-scanner

O Scanner irá:

  1. Ler os fontes Delphi.
  2. Aplicar as regras configuradas.
  3. Enviar os resultados ao SonarQube.

Após a conclusão, atualize a página do projeto.

Você já poderá visualizar:

  • Issues
  • Complexidade
  • Duplicidade
  • Linhas analisadas
  • Histórico de qualidade

Configurando um Quality Gate para Projetos Delphi

Uma recomendação importante para sistemas Delphi legados é evitar bloquear o projeto inteiro logo na primeira execução.

O ideal é focar inicialmente apenas em código novo.

Uma configuração comum é exigir:

  • Nenhum bug crítico em código novo
  • Nenhuma vulnerabilidade crítica
  • Baixa duplicidade em código novo
  • Cobertura mínima de testes

Dessa forma o sistema passa a melhorar continuamente sem exigir uma grande refatoração inicial.

Conclusão

O SonarQube é uma excelente ferramenta para equipes Delphi que desejam aumentar a qualidade dos seus projetos, reduzir débito técnico e criar um processo de desenvolvimento mais previsível.

Com poucos minutos de configuração é possível ter métricas detalhadas sobre a saúde do código, acompanhar a evolução do projeto ao longo do tempo e evitar que novos problemas sejam introduzidos na base de código.

Para projetos Delphi corporativos, especialmente sistemas legados que evoluem há muitos anos, a adoção do SonarQube pode representar um dos maiores ganhos de qualidade com o menor esforço de implantação.

Referências

SONARSOURCE. Installing SonarQube from Docker. Disponível em: https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/installing-sonarqube-from-docker/. Acesso em: 21 jun. 2026.

SONARSOURCE. Install a Plugin. Disponível em: https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/plugins/install-a-plugin/. Acesso em: 21 jun. 2026.

SONARSOURCE. Using Marketplace. Disponível em: https://docs.sonarsource.com/sonarqube-community-build/server-update-and-maintenance/update/marketplace/. Acesso em: 21 jun. 2026.

SONARSOURCE. SonarScanner CLI Documentation. Disponível em: https://docs.sonarsource.com/sonarqube-server/latest/analyzing-source-code/scanners/sonarscanner/. Acesso em: 21 jun. 2026.

SONARSOURCE. Quality Gates. Disponível em: https://docs.sonarsource.com/sonarqube-server/latest/quality-standards-administration/managing-quality-gates/introduction-to-quality-gates/. Acesso em: 21 jun. 2026.

INTEGRATED APPLICATION DEVELOPMENT. SonarDelphi. GitHub. Disponível em: https://github.com/integrated-application-development/sonar-delphi. Acesso em: 21 jun. 2026.

INTEGRATED APPLICATION DEVELOPMENT. SonarDelphi Documentation. Disponível em: https://github.com/integrated-application-development/sonar-delphi/blob/master/docs/CONFIGURATION.md. Acesso em: 21 jun. 2026.

Compartilhar por e-mail

0 comentário(s)

Participe da conversa

Seu e-mail não será publicado.

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Um próximo passo para cada interesse.

Continue estudando com os livros, acompanhe as videoaulas ou consulte as soluções para o seu projeto.

Descubra mais sobre Régys Borges da Silveira

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo