Skip to main content

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:

  1. Acesse: http://localhost:9000/quality_gates
  2. Crie ou edite um Quality Gate
  3. 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=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 /home/guilherme/sonarqube
docker compose down

Reiniciar o SonarQube

cd /home/guilherme/sonarqube
docker compose restart

Remover tudo (incluindo dados)

cd /home/guilherme/sonarqube
docker compose down -v