Você já ouviu falar em SonarQube? Bem, sabemos que durante o desenvolvimento de software é importante manter a eficiência nas soluções e a agilidade nas entregas.
Contudo, nem sempre é fácil detectar com tanta rapidez falhas e mudanças de padrões de código no que está sendo desenvolvido. Consequentemente, isso pode baixar a qualidade e impactar o produto de software final, gerando bugs, code smells e outros conflitos que podem passar despercebidos em um primeiro momento.
Como forma de solucionar tais problemas, existem ferramentas capazes de realizar essa averiguação e assegurar a qualidade do código do projeto, aplicando boas práticas por linguagem de forma atualizada. Deste modo, entra em cena nosso analisador de código estático: o SonarQube.
Como funciona o SonarQube
Desenvolvido pela SonarSource, o SonarQube é uma ferramenta de análise de código que auxilia na detecção de problemas que podem ocorrer no código, sejam eles problemas com code smells, segurança ou bugs.
Ele também auxilia na detecção de cobertura, realizando uma análise dos testes unitários do projeto e novos testes para novas entradas de código. Ele dedura, viu?!
O SonarQube possui algumas versões, sendo a “community” a versão mais utilizada, já que oferece ferramentas suficientes para a análise de código de maneira geral. Destacam-se as diferenças entre elas:
- Community → Versão gratuita, com limitações, mas que já atende muito bem à necessidade de uma ferramenta de análise de código. Ela possui diversos plugins para auxílio, desde a validação até a geração de report (versão LTS 8.9);
- Developer → Versão paga que possui mais algumas linguagens de cobertura, realiza análise de features e branches e tem melhor compatibilidade com ferramentas de git;
- Enterprise → Versão mais robusta do SonarQube que, além de possuir suporte para linguagens mais antigas (como o COBOL), é especializada na geração de reports, auxiliando, assim, em apresentações;
- Data Center → Como seu slogan diz, é a versão de foco em redundância de componentes, resiliência de dados e escalabilidade;
Entre as principais funcionalidades do SonarQube, podemos citar:
Regras atualizadas do SonarQube
A equipe da SonarSource mantém as regras atualizadas conforme é lançada uma nova versão do Sonar para cada linguagem a qual ele presta suporte. Atualmente, há 29 linguagens disponíveis.

Quality Profiles
Os Quality Profiles são funcionalidades bastante importantes para a evolução de qualidade. Com eles, é possível criar limites de regras ativas de forma customizada e realizar etapas de evolução dessas regras por projeto, possibilitando sua continuidade.

Quality Gates
Já os Quality Gates definem metas de qualidade que o projeto deverá superar para se tornar apto a passar pelo gate. Basicamente, o projeto deve atender às métricas baseadas nas regras ativas criadas pelo quality profile usado pelo projeto. É uma etapa de extrema relevância para a estrutura de confiabilidade.

Utilização do Sonar Scanner
Para que o SonarQube possa fazer a validação do código, é necessário um relatório que será considerado para levar a análise e a valorização ao quality gate. Assim, entra o Sonar Scanner, ferramenta que contém todos os dados por linguagem e é responsável pela geração e envio desse relatório para o SonarQube.
Esse scanner deve ser instalado na máquina que irá rodar a execução da análise, porém, é possível deixar essa dependência instalada no projeto para fácil execução, chamando, assim, apenas um script – como ocorre em projetos que utilizam Node.js.

Análise de código com relátorio de lint
É possível também utilizar ferramentas plugáveis que analisam o código-fonte e auxiliam na validação do SonarQube. Uma delas é o ESLint, que pode conter regras de validação próprias, gerando um relatório para envio durante a execução do Sonar Scanner e sendo pontuado na análise do próprio Sonar.
Interface de análise do SonarQube
O SonarQube também possui uma interface de análise gráfica que é capaz de fornecer dados importantes para cada projeto analisado em sua plataforma. Essa característica é importante para a validação e a correção de métricas do projeto.

Integração com o Jenkins
É possível também integrar o SonarQube ao Jenkins via WebHook, de maneira a ser utilizado como um homologador de qualidade na própria pipeline dos projetos. Isso evita a necessidade de configuração do apontamento do Scanner ao SonarQube e torna tudo ainda mais automatizado.
Deste modo, impacta-se a agilidade do processo de verificação e se evitam códigos que diminuem a média de qualidade.

Resgatando atrasos
Já para projetos mais legados ou que possuem uma gama de funcionalidades, mas que seguiram más práticas de desenvolvimento e, por vezes, possuem poucos ou nenhum teste unitário, o processo acontece de maneira diferente.
Possuímos um projeto que, apesar de entrar com novas funcionalidades, conta com um número limitado de responsáveis. No entanto, tais responsáveis procuram sempre correr atrás do tempo perdido e restabelecer a qualidade do projeto. Nesses casos, é interessante elaborar uma estratégia com todo o time, pensando na integração para uma evolução de quality profiles e quality gates com prazos bem definidos.
Ainda assim, podemos ter uma barreira cultural que encaminhe a necessidade de um desenvolvimento e amadurecimento do time para, então, realizar a introdução de demandas de qualidade e sua importância para o produto.
Leia mais: o que é Cultura de Qualidade?
O benefício de aplicação do SonarQube em projetos novos
Para projetos novos, a utilização do Sonar pode ser de extrema importância para aculturar toda a equipe à sua utilização, com o intuito de obter uma ótima qualidade de código.
A aplicação do Sonar nesse tipo de projeto tornou-se fácil e conhecida, já que sua integração e padronização podem definir o padrão geral no projeto, seja na qualidade do código ou no desenvolvimento de testes unitários.
Isso facilita a adoção de boas práticas e a melhoria da qualidade nos cenários de testes unitários, onde podemos sair do velho “passou, tá bom” e adquirir uma rica cobertura. Lembrando sempre que quantidade não é qualidade!
Concluindo
Para controle e melhoria de qualidade em seu produto de software é ideal ter uma ferramenta que detenha recursos que possibilitem tal cenário. Logo, o SonarQube é uma oportunidade que pode ser implementada de maneira gratuita, mas com recursos suficientes para fornecer padronização de qualidade em seus projetos.
Pode-se ainda avançar para uso mais robustos de acordo com seu pacote no SonarQube, assim fornecendo suporte atualizado para várias linguagens independente de qual você trabalhe e quantos projetos sua empresa tenha.
Mas e você, caro leitor?
Já deu uma olhada na qualidade de seus projetos e refletiu sobre o tempo que gasta para encontrar e corrigir bugs e code smells sem uma ferramenta como essa em seu processo de desenvolvimento?