Porque usar Lint no seu projeto de testes?

Fala galera!

Esse é um assunto que não vejo sendo muito discutido entre os QA's que eu converso, mas vocês acham que devem passar Lint no seu projeto de teste?

Eu espero que a resposta tenha sido sim :P

Obs: Lembrando que isso vale para todos que escrevem pelo menos uma linha de código, até porque QA's que automatizam também são desenvolvedores.

Antes de eu começar seria interessante saber o que seria o tal do Lint ou melhor dizendo análise estática de código, esse será o nome que utilizaremos daqui em diante.

Análise estática do código nada mais é do que uma depuração do seu código fonte, procurando por possíveis bugs no seu código, verificando erros de sintaxe, complexidade ciclomática de código, também sendo possível a verificação de style code e boas práticas, existem outras possibilidades mas acredito que isso já te faça olhar com outros olhos.

Qual o ganho que eu vou ter realizando uma análise estática do meu código?

Os principais ganhos é automatizar um processo que é demorado e requer muita atenção a cada linha que será analisada, como no exemplo abaixo:

Legal, temos um pedaço de código que só vai no retornar os números que são pares, mas e ai?
Conseguem olhar e já saber quais são os problemas desse código?

Para realizar a análise estática de código em Ruby, vou utilizar o RuboCop que é baseado no Ruby style guide. No link existem uma parte onde ensina como instalar, então vou focar aqui somente em como utilizar e configurar.

Com o rubocop instalado, vamos rodar para saber o que esse código nos apresenta.

Vocês vão olhar e me falar, nossa um código tão pequeno pode existir tantos "problemas" ?

Eu te respondo que sim, e é por isso que quando abrindo por exemplo o Android Studio ele nos da pelo menos 30k de warnings e possíveis problemas.

Vamos refatorar esse pequeno código problemático para seguir as boas práticas?

Agora vamos rodar novamente o rubocop

Podemos ver que agora estamos seguindo as boas práticas e nosso Lint não acusa nenhum problema que fere tais práticas.

Um fator importante é que é possível configurar o que sera verificado através de um arquivo rubocop.yml que deve ficar na raiz do seu projeto, abaixo um exemplo de um que criei e venho usando durante um tempo nos projetos por onde eu passo:

Temos também um ganho em legibilidade do código onde não tenho um código hadouken, onde mesmo que seja pequeno já iniciamos o processo de hadoukenização:

código hadouken:

fonte

É de extrema importância ressaltar que o Lint não substitui o bom e velho code review, ele apenas automatiza parte do processo e faz isso muito mais rápido que olhar linha por linha :)
FAÇAM CODE REVIEW

Então da mesma maneira que o lint é passado nos projetos de backend ou front, ele deve ser passado no seu teste, mas por quê?

Seu teste automatizado também é código e por ser código, deve seguir as boas práticas de programação, e seguir o style de cada linguagem. Fazendo isso você garante que quem for pegar seu código para olhar não dar de cara com um mini monstro e sim com um código bonito e fácil de ler.

Nesse exemplo citei apenas de Ruby, mas existem Lint's para diversas linguagens, então não existe desculpa para rodar naquela classe que você acabou de escrever e não se preocupou com a granularidade de seus métodos, nem com complexidade ciclomatica, entre outras coisas.

Espero que esse texto sirva de inspiração para que vocês comecem a passar um lint no código e que isso evolua para um lint que rode numa integração contínua.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.