Uma das partes mais menosprezadas em projetos de software é saber qual o estado real de saúde do projeto. Para o fazer é necessária uma análise complexa e periódica de forma a garantir que a manutenção do projeto é sustentável. Felizmente existem várias ferramentas que permitem fazer esta análise e, entre elas, está o SonarQube, que vamos apresentar.

Neste artigo, que pertence à série “Como criar um servidor de integração contínua” e comecou com o artigo Ferramentas para servidor de integração continua (CI) vamos instalar e configurar o SonarQube e o SonarQube Runner.

Antes de começar importa descrever e perceber o que é o SonarQube. O projeto open-source nasceu com o nome Sonar, que foi alterado para SonarQube em 2013 devido a questões relacionadas com marcas registadas. Sendo open-source, o projeto está disponível no GitHub para quem queira contribuir ou analisar o código.

O projeto define-se como uma Inspeção continua à qualidade do código, em que uma das principais marcas é a quantificação de Divida Técnica. A divida técnica é, nada mais nada menos, que a quantidade de tempo (minutos, horas, dias) necessárias para que o código do projeto seja melhorado de acordo com os padrões (standards) em uso. Podes visitar o artigo da Wikipedia (em inglês) sobre o assunto para teres mais informações.

Embora o nosso foco neste artigo seja a utilização do SonarQube em projetos PHP e Javascript, a aplicação tem suporte para mais de 20 linguagens, incluindo Java, C/C++ ou C#, sendo também possível usar em projetos Android. Para conheceres ao detalhe todas caracteristicas podes analisar a página de funcionalidades do projeto ou um pequeno resumo na Wikipedia (em inglês).

E, sem mais demoras, vamos instalar o SonarQube e o SonarQube Runner.

  1. Instalação do SonarQube
  2. Instalação do SonarQube Runner

1. Instalação do SonarQube

  1. Acede à página de downloads e descarrega a versão mais recente. Neste momento a versão mais recente é a 5.1.1 e é essa que vamos instalar (embora a 4.5.4 esteja disponível, porque tem LTS).

    Depois, acede à pasta de downloads, descomprime o ficheiro e move-o para o destino que entenderes (eu irei usar o diretório /opt/ para manter consistência com os artigos anteriores).

    cd ~/Downloads
    unzip sonarqube-5.1.1.zip
    sudo mv sonarqube-5.1.1 /opt/
    
  2. Cria uma nova base de dados para armazenar as análises do SonarQube. Nesta série já usamos MySQL para o Redmine e para o Teamcity e, portanto, iremos fazer o mesmo com o SonarQube. Vamos chamar à base de dados sonar e vamos criar um utilizador sonarqubeusr com a password SonarQube@usr que terá permissões a essa base de dados.

    O nome por defeito da base de dados é sonar. Se definires um nome diferente poderás ter problemas na configuração, pelo que eu recomendo que mantenhas o nome sonar caso tal seja possível.
    mysql –uroot –p
    create database sonar character set utf8;
    create user 'sonarqubeusr'@'localhost' identified by 'SonarQube@usr';
    GRANT ALL PRIVILEGES ON sonar.* TO 'sonarqubeusr'@'localhost';
    exit
    
  3. Agora altera as configurações do SonarQube para usar a base de dados criada no passo anterior

    sudo gedit /opt/sonarqube-5.1.1/conf/sonar.properties
    

    No editor apresentado, retira o comentário (#) e altera o valor das variáveis de acordo com o seguinte:

    sonar.jdbc.username=sonarqubeusr
    sonar.jdbc.password=SonarQube@usr
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    

    Se quiseres alterar o endereço ou o caminho relativo do SonarQube, altera as variáveis sonar.web.host e sonar.web.port. Para este artigo iremos deixar as definições por defeito e o acesso será feito pelo endereço http://localhost:9000

  4. Por fim, inicia o servidor com o comando

    /opt/sonarqube-5.1.1/bin/linux-x86-64/sonar.sh start
    
    Nota que o script a usar tem em conta o teu sistema operativo. Como tal, deves alterar o diretório `linux-x86-32` caso não esteja de acordo com o teu sistema operativo
  5. Neste momento, quando acederes ao SonarQube, deverás ver um ecrã semelhante ao seguinte

    Instalar SonarQube e SonarQube Runner em Linux Mint images/13-install-configure-sonarqube-and-sonarqube-runner-linux-mint/234-sonarqube-first-execution.png
  6. Por defeito é criado um utilizador admin com a password admin, que podes usar para entrar na aplicação. Para criares ou alterares os utilizadores deves aceder, após o login, a Settings » Security » Users.

    Instalar SonarQube e SonarQube Runner em Linux Mint images/13-install-configure-sonarqube-and-sonarqube-runner-linux-mint/235-sonarqube-manage-users.png

2. Instalação do SonarQube Runner

O SonarQube apresenta a informação associada à análise e à qualidade do projeto. No entanto, a análise do projeto não é feita diretamente pelo SonarQube. Neste artigo vamos usar o SonarQube Runner que é a ferramenta recomendada para fazer a análise ao projeto. Existem outras alternativas como o Ant ou o Maven. As alternativas e uma visão mais abrangente do que é a análise de um projeto pode ser vista nesta página da documentação.

De forma simplificada, a função do SonarQube Runner é percorrer todos os ficheiros da aplicação e analisar cada um de acordo com os padrões definidos para o projeto. Mas já me estou a adiantar, neste artigo vamos instalar o SonarQube Runner para que o tenhamos disponível no artigo seguinte.

Para instalar o SonarQube Runner deves proceder aos seguintes passos:

  1. Acede à página de downloads e descarrega o SonarQube Runner.

    Instalar SonarQube e SonarQube Runner em Linux Mint images/13-install-configure-sonarqube-and-sonarqube-runner-linux-mint/232-download-sonarqube-runner.png
  2. Acede ao diretório Downloads, descomprime o ficheiro e move-o para o diretório /opt/

    cd ~/Downloads
    unzip sonar-runner-dist-2.4.zip
    sudo mv sonar-runner-2.4/ /opt/
    
  3. Altera o ficheiro de configurações do SonarQube Runner para que a aplicação se consiga ligar à base de dados e ao SonarQube

    sudo gedit /opt/sonar-runner-2.4/conf/sonar-runner.properties
    

    No editor, descomenta e coloca os valores corretos nas propriedades sonar.host.url, sonar.jdbc.url (MySQL), sonar.jdbc.username, sonar.jdbc.password e sonar.sourceEncoding. Para a versão 2.4, ficas com o ficheiro semelhante a:

    #Configure here general information about the environment, such as SonarQube DB details for example
    #No information about specific project should appear here
    
    #----- Default SonarQube server
    sonar.host.url=http://localhost:9000
    
    #----- PostgreSQL
    #sonar.jdbc.url=jdbc:postgresql://localhost/sonar
    
    #----- MySQL
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
    
    #----- Oracle
    #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
    
    #----- Microsoft SQLServer
    #sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
    
    #----- Global database settings
    sonar.jdbc.username=sonarqubeusr
    sonar.jdbc.password=SonarQube@usr
    
    #----- Default source code
    encoding sonar.sourceEncoding=UTF-8
    
    #----- Security (when 'sonar.forceAuthentication' is set to 'true')
    #sonar.login=admin
    #sonar.password=admin
    
    Instalar SonarQube e SonarQube Runner em Linux Mint images/13-install-configure-sonarqube-and-sonarqube-runner-linux-mint/236-sonarqube-runner-configuration-file.png

Neste momento tens o SonarQube e o SonarQube Runner instalado. No próximo artigo vamos instalar as dependências (PHPUnit), vamos configurar corretamente o nosso projeto Laravel 5 e vamos executar a análise ao código PHP e Javascript.

Este artigo faz parte da série Como criar um servidor de integração contínua