Porque usar Lint no seu projeto de testes?

Wellington Avelino
assert(QA)
Published in
3 min readNov 28, 2017

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.

--

--

Wellington Avelino
assert(QA)

Software Eng, Testing, Build Tools, Crossfit, Cycling