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
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/
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
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
esonar.web.port
. Para este artigo iremos deixar as definições por defeito e o acesso será feito pelo endereço http://localhost:9000Por 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 operativoNeste momento, quando acederes ao SonarQube, deverás ver um ecrã semelhante ao seguinte
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.
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:
Acede à página de downloads e descarrega o SonarQube Runner.
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/
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
esonar.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
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
- Ferramentas para servidor de integração continua (CI)
- Instalar SSH e Git em Linux e configuração da máquina de desenvolvimento Windows
- Instalação do Git e integração com o Redmine
- Instalação do TeamCity 9 em Linux
- Instalar e configurar TeamCity Agent em servidor Linux Mint
- Instalar SonarQube e SonarQube Runner em Linux Mint - Estás a ler este artigo
- Analisar projeto Laravel 5 (PHP) com o SonarQube
- Integrar SonarQube com TeamCity e Redmine