Quality StampSabemos que nos métodos ágeis as equipes são auto-organizadas. Ou seja, não existe a figura de um chefe que verifica e controla tudo o que os membros da equipe estão fazendo. Assim, a responsabilidade de manter a qualidade do código que está sendo produzido é da própria equipe de desenvolvimento. Mas como fazer isso com agilidade? Como apoiar a equipe de desenvolvimento nesta tarefa?

No post de hoje, apresentamos o Sonar, uma ferramenta para apoiar o desenvolvimento através da geração de relatórios dinâmicos que dão um feedback sobre a qualidade do código que está sendo produzido.

No dia a dia do desenvolvimento de software, quantas vezes nos deparamos com códigos sem comentários e difíceis de entender? Quantas vezes encontramos códigos que fogem ao padrão definido para o projeto? Quantas horas (ou até dias) dispensamos com bugs que podiam ser resolvidos com alterações simples no código? Essas são algumas situações comuns em projetos de software, principalmente em equipes grandes, onde é ainda mais difícil controlar o código que está sendo desenvolvido pela equipe. Nos métodos ágeis, isso não é nem uma questão de controle, uma vez que a equipe é auto-organizada. Trata-se de uma questão de apoio ao desenvolvimento. Como apoiar o desenvolvedor para que ele possa desenvolver sempre um código de qualidade? Já pensou em utilizar o Sonar?!

O Sonar é uma ferramenta open source construída para avaliar a qualidade do código que está sendo desenvolvido. Questões de arquitetura, código duplicado, pontos potenciais de bugs, nível de complexidade e cobertura dos testes são avaliadas pelo Sonar, de modo a dar para a equipe um feedback da qualidade do seu código.

O Sonar pode ser configurado para armazenar todas as informações do seu código em um banco de dados para que se possa fazer também um acompanhamento da evolução da qualidade do código. Na Figura 1 é apresentada uma das telas geradas pelo Sonar, em que é mostrado um mapa geral da situação do código dos projetos envolvidos.

Mapa Geral Projetos

Figura 1: Mapa geral dos projetos

O usuário pode selecionar o tipo de avaliação que desejar. Por exemplo, avaliar a situação quanto ao percentual código duplicado em cada projeto. Quanto mais próximo da cor verde, maior a qualidade do projeto quanto ao tipo de avaliação selecionado. O usuário também pode selecionar um dos projetos (retângulos da Figura 1) para visualizar informações detalhadas do projeto correspondente.

Na Figura 2 são apresentadas informações mais detalhadas do projeto selecionado.

Visão Detalhada Projeto

Figura 2: Visão detalhada de um projeto

Uma forma de utilizar o Sonar é integrando-o a um serviço de integração contínua (IC) para automatizar a geração destes relatórios de avaliação da qualidade do código. Uma forma interessante seria programar o servidor de IC para diariamente fazer uma chamada ao Sonar e emitir um relatório dos projetos, de maneira a dar um feedback diário para a equipe sobre a qualidade do que ela está desenvolvendo. Ou então emitindo um relatório a cada commit no repositório de código. Dessa forma os desenvolvedores podem tomar conhecimento mais rápido acerca dos débitos técnicos da equipe e tomar as ações necessárias para corrigir o problema.

Reagir o mais cedo possível é importante para manter a qualidade do software que está sendo desenvolvido e garantir sempre qualidade nas entregas. Como mencionado anteriormente, a geração dos relatórios do Sonar pode ser integrada ao serviço de integração contínua de um projeto, como por exemplo, o Jenkins. No link "Jenkins Plugin" encontramos os detalhes de como fazer a integração das duas ferramentas.

No post de hoje apresentei uma forma de apoiar a equipe de desenvolvimento a manter a qualidade do seu trabalho. Com o uso do Sonar integrado a um serviço de IC é possível dar um retorno rápido para o desenvolvedor sobre a qualidade do seu código. O feedback diário é agilidade para a equipe, uma vez que permite que a ela tome conhecimento do que precisa ser melhorado o quanto antes, proporcionando entregas de qualidade para o cliente. E cabe ressaltar, que não se trata de uma questão de controle de qualidade, mas sim de apoio ao desenvolvimento visando qualidade.

E você? O que sua equipe de desenvolvimento faz para manter a qualidade do seu código?