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:

      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=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