Texto de: Lucas Galdino
Introdução
O SonarQube é uma ferramenta open source projetada para inspeção contínua da qualidade de código. Ele detecta problemas como bugs, vulnerabilidades de segurança, code smells e duplicações em várias linguagens de programação diferentes, incluindo Java, JavaScript, Python, C#, dentre outras. Mesmo tendo modalidades pagas, a versão Community do SonarQube é gratuita e open source, sendo ideal para desenvolvedores e equipes que desejam manter um padrão de qualidade de código sem custos com licenciamento.
Como funciona
O SonarQube é uma ferramenta de SAST, ou seja, ele realiza análises estáticas do código. Isso significa que ele examina o código sem executá-lo, com o objetivo de identificar problemas estruturais ou potenciais falhas de lógica e segurança.
Componentes principais:
- Scanner: Ferramenta que envia o código para análise.
- Servidor SonarQube: Onde as análises são processadas e os resultados são armazenados e visualizados.
- Banco de dados: Armazena histórico, métricas, e resultados das análises.
Fluxo de funcionamento:
- O código é enviado ao SonarQube via scanner (pode ser feito localmente ou integrado em pipelines CI/CD).
- O servidor processa o código e gera um relatório com métricas e alertas.
- Os desenvolvedores acessam a interface web para examinar os resultados e planejar melhorias.
Instalando
Temos duas instalações diferentes a se fazer. O SonarQube na sua interface gráfica, por meio da versão web, e também o SonarScanner.
Começando pelo Scanner, é possível fazer o download do instalador a partir da página oficial da ferramenta: https://docs.sonarsource.com/sonarqube-server/9.6/analyzing-source-code/scanners/sonarscanner/. Basta fazer o download da versão para seu sistema operacional e executar o instalador. É possível também fazer essa instalação via Docker, que também é uma das opções exibidas na página oficial.
Para testar a instalação dessa versão basta utilizar o comando "sonar-scanner —version” no seu terminal.

A segunda instalação se trata da versão web do SonarQube. A maneira mais prática e rápida de instalar essa versão do SonarQube é utilizando Docker, especialmente útil para testes locais e desenvolvimento. O único requisito para isso é ter o Docker instalado e funcionando na máquina.
Para iniciar a instalação é interessante criar uma pasta base para a instalação e iniciar todos os passos a partir dela. Então, com a pasta “sonarqube” criada podemos criar dentro dela um arquivo “docker-compose.yml” com o seguinte conteúdo:
services:
sonarqube:
image: sonarqube:community
container_name: sonarqube
ports:
- "9000:9000"
environment:
- SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonarqube
- SONAR_JDBC_USERNAME=sonar
- SONAR_JDBC_PASSWORD=sonar
depends_on:
- db
db:
image: postgres:13
container_name: sonarqube-db
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
- POSTGRES_DB=sonarqube
volumes:
- sonarqube_data:/var/lib/postgresql/data
volumes:
sonarqube_data: Com o arquivo criado, basta iniciar os containers com o comando:
docker-compose up -d 
Utilizando
O SonarQube pode ser utilizado de diversas formas, como podemos notar por meio da página inicial na sua versão web. É possível conectar projetos diretamente à interface web por meio de chaves de API e outras informações ou até utilizar a ferramenta em projetos locais.
Vamos fazer um rápido teste utilizando um projeto local recém-criado baseado em NextJS. Para fazer o teste o passo a passo é simples.
Na tela inicial da interface web basta clicar na opção "Create a local project”. Ao clicar, basta entrar com informações básicas sobre o projeto, como nome e "branch” principal, que por padrão é a "main” mesmo.

Após isso podemos definir uma configuração padrão para o projeto, vamos escolher as configurações globais mesmo.

Com isso feito, temos agora a tela principal do projeto recém-criado dentro da interface do SonarQube. O próximo passo é fazer um scan do código local por meio da opção "Locally” dessa tela.

Ao selecionar a opção “Localy” vamos primeiro ter que criar um token para poder fazer a interação entre o scan e o projeto dentro da interface web acontecer de fato. Em resumo, basta clicar no botão "Generate” para criar o token.

Com o token criado, basta clicar em "Continue” e ir para o próximo passo, onde escolhemos o tipo de código que será analisado. Aqui, como estou utilizando um projeto NextJS, escolherei a opção "JS/TS & Web”.
Selecionando a opção já teremos as instruções para realizar o scan, com o passo a passo descrito desde a instalação do Scanner.

Com as instruções e código na mão, agora é necessário entrar no terminal, apontar o mesmo para a pasta que contém o projeto a ser analisado e utilizar o comando instruído pelo SonarQube.
A partir daqui, vale uma ressalva: em alguns casos, o comando para realizar o scan pode mudar de "sonar" para "sonar-scanner", dependendo da forma como foi feita a instalação do Scanner na sua máquina. Outra diferença é que para projetos em NextJS é necessário adicionar alguns trechos a mais no comando utilizado para o Scan.
No caso do meu teste que foi feito em um projeto NextJS o comando a ser utilizado foi o seguinte:
sonar-scanner \
-Dsonar.projectKey=app-teste \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.token=sqp_ed7d360d2dd5bd478784486b35f5f050dbc1e16e E o resultado no terminal foi o seguinte:

E ao retornar para a tela do SonarQube na sua interface web já é possível notar mudanças nas informações exibidas:

O código base de um projeto recém criado é bem limpo e passou perfeitamente pelo teste. Mas agora irei copiar e colar um dos arquivos principais do projeto e refazer o teste com o mesmo comando para ver as mudanças no resultado.

Podemos notar que mudou bastante e que agora o projeto falhou no teste, apontando, por exemplo, muita duplicação dentro do código.
Conclusão
Como podemos ver, concluir um projeto com qualidade vai além de escrever código funcional, é garantir que ele seja limpo, seguro e sustentável. O SonarQube, mesmo em sua edição Community, oferece uma base sólida para manter a excelência técnica no desenvolvimento. Incorporá-lo ao seu fluxo de trabalho pode ser um passo essencial para prevenir falhas, reduzir dívidas técnicas e promover boas práticas na equipe.