DEV Community

Jhony Walker
Jhony Walker

Posted on

SonarQube - Instalação do scanner no Ubuntu Linux

Banner

Neste breve tutorial ensinarei como instalar o scanner do SonarQube no Ubuntu Linux e para isso utilizei as seguintes versões:

• Versão ubuntu: 19
• Versão Sonarqube: 7.9.1

Iniciando os trabalhos

Utilizei o apto para instalar os pacotes necessários e para isso rodei o seguinte comando:

apt-get update
apt-get install unzip wget nodejs
Enter fullscreen mode Exit fullscreen mode

Agora vamos baixar o pacote de scanner do Sonarqube e mover para o diretório OPT.

mkdir /downloads/sonarqube -p
cd /downloads/sonarqube
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
unzip sonar-scanner-cli-4.2.0.1873-linux.zip
mv sonar-scanner-4.2.0.1873-linux /opt/sonar-scanner
Enter fullscreen mode Exit fullscreen mode

Hora de editar o arquivo sonar-scanner.properties para isso você deve preencher da seguinte forma:

# Deve ser único em uma determinada instância SonarQube
sonar.projectKey=my:project
# Este é o nome e a versão exibidos na IU do SonarQube. Era obrigatório antes do SonarQube 6.1.
sonar.projectName=My project
sonar.projectVersion=1.0

# O caminho é relativo ao arquivo sonar-project.properties. Substitua "\" por "/" no Windows.
# Esta propriedade é opcional se sonar.modules estiver definido.
sonar.sources=.

#Default SonarQube server
sonar.host.url=http://localhost:9000

# Codificação do código-fonte. O padrão é a codificação do sistema utilizando
sonar.sourceEncoding=UTF-8
Enter fullscreen mode Exit fullscreen mode

Lembrando que no sonar.host.url é onde vamos passar o endereço para se conectar ao seu servidor do SonarQube.
Vamos criar um arquivo para automatizar a configuração de variáveis de ambiente necessárias

vi /etc/profile.d/sonar-scanner.sh
Enter fullscreen mode Exit fullscreen mode

Precisamos adicionar o comando sonar-scanner à variável PATH, então nosso arquivo sonar-scanner.sh ficará da seguinte forma:

export PATH="$PATH:/opt/sonar-scanner/bin"
Enter fullscreen mode Exit fullscreen mode

Reinicie o computador ou use o comando de origem para adicionar o comando do scanner sonar à variável PATH:

reboot
source /etc/profile.d/sonar-scanner.sh
Enter fullscreen mode Exit fullscreen mode

Use o seguinte comando para verificar se a variável PATH foi alterada como esperado:

env | grep PATH
Enter fullscreen mode Exit fullscreen mode

Após executar o retorno do comando será o seguinte:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/sonar-scanner/bin
Enter fullscreen mode Exit fullscreen mode

Em nosso exemplo, o diretório /opt/sonar-scanner/bin foi adicionado à variável PATH. Temos que verificar se a versão do scanner do Sonarqube foi instalada, basta executar o seguinte comando:

sonar-scanner -v
Enter fullscreen mode Exit fullscreen mode

Após a execução deste comando, o retorno será o seguinte:

INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 4.2.0.1873
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 5.3.0-18-generic amd64
Enter fullscreen mode Exit fullscreen mode

Com isso, encerramos a intalação do Scanner do Sonarqube.

Escaneando um código estático

Bom, agora é a hora da verdade vamos escanear um código para verificarmos se está funcionando corretamente. Precisaremos acessar a interface web SonarQube e criar um novo projeto, abrindo o navegador vamos inserir o endereço IP do nosso servidor web mais :9000, no nosso caso foi a seguinte URL inserida no Navegador foi http://192.168.15.10:9000 e ao acessar este link será apresentado a seguinte tela:

Tela Inicial

Clique no botão Login e use o nome de usuário e senha padrão do SonarQube ( Nome de usuário padrão: admin e senha padrão: admin)

Logando

Depois de logar vamos ser direcionados para o Painel do SonarQube.

Painel do SonarQube

Em nosso exemplo vamos analisar um projeto popular de código aberto chamado Zabbix que realiza o Monitoramento em tempo real de componentes e serviços de TI, como redes, servidores, VMs, aplicativos e nuvem. Precisaremos defina uma chave de projeto e um nome de exibição.

Create Project

o proximo passo é digitar uma sequência para o nome do token do projeto e clicar no botão Gerar, Em nosso exemplo, entramos no nome do token Zabbix. O token é usado para identificá-lo quando uma análise é realizada e caso ele foi comprometido, você pode revogá-lo em qualquer momento na sua conta de usuário. Em nosso exemplo, o token gerado foi zabbix: 47c300fa4d7b9e8a3e7c953e7c250477f3617e5

Token

Na proxima tela, vamos selecionar a linguagem do projeto e neste exemplo, selecionamos a opção: Outros (JS, TS, Go, Python, PHP, ...)

Linguagem

Temos que seleciona o sistema operacional Linux, após essa etapa o sistema mostrará a linha de comando que devemos usar para escanear o projeto Zabbix.

sonar-scanner \
  -Dsonar.projectKey=zabbix \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://192.168.15.15:9000 \
  -Dsonar.login=47c300fa4d7b9e8a3e7c953e77c250477f3617e5
Enter fullscreen mode Exit fullscreen mode

Será necessário uma cópia local do código estático que vamos analisar, para isso podemos baixar a pasta do repositório ou rodar o famoso git clone (fica á sua escolha). Agora acessamos o diretório do projeto e executamos o scanner do SonarQube:

mkdir /downloads
cd /downloads
wget https://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz
tar -zxvf zabbix-4.4.0.tar.gz
Enter fullscreen mode Exit fullscreen mode

Como no nosso exemplo, o servidor SonarQube e o scanner estão instalados no mesmo computador, vamos executar o seguinte comando:

cd zabbix-4.4.0
sonar-scanner -X -Dsonar.projectKey=zabbix -Dsonar.sources=. -Dsonar.host.url=http://192.168.15.15:9000 -Dsonar.login=47c300fa4d7b9e8a3e7c953e77c250477f3617e5
Enter fullscreen mode Exit fullscreen mode

Por último guarde Scanner ser escaneado para finalizar e enviar automaticamente os resultados para o servidor Sonarqube.

INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 4.2.0.1873
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 5.0.0-32-generic amd64
INFO: User cache: /root/.sonar/cache
INFO: SonarQube server 7.9.1
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Load global settings
INFO: Load global settings (done) | time=151ms
INFO: Server id: 86E1FA4D-AW4kOChb3AqmkzI_OKyt
INFO: User cache: /root/.sonar/cache
INFO: Load/download plugins
INFO: Load plugins index
INFO: Load plugins index (done) | time=101ms
INFO: Load/download plugins (done) | time=223ms
INFO: Process project properties
INFO: Execute project builders
INFO: Execute project builders (done) | time=11ms
INFO: Project key: zabbix
INFO: Base dir: /downloads/videospeed
INFO: Working dir: /downloads/videospeed/.scannerwork
INFO: Load project settings for component key: 'zabbix'
INFO: Load project settings for component key: 'zabbix' (done) | time=33ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=124ms
INFO: Load active rules
Enter fullscreen mode Exit fullscreen mode

E agora você pode acessar no painel do SonarQube o resultado da analise:

Resultado do scan

Fontes onde pesquisei esse conteúdo:

Discussion (0)