Skip to main content

Overview

SonarQube

Documentação Oficial

SonarQube é uma ferramenta de análise de código que ajuda a detectar problemas de codificação em várias linguagens. É muito usado em estágios de pipeline para garatir uma boa qualidade no código, como manutenibilidade, confiabilidade, problema de segurança, etc.

É possível integrar com várias ferramentas como Github Actions, Gitlab, Bitbucket, Jenkins, etc.

A idéia é criar um padrão de qualidade para que um código possa ser mergeado tentando respeitar as regras do clean code. O sonarqube faz uma classificação do código através de métricas, mas também podemos adicionar regras personalizadas.

Podemos usar o SonarQube em automações para pull request para salvar tempo dos revisores reprovando o código caso não seja qualificado e otimizando o tempo da equipe.

Além disso o Sonarqube dá sugestões de melhoria no código e análise estática de segurança da aplicação em primeiro estágio.

Existe um plugin chamado SonarLint que pode ser integrado com sua IDE afim de ajudar e fornecer feedback em tempo real sobre a qualidade do código antes de passar pela análise do SonarQube. Podemos usar esta ferramenta para evitar rodar um pipeline e só depois descobrir que o código não está tão bom quanto deveria.

Para vscode temos a extensão do SonarLint. É necessário o Java Runtime na versão 17.

Existem 4 diferentes versões sendo que somente a community é free.

Mesmo podendo fazer o deploy da feramenta em sua infra estrutura não isenta do pagamento da licença das outras versões.

Ainda temos o SonarQube Cloud free caso não queira implantar na sua infra.

Cloud vs Self Hosted

  • Vantagens do SonarCloud Free

    • Facilidade de Configuração
    • Atualizações Automáticas
    • Escalabilidade
    • Integração com Repositórios como GitHub, GitLab, Bitbucket e Azure DevOps, o que facilita a configuração de pipelines de CI/CD.
  • Vantagens de Usar Sua Própria Infraestrutura com SonarQube

    • Controle Total: Quando você hospeda o SonarQube em sua própria infraestrutura, tem controle total sobre a configuração, segurança, acesso e personalização. Isso é crucial para empresas com requisitos específicos de conformidade e segurança.
    • Privacidade e Segurança dos Dados
    • Integração com Ferramentas Internas: Pode ser mais fácil integrar o SonarQube com outras ferramentas e sistemas internos da sua empresa, como sistemas de autenticação corporativa (LDAP/AD), dashboards internos, e ferramentas de monitoramento.
    • Suporte a Instalações Personalizadas: Se você precisa de configurações avançadas ou recursos específicos disponíveis apenas nas edições pagas do SonarQube (Developer, Enterprise, Data Center), o deploy em sua própria infraestrutura pode ser mais adequado.
    • Customização e Extensibilidade: SonarQube permite que você desenvolva plugins personalizados ou utilize plugins de terceiros para estender suas funcionalidades. Isso pode ser limitado no SonarCloud.
    • Requisitos: 2 cores e 4GB de ram em ambientes menores com 30GB de espaço livre no HD. Ambientes maiorees 8 cores e 16GB de ram. Nessário o runtime do Java 17 podendo ser o JRE ou OpenJDK. O uso de SSDs é muito bem vindo, ao contrário usar discos montado na rede irá piorar bastante o desempenho.

Caso a ferramenta não seja adotada pela empresa e mesmo assim você queira utilizar é ainda possível rodar na sua máquina para melhorar o seu desenvolvimento pessoal utilizando containers. Desta maneira evitamos ter que instalar os requisitos necessários e podemos subir e destruir a qualquer momento utilizando a licença community.

Essa prática é ainda interessante para ser montada em pipelines subindo um container, analisando o código e destruindo logo em seguida.