Analisando qualidade de código com Análise Estática e Linters

By Weverton do Couto Timoteo

Elevator Pitch

Só verificar se o build está verde para saber que a sua entrega tem qualidade é suficiente? Além de packages, alguns serviços vêm surgindo se propondo a monitorar a “qualidade” do software, não confiando apenas em testes automatizados.

Como se define qualidade? O que torna um código “bom”?

Description

Já faz um tempo que ferramentas de Integração Contínua e CI-como-serviço se tornaram um requisito para qualquer projeto que queira alguma garantia que as funcionalidades existentes funcionam ou que um bug foi devidamente corrigido. Configurar qualquer uma dessas ferramentas é rápido e fácil, então verificar cada commit/pull request/merge request acabou sendo crucial na tarefa de ajudar times à ficar de olho na suite de testes.

Mas será que é suficiente só verificar se o build está verde para saber que a sua entrega tem qualidade? Além de packages, algumas “métricas-como-serviços” vêm surgindo, se propondo a monitorar a “qualidade” do software, não confiando apenas em testes automatizados.

Mas como se define qualidade? O que torna um código “bom”?

Devemos apenas medir a coberatura de testes e rodar ferramentas de análise estática ou sintática?

Quais métricas são mais importante para medir a qualidade de código do projeto que você trabalha? E como analisar a nossa codebase Go?

Nessa talk irei cobrir algumas métricas agnósticas à linguagem de programação como tipos de Cobertura, Complexidade e Acoplamento e um tour por alguns linters utilizados em cada subcategoria.