SonarQube - Instalação do scanner no Ubuntu Linux
Tags: tutorial, beginners, sonarqube, codequality
Published: 2021-11-26 03:19:47

![Banner](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pcu57n5v64uv71wc654.png)

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

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

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"
```

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

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

```
env | grep PATH
```

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
```
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
```
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
```
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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j4cyo5ogubeucy6vv2mr.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7gxd02u58x6j66mswq4.png)

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

![Painel do SonarQube](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9b70to6lniolcet5yc4k.png)

Em nosso exemplo vamos analisar um projeto popular de código aberto chamado [Zabbix](https://github.com/zabbix/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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8hbyzwp7ajmb5h022f9e.png)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hhgh92tg65f8lxexirkc.png)

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

![Linguagem](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rt5ki1nlwc3g406zbszx.png)
 
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
```

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

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

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

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

![Resultado do scan](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ma0veutiu7bp081r3h7u.png)

Fontes onde pesquisei esse conteúdo:

- https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
- https://github.com/SonarSource/sonar-scanning-examples
- https://docs.sonarqube.org/latest/analysis/analysis-parameters/