SonarQube Este livro contém informações e instruções de utilização do SonarQube em projetos. Apresentação Autoria e identificação Este material foi elaborado por Guilherme Rocha Leite, Analista de Tecnologia da Informação da Universidade Federal dos Vales do Jequitinhonha e Mucuri (UFVJM), e disponibilizado no Sistema de Documentação de Serviços da UFVJM. Data de criação do livro: 16 de setembro de 2026. Sistema de publicação: Documentação de Serviços – UFVJM. Introdução e instruções de execução O SonarQube é uma ferramenta gratuita para análise de código que visa auxiliar o desenvolvedor a descobrir blocos de código que podem ser reescritos de maneira mais eficiente e padronizada semântica e sintaticamente, a fim de maximizar a qualidade de escrita do código. Além disso, ele também consegue analisar a cobertura de testes unitários de um projeto, ajudando a identificar se os testes estão bem desenvolvidos e com ampla cobertura. Inicialização Existe um projeto no workspace da DDS que pode ser utilizado e é com ele que a presente documentação foi criada. Para executá-lo: cd ~/ && git clone git@git.dds.ufvjm.edu.br:dds/sonarqube.git cd ~/sonarqube docker compose up -d Aguarde 1-2 minutos para o SonarQube inicializar completamente. Acessando o SonarQube Abra no navegador: http://localhost:9000 Login padrão: Usuário: admin Senha: admin ⚠️ Importante: No primeiro acesso, você será solicitado a alterar a senha padrão. Em seguida, crie um novo projeto, definindo um nome e uma chave que serão utilizados em passos posteriores. Também será solicitada a geração de um token, ao gerá-lo, copie e salve em algum local pois ele também será utilizado posteriormente. 📁 Configuração Avançada - sonar-project.properties Crie um arquivo sonar-project.properties na raiz do projeto que deseja escanear: # Identificação do projeto sonar.token=token-projeto # gerado no passo anterior sonar.projectKey=meu-projeto # definido no passo anterior sonar.projectName=Meu Projeto # definido no passo anterior sonar.projectVersion=1.0 # Diretórios sonar.sources=. sonar.sourceEncoding=UTF-8 # Exclusões sonar.exclusions=**/vendor/**,**/node_modules/**,**/tests/**,**/tpls/compiled/** # Para PHP sonar.language=php sonar.php.coverage.reportPaths=coverage.xml sonar.php.tests.reportPath=tests/_output/report.xml # Para JavaScript # sonar.javascript.lcov.reportPaths=coverage/lcov.info 📊 Escanear um Projeto Opção 1: Usando o script (Recomendado) cd ~/sonarqube ./scan-project.sh /caminho/do/projeto nome-do-projeto Exemplo: Escanear o projeto Void: ./scan-project.sh ~/void pressiga Opção 2: Manualmente com Docker docker run --rm \ --network sonarqube_sonarqube-network \ -e SONAR_HOST_URL="http://sonarqube:9000" \ -e SONAR_LOGIN="admin" \ -e SONAR_PASSWORD="sua-nova-senha" \ -v "/caminho/do/projeto:/usr/src" \ sonarsource/sonar-scanner-cli \ -Dsonar.projectKey="meu-projeto" \ -Dsonar.projectName="Meu Projeto" \ -Dsonar.sources=. 🎯 Quality Gates e Badges É possível obter o selo de qualidade de código de acordo com critérios pré-estabelecidos, desde que o projeto atenda a esses requisitos mínimos. É possível defini-los manualmente da seguinte maneira: Acesse: http://localhost:9000/quality_gates Crie ou edite um Quality Gate Defina os critérios mínimos: Coverage: mínimo 80% Duplications: máximo 3% Maintainability Rating: A ou B Reliability Rating: A Security Rating: A Vulnerabilities: 0 Bugs: 0 Gerar Badge (Selo): Após escanear um projeto, você pode gerar badges em: Dashboard do projeto → Project Information → Badges Exemplos de URLs de badges: http://localhost:9000/api/project_badges/measure?project=pressiga&metric=alert_status http://localhost:9000/api/project_badges/measure?project=pressiga&metric=coverage http://localhost:9000/api/project_badges/measure?project=pressiga&metric=bugs http://localhost:9000/api/project_badges/measure?project=pressiga&metric=vulnerabilities 🛠️ Comandos Úteis Ver logs do SonarQube docker logs sonarqube -f Parar o SonarQube cd ~/sonarqube docker compose down Reiniciar o SonarQube cd ~/sonarqube docker compose restart Remover tudo (incluindo dados) cd ~/sonarqube docker compose down -v Gerando relatórios Para gerar relatórios de cobertura para o SonarQube: Instale as dependências: composer require --dev phpunit/php-code-coverage Configure o codeception.yml: coverage: enabled: true include: - apps/* - core/* exclude: - vendor/* - tests/* Execute os testes com cobertura: Opção 1 - Apenas testes unitários (recomendado para cobertura): XDEBUG_MODE=coverage ./vendor/bin/codecept run unit --coverage --coverage-xml Opção 2 - Se precisar rodar acceptance com cobertura: # Limpar snapshots antes rm -rf tests/_data/snapshots/* # Executar sem usar snapshots XDEBUG_MODE=coverage ./vendor/bin/codecept run acceptance --coverage --coverage-xml Opção 3 - Usar script customizado do projeto: ./tests.sh --coverage ⚠️ Nota: O Xdebug pode causar conflitos com cookies no WebDriver durante testes de aceitação. Se encontrar erro invalid cookie domain, use apenas testes unitários para gerar cobertura ou limpe os snapshots antes de executar. Ou se preferir, exporte a variável antes: export XDEBUG_MODE=coverage ./vendor/bin/codecept run unit --coverage --coverage-xml Escaneie com o SonarQube apontando para o relatório gerado. 📈 Métricas Importantes Bugs: Problemas que podem causar erros Vulnerabilities: Problemas de segurança Code Smells: Código que pode ser melhorado Coverage: Porcentagem de código coberto por testes Duplications: Código duplicado Technical Debt: Tempo estimado para corrigir todos os problemas Extras Para mais informações sobre a ferramenta, seguem alguns links da documentação oficial do SonarQube e do Codeception: Documentação oficial SonarQube: https://docs.sonarqube.org/ Quality Gates: https://docs.sonarqube.org/latest/user-guide/quality-gates/ SonarScanner: https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ Codeception: https://codeception.com/