Instalação e Configuração do SonarQube para Análise Estática de Código

Visão Geral do SonarQube

SonarQube é uma ferramenta open source para gerenciamento de qualidade de código, projetada para identificar falhas, vulnerabilidades e desvios de padrões em projetos de software. Ele se integra a sistemas de CI/CD como GitLab e Jenkins para realizar verificações contínuas após commits ou builds.

Ferramentas de Análise de Código Conhecidas
SonarQube
Checkmarx
Fortify
Coverity

Requisitos para Instalação do SonarQube

Para uma instância de pequena escala (individual ou equipe reduzida), é recomendado no mínimo 2 GB de RAM no servidor SonarQube, com 1 GB de RAM livre no sistema operacional. Para ambientes de produção maiores, recomenda-se 16 GB de RAM.

Pré-requisitos de Software

Versão 8.9 LTS: requer JDK 11 e banco de dados PostgreSQL.

Versão 7.7: requer JDK 8 e banco de dados MySQL (versão 5.6 ou superior).

Instalação do SonarQube com PostgreSQL (Versão 8.9 LTS)

Preparação do Ambiente


# Desativar firewall e SELinux para ambiente de teste
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

Instalação do Banco de Dados PostgreSQL


# Instalar dependências e PostgreSQL
apt-get update
apt-get install -y openjdk-11-jdk postgresql postgresql-contrib

# Configurar banco de dados e usuário
sudo -u postgres psql -c "CREATE DATABASE sonar_db WITH ENCODING 'UTF8';"
sudo -u postgres psql -c "CREATE USER sonar_user WITH PASSWORD 'SenhaSegura789';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE sonar_db TO sonar_user;"

Instalação do SonarQube com MySQL (Versão 7.7)

Configuração do Banco de Dados MySQL


# Instalar dependências e MySQL 5.7
yum install -y java wget
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server

# Iniciar e habilitar o serviço
systemctl start mysqld
systemctl enable mysqld

# Encontrar senha temporária e executar instalação segura
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation

# Criar banco de dados e usuário para SonarQube
mysql -u root -p -e "CREATE DATABASE sonar_db CHARACTER SET utf8mb4;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON sonar_db.* TO 'sonar_user'@'localhost' IDENTIFIED BY 'SenhaForte123';"

Instalação e Configuração do SonarQube


# Baixar e extrair o SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.7.zip
unzip sonarqube-7.7.zip -d /opt/
ln -s /opt/sonarqube-7.7 /opt/sonar
useradd sonar
chown -R sonar:sonar /opt/sonar

# Configurar conexão com o banco de dados
sed -i 's|#sonar.jdbc.username=.*|sonar.jdbc.username=sonar_user|' /opt/sonar/conf/sonar.properties
sed -i 's|#sonar.jdbc.password=.*|sonar.jdbc.password=SenhaForte123|' /opt/sonar/conf/sonar.properties
sed -i 's|#sonar.jdbc.url=.*|sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar_db?useUnicode=true\&characterEncoding=utf8|' /opt/sonar/conf/sonar.properties

# Iniciar o serviço (deve ser executado como usuário comum)
su - sonar -c '/opt/sonar/bin/linux-x86-64/sonar.sh start'

Acesse a interface web em http://servidor:9000. Credenciais padrão: usuário admin, senha admin.

Gerenciamento de Plugins

Para instalar o plugin de localização em português, navegue até Administration > Marketplace, pesquise por "Portuguese Language Pack" e clique em Instal. Reinicie o SonarQube após a instalação.


# Instalar plugins manualmente (exemplo)
tar xf sonar_plugins.tar.gz -C /opt/sonar/extensions/plugins/
chown -R sonar:sonar /opt/sonar/extensions/plugins/
/opt/sonar/bin/linux-x86-64/sonar.sh restart

Criação de Porjetos e Análise

Análise de Projeto Java com Maven

Primeiro, gere um token de autenticação na interface do SonarQube em My Account > Security.


# Comando para análise via Maven
mvn sonar:sonar \
  -Dsonar.projectKey=projeto-exemplo \
  -Dsonar.host.url=http://sonar.example.com:9000 \
  -Dsonar.login=seu_token_aqui

Integração com Jenkins

No Jenkins, adicioen um passo de build "Invoke top-level Maven targets" com o seguinte comando:


clean package sonar:sonar -Dsonar.projectKey=${JOB_BASE_NAME} -Dsonar.host.url=http://sonar.example.com:9000 -Dsonar.login=seu_token_aqui

Tags: SonarQube Análise de Código Estática MySQL postgresql Jenkins

Publicado em 6-28 17:57