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:
- O SonarQube recebe e processa as análises.
- O Scanner analisa os fontes Delphi.
- Os resultados são enviados ao servidor.
- 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:
- Clique em Install.
- Aguarde o download.
- 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 é:
- Executar os testes com DUnitX.
- Gerar o relatório de testes.
- Executar a cobertura com DelphiCodeCoverage.
- Gerar o relatório de cobertura.
- Executar o
sonar-scanner. - 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á:
- Ler os fontes Delphi.
- Aplicar as regras configuradas.
- 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.
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.
Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.