Do Zero: Sonarlint - para que serve esse plugin e por que você não vai mais viver sem ele
Tags: beginners, productivity, codequality, java
Published: 2020-07-28 14:26:19

Se você está iniciando agora no mundo do desenvolvimento de software, provavelmente já deve ter a sua **_IDE_** escolhida e devidamente instalada, certo? Caso não tenha ainda (e talvez nem saiba o que é e para que serve), dá uma olhada nesse artigo introdutório [aqui](https://www.treinaweb.com.br/blog/o-que-e-uma-ide-ambiente-de-desenvolvimento-integrado/) e também em algumas opções para Java [aqui](https://www.treinaweb.com.br/blog/principais-ides-para-desenvolvimento-java/).

Com sua IDE já à postos, chegou a hora de conhecer um **_plugin_** que é muito útil e até, eu diria, **essencial** para nos auxiliar a escrever código com qualidade - o [**_Sonarlint_**](https://www.sonarlint.org/).

A grande vantagem dessa ferramenta é que ela nos ajuda a **ver** e a **corrigir** pontos negativos que talvez nem saibamos ainda que estão habitando nosso código: como possíveis bugs, nullpointers, condições desnecessárias e tudo aquilo que pode gerar códigos mal escritos e com problemas de qualidade.
![gif dog surpreso](https://media.giphy.com/media/fpXxIjftmkk9y/giphy.gif)

Outra boa notícia acerca do Sonarlint, é que ele pode ser utilizado nas mais famosas IDE's, como por exemplo, Eclipse, IntelliJ e VS Code. E também, ele não está restrito a linguagem Java (minha queridinha :cupid: ), mas também trabalha com Javascript, Python, Kotlyn, Ruby, Php, C#, dependendo da IDE escolhida.

A instalação é muito simples e rápida: 
- No Eclipse, basta ir no menu Help e Eclipse Marketplace. Buscar "Sonarlint" e clicar em "Install".
![Instalação Eclipse](https://dev-to-uploads.s3.amazonaws.com/i/963af8t6xlgtlnzdnxhg.gif)


- No IntelliJ, vá em "File", "Settings", "Plugins" e busque por Sonarlint e clique em "Install".
![Instalação IntelliJ](https://dev-to-uploads.s3.amazonaws.com/i/ub5imtxhga8lhg8ajguv.gif)


Nos dois casos, será necessário **reiniciar** a IDE para a alteração ser aplicada e o plugin funcionar efetivamente.

O Sonarlint é um detector, em tempo real, de **códigos fedidos** - que geram dificuldades de manutenção ([leia mais aqui](https://refactoring.guru/refactoring/smells)  - em inglês), **bugs** :bug: e **vulnerabilidades**. Para essas categorias, temos também o nível de severidade dos problemas, que são: *_Minor_*, *_Major_*, *_Critical_* e *_Blocker_*.

Em seu trabalho, o Sonarlint, **sinaliza** o trecho de código a ser corrigido/melhorado e ainda fornece uma **explicação** para o problema e **como corrigí-lo**, mostrando exemplos de código que não estão em conformidade com a regra e o exemplo de código em conformidade, isto é, a forma mais adequada de escrever aquele trecho. Mas são apenas sugestões, e não segui-las não quer dizer que seu código não irá funcionar da mesma forma.

Vamos ver um exemplo abaixo:
- Nesse caso, temos um teste que tem a intenção de validar se dois nomes (do tipo String) são iguais. Porém, estou usando para comparar o firstName e o secondName o operador de igualdade ``` == ```. Nesse exemplo, meu teste não está passando, mesmo com os dois nomes tendo valores iguais. :disappointed: O que pode estar acontecendo???

Imediatamente, o Sonarlint me alerta que *_algo errado não está certo_*!
![Código com bug](https://dev-to-uploads.s3.amazonaws.com/i/5a0es1ks8zldzqk2fvvo.png)

Logo abaixo, na aba do Sonarlint, temos mais informações: Ele me mostra uma **breve descrição** da regra, com o seu **tipo**, que nesse caso seria um "bug" e com o **nível de severidade** "Major". (Caso não esteja visualizando a aba do Sonarlint, você pode acessá-la no IntelliJ indo no menu "View", "Tool Windows", "Sonarlint". E no Eclipse, no menu "Window", "Show view", "Other...", "Sonarlint").
![Regra no sonarlint](https://dev-to-uploads.s3.amazonaws.com/i/aag6ly0tc1lk860m7v7g.png)

E por fim, a cereja do bolo :cherries::cake:: A forma de **como corrigir** esse código, com um exemplo que não causaria mais bugs.
![Dica para correção](https://dev-to-uploads.s3.amazonaws.com/i/ir0juthrjt3ay5pjxonz.png)

Então, me aproveitando dessa dica do Sonarlint, vou corrigir meu código, sendo o resultado final este:
![Código corrigido](https://dev-to-uploads.s3.amazonaws.com/i/pikqv8r6ep3voa1z9xyn.png)

Além desse exemplo acima, o Sonarlint dá muitas dicas para deixar seu código sem bugs, mais legível e com qualidade. Se quiser uma lista completa das regras que ele aponta, [clica aqui](https://rules.sonarsource.com/java).

Esse plugin é ou não é maravigold?!:mage_woman: