Overview
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.