Logo E-Commerce Brasil

Como utilizar o SonarCloud para melhorar a qualidade de código de uma aplicação

Por: Herbert de Oliveira

Software Engineering na WEBJUMP

É Software Engineering na WEBJUMP. Especialista técnico no desenvolvimento de sistema de e-commerce de médio e grande porte. Atua com digital há 13 anos, sendo nove deles na WEBJUMP (única empresa Adobe Gold Partner com selo Specialized na América Latina). Já trabalhou em clientes de médio e grande porte, como Ambev, AB inBev, Elgin, Evino, FTD, Madeiranit, Obramax, entre outros.

O que é o SonarCloud?

A análise de qualidade do código-fonte é um processo que, como o próprio nome diz, avalia a qualidade do código escrito pelos desenvolvedores com base em critérios como legibilidade, manutenibilidade, eficiência, escalabilidade e segurança.

Como é feita a avaliação?

A análise é realizada através da utilização de ferramentas de análise estática de código que podem detectar possíveis vulnerabilidades de segurança, erros de sintaxe, problemas de desempenho, código mal formatado, duplicação de código e outras violações de boas práticas de codificação.

A análise de qualidade do código é fundamental para garantir que o software desenvolvido atenda aos requisitos do cliente e esteja livre de bugs e vulnerabilidades. A qualidade do código afeta diretamente a qualidade do software, e é importante que os desenvolvedores sejam capazes de escrever código limpo e bem estruturado para garantir que o software atenda aos padrões de qualidade e segurança. Além disso, a análise de qualidade do código é uma parte crítica do processo de desenvolvimento de software, permitindo que os desenvolvedores identifiquem problemas precocemente, economizando tempo e dinheiro no longo prazo. Por essas razões, a análise de qualidade do código-fonte é uma prática importante e indispensável no desenvolvimento de software moderno.

Por que equipes de negócio devem investir na qualidade do código que está sendo desenvolvido por suas equipes?

Investir na qualidade do software é essencial para equipes de negócios, pois a qualidade do software afeta diretamente a experiência do usuário e, por sua vez, a satisfação do cliente. Afeta a velocidade e a eficiência com que as tarefas podem ser realizadas, e pode gerar um grande impacto no sucesso geral do negócio. Um software de qualidade inferior pode ocasionar falhas frequentes, atrasos no lançamento de produtos, insatisfação dos clientes e perda de receita.

Investir na qualidade do software também pode ajudar a melhorar a eficiência e a produtividade das equipes de negócios. Softwares bem construídos e bem testados permitem que as equipes se concentrem em tarefas mais importantes e ajudam a reduzir a necessidade de lidar com problemas de software. Isso colabora para aumentar a eficiência do trabalho e para reduzir a sobrecarga administrativa para as equipes de negócios.

Além disso, a qualidade do software gera um impacto significativo na segurança do negócio. Softwares com vulnerabilidades de segurança podem levar a violações de dados, o que pode gerar um impacto negativo na confiança do cliente e na reputação da empresa. Investir na qualidade do software, incluindo a sua segurança, é de extrema importância para garantir a integridade do negócio e proteger a privacidade do cliente.

Além disso, um software de alta qualidade pode trazer benefícios econômicos, já que tende a durar mais e ser mais fácil de manter, evitando falhas frequentes, atrasos no lançamento de produtos, insatisfação do cliente final e perda de receita. Portanto, é essencial que empresas invistam na qualidade de seus softwares como parte fundamental de sua estratégia de negócios. Isso ajuda a reduzir os custos de manutenção do software e a prolongar a vida útil, reduzindo a necessidade de substituí-lo regularmente. Ou seja, investir na qualidade do software é uma necessidade para equipes de negócios que desejam garantir a satisfação do cliente, melhorar a eficiência das operações e proteger a integridade e a privacidade do negócio.

Sobre o SonarCloud

Atualmente, no mercado de tecnologia, há diversas ferramentas voltadas para analisar a qualidade do código que está sendo entregue pelas equipes de desenvolvimento. Dentre tantas ferramentas disponíveis, uma das mais famosas com certeza é o SonarCloud. A ideia por trás do SonarCloud é que a ferramenta crie uma análise constante de todo o código da aplicação – ela analisa o código de maneira automatizada, sempre oferecendo uma visão 360° da saúde do código.

Por outro lado, temos uma situação muito comum para esse tipo de ferramenta: muitas vezes, o time técnico não sabe ler o que a ferramenta está dizendo. Normalmente, os profissionais leem apenas de maneira “estática” os indicadores e gráficos mostrados na ferramenta:

Ficou “verde”? Ok. Podemos seguir.

E este é um dos grandes problemas que temos no ciclo de desenvolvimento atualmente: a subutilização de ferramentas que visam principalmente garantir a qualidade do software que está sendo desenvolvido. Então, o intuito deste artigo é compartilhar um pouco da maneira como sempre leio as informações disponibilizadas pelo SonarCloud e, além disso, mostrar quais ações escolho para poder sempre ter controle da saúde do que o time está desenvolvendo.

Indicadores

Iniciamos as análises a partir dos principais indicadores disponibilizados pelo sonar e o que eles indicam:

***Quality Gate

Bugs

Vulnerabilidades + Security Hot Spots

Code Smells:

Coverage

Duplicação

Quality Gate

O Quality Gate é um indicador que avalia se o código-fonte da aplicação está ou não em conformidade com as boas práticas de codificação. É um indicador binário que fornece uma visão geral e rápida sobre o estado atual do código.

Na prática, o Quality Gate é uma visão compilada dos outros indicadores e, por isso, não devemos ignorar os outros indicadores disponíveis no SonarCloud. Esses indicadores não são binários e fornecem informações valiosas sobre a evolução do código-fonte ao longo do tempo, permitindo-nos entender para onde ele está indo. Ao avaliar os gráficos dos indicadores, podemos identificar áreas que precisam de mais atenção e melhorias contínuas. No final do dia, o objetivo é deixar o Quality Gate em estado “passed”.

Bugs

Os bugs em códigos podem causar problemas a qualquer momento, podendo desde quebrar alguma funcionalidade ou até mesmo derrubar o site todo. Isso pode ocasionar sérios prejuízos, por isso, é necessário ter uma atenção imediata com esse indicador e, habitualmente, buscar o valor zero dele.

Vulnerabilidades + Security Hot Spots

Algo recorrente são as brechas de segurança, que podem gerar sérios problemas na aplicação. No caso específico do Security Hot Spots, os possíveis problemas são identificados pelo Sonar, que precisam de revisão para entender se realmente são problemas. Esses indicadores também necessitam de atenção imediata, buscando sempre o valor zero.

Code Smells

Code smells são conhecidos como “maus cheiros” e representam pontos no código que, embora sejam funcionais, não seguem as boas práticas de desenvolvimento de software. A presença desses code smells pode resultar em problemas de manutenção, dificultando a evolução do código ao longo do tempo e aumentando o risco de introduzir bugs. O Sonar é uma ferramenta que pode ajudar a identificar esses code smells, permitindo que a equipe de desenvolvimento possa corrigi-los para melhorar a qualidade do código.

Coverage

Aqui temos a métrica de cobertura de testes, que indica a porcentagem do código que é coberta por testes unitários. Se essa métrica estiver abaixo dos padrões aceitáveis de qualidade, isso pode causar problemas significativos para a equipe de manutenção do código no futuro. É importante garantir uma boa cobertura de testes para reduzir o risco de falhas e bugs no software.

Duplicação

A detecção de duplicação de código, como o próprio nome sugere, mostra a quantidade de código duplicado em um projeto. Embora o código duplicado possa funcionar corretamente, pode ser uma fonte de problemas de manutenção e aumentar o risco de erros. Portanto, é importante monitorar e minimizar a quantidade de duplicação de código em um projeto.

Leitura dos indicadores

Agora que entendemos um pouco sobre cada indicador, podemos fazer uma análise de cada um e tentar entender o que realmente eles estão dizendo. E não se preocupe, é algo muito simples de compreender.

Lendo um “grupo” de indicadores

Uma das maneiras de ler os indicadores é agrupada. É uma forma muito simples de entender o que está acontecendo e por que a aplicação está se comportando de maneira “estranha”. Também mostra quais medidas devem ser adotadas ou priorizadas para solucionar os problemas. No primeiro grupo, temos:

Indicadores que informam a quebra e a instabilidade da aplicação:

Bugs

Vulnerabilidades + Security Hot Spots

E o que esses dois indicadores, em conjunto, consegue nos dizer? Eles são indicadores que informam problemas que podem quebrar a aplicação a qualquer momento, gerando problemas de mau funcionamento ou segurança.

Logo, se surgirem problemas de funcionalidades quebradas ou o site fora do ar com uma certa frequência, a resolução dos problemas apontados nesses dois indicadores vai ajudar nesses tipos de problemas. Quanto maiores os valores de bugs, vulnerabilidades e Security Hot Spots, mais problemas de instabilidade você terá na sua aplicação. Portanto, priorize a resolução destses problemas imediatamente.

Indicadores que informam a complexidade na sustentação do código:

Code Smell

Coverage

Duplicação

Com esses outros indicadores em conjunto, é possível identificar as razões pelas quais a aplicação está se tornando difícil de sustentar. O termo “sustentar” refere-se a fazer qualquer alteração na estrutura do código. Se houver problemas para corrigir um bug e a implementação da solução está se tornando um desafio, agora você sabe o porquê.

Se ao olhar para o código de uma aplicação não é possível identificar onde fazer uma nova implementação, pode-se entender que o código está mal organizado e com baixa legibilidade, o que dificulta a manutenção e a evolução da aplicação. É importante que o código seja estruturado de forma clara e organizada para facilitar o entendimento e a identificação de onde novas funcionalidades devem ser implementadas. Assim, a aplicação poderá evoluir de forma mais rápida e eficiente, gerando novas receitas e atendendo às necessidades dos clientes de forma satisfatória.

Portanto, ao analisar esses três indicadores em conjunto, é possível entender o nível de complexidade para alteração do código da aplicação e, consequentemente, a quantidade de esforço necessária para manter esse código de forma significativa.

A leitura dos gráficos do Sonar ajuda a entender para onde está indo a saúde do código da aplicação.

Gráficos do Sonar de cada indicador

Gráficos de Bugs, Vulnerabilidades + Security Hot Spots e Code Smell

A análise desses três gráficos é bastante simples e evidencia o óbvio: o aumento de cada índice. Por isso, é importante trabalhar para manter esses gráficos com as linhas de indicação o mais baixo possível, a fim de garantir a qualidade do software e evitar problemas futuros.

Se a linha nos gráficos desses indicadores estiver em posição horizontal, indica que o problema está estacionado e não estamos dando a devida importância para os problemas que estão ocorrendo. Se elas estiverem aumentando, indica que estamos deixando passar os problemas, provavelmente, por code reviews executados de maneira inadequada.

Para evitar esses tipos de problemas, plataformas como Github, Bitbucket e Gitlab possuem ferramentas que se integram com o SonarCloud e bloqueiam os pull requests que não estão dentro do padrão. É importante ativar essas ferramentas e conversar com o time para revisar e garantir que os code reviews estão sendo feitos da melhor maneira possível.

Gráfico de coverage

A interpretação do gráfico de coverage é simples, mas nem sempre é óbvia para todas as pessoas envolvidas no desenvolvimento da plataforma. O gráfico apresenta duas linhas: “Lines to cover” e “Covered lines”, que são autoexplicativas.

Muitas vezes, as equipes observam apenas o valor fixo do nível de coverage, o que não está errado. No entanto, ao utilizar esse gráfico, a equipe pode identificar quando o projeto começa a apresentar problemas de cobertura. A situação ideal para garantir a saúde da aplicação é manter essas duas linhas próximas uma da outra.

Em resumo, a interpretação do gráfico de coverage é essencial para garantir que a aplicação esteja sendo adequadamente testada. É importante observar tanto a quantidade de linhas que precisam ser cobertas quanto a quantidade de linhas que estão sendo cobertas pelos testes unitários, que são cruciais para manter a qualidade do código.

Caso essas linhas estejam distantes, mas os testes estejam todos “verdes”, podemos chegar a duas possíveis conclusões:

O código é legado e obviamente a cobertura de testes está sendo tratada agora. Nesse caso, o time precisa ter um plano claro de como esse débito técnico será tratado o quanto antes. Uma abordagem essencial é o time traçar metas com prazos progressivos e se comprometer com esses objetivos.

Os testes que estão sendo desenvolvidos estão sendo feitos apenas para ficarem “verdes”, o que indica que os testes não estão sendo feitos da maneira correta e o time terá sérios problemas no futuro para refatorar, corrigir ou adicionar novas funcionalidades nesse código. Nesse caso, é preciso ser executado um trabalho com o time e para ajudá-lo a escrever testes unitários melhores.

Gráfico de código duplicado

A interpretação do gráfico de duplicação de código, assim como o de cobertura, é simples. O gráfico apresenta duas linhas: “Lines of code” e “Duplicated lines”. Na tomada de decisões, devemos seguir a lógica oposta à do gráfico de cobertura, ou seja, é necessário trabalhar para que as duas linhas fiquem o mais distante possível.

Quando a linha “Duplicated lines” está em ascensão, há um problema sério no time, que está permitindo a duplicação de código. Essa situação pode ocorrer por diversas razões, como um code review ineficiente, a presença de testes unitários de baixa qualidade que resultam em uma arquitetura fraca e altamente acoplada, dificultando o reuso de código e gerando uma alta frequência de duplicação.

Para solucionar esse problema, é necessário avaliar a cobertura e a qualidade dos testes unitários, e garantir que ambos sejam de alta qualidade. Com isso, o time terá a estrutura necessária para realizar um trabalho de refatoração dentro do próprio ciclo de desenvolvimento. Além disso, lembre-se: é importante garantir um code review eficiente!

Em resumo, o time de desenvolvimento deve garantir que a linha “Duplicated lines” esteja sempre em declínio, independentemente da quantidade de linhas de código na aplicação.

Conclusão sobre o SonarCloud

Em resumo, investir na qualidade do código é uma necessidade para equipes de negócios que desejam garantir a satisfação do cliente, melhorar a eficiência das operações e proteger a integridade e a privacidade do negócio. Ferramentas como o SonarCloud podem ajudar a garantir a qualidade do código, mas é importante que as equipes técnicas aprendam a interpretar e a utilizar os indicadores disponibilizados para obter os melhores resultados.