Linters - Ferramentas Para Padronizar Seu Código
O que é um linter
[editar | editar código-fonte]Linters são ferramentas de análise estática de código que servem para detectar problemas semânticos do código que o compilador não pode detectar e que podem prejudicar a execução do programa ou a manutenibilidade do código. Linters possuem configurações que podem ser personalizadas para determinar como inspecionar o código através de regras e níveis assim determinando padrões de escrita de código.
Uma regra diz qual tipo de padrão o linter deve inspecionar no código. Existem regras para os mais diversos padrões, por exemplo: usar nomes `camelCase`, uso de notações de tipo (em linguagens dinâmicas), checar tamanho das funções, checagem de valores nulos, proibir uso de certos métodos, etc.
Para cada regra se define o nível de severidade de uma infração dessa regra, em geral os níveis são: desligado, alerta e erro. Podemos configurar uma regra para usar nomes de função `snake_case` com nível de erro. Desse modo, ao escrever um código como o baixo:
function DoSomething() {
// ...
}
Um linter como ESLint emitiria um erro informando que o nome da função não atende ao padrão
Configurando Linters
[editar | editar código-fonte]Javascript ESLint
[editar | editar código-fonte]Referência https://eslint.org/
Adicione o ESLint ao seu projeto Node com
npm install --save-dev eslint @eslint/js
Crie o arquivo de configurações eslint.config.js e inicie com o setup padrão:
import js from "@eslint/js";
export default [
js.configs.recommended,
{
rules: {
"no-unused-vars": "warn",
}
}
];
No campo rules
é onde são feitas as configurações de quais regras o ESLint deve adotar quando executar a verificação do seu projeto. Veja todas opções de configuração e a lista de regras.
Para executar o linter rode (na raiz do projeto):
npx eslint . # vai analisar todos arquivos do diretório atual
npx eslint . --fix # analisa e corrige os arquivos
Editores de texto tem suporte a extensões para integrar o ESLint ao seu fluxo de trabalho. A extensão ESLint do VS Code executa a análise em tempo real, mostra problemas no código e fornece ações de código para aplicar correções.
Python Pylint
[editar | editar código-fonte]Referência https://www.pylint.org/
Instale o pylint disponível no PyPI
pip install pylint
Crie o arquivo de configurações padrão
pylint --generate-rcfile
O arquivo é dividido em seções, uma para cada verificador (checker), você pode ver os diferentes recursos (no formato de opções para a linha de comando) e mais detalhes
Você pode passar as opções de linha de comando para o comando pylint --generate-rcfile
e assim gerar um arquivo com as opções desejadas.
Para executar o linter rode (na pasta do projeto):
pylint . # vai analisar todos arquivos no diretório atual
Editores de texto tem suporte a extensões para integrar o Pylint ao seu fluxo de trabalho. A extensão Pylint do VS Code executa a análise em tempo real, mostra problemas no código e fornece ações de código para aplicar correções.
Rust Clippy
[editar | editar código-fonte]Referência https://doc.rust-lang.org/clippy/
Clippy já vem instalado como um componente na instalação padrão do Rustup. Caso não o tenha, adicione com:
rustup component add clippy
Modifique o arquivo Cargo.toml
do seu projeto para incluir duas novas seções:
[lints.rust]
[lints.clippy]
O rust possui um linter nativo (bastante simples), suas regras podem ser configuradas na primeira seção. Já as regras de linting adicionadas pelo Clippy devem ficar na seção [lints.clippy]
Verifique a documentação completa sobre configuração e regras.
Para executar o linter rode (na pasta do projeto):
cargo clippy
Kotlin Ktlint
[editar | editar código-fonte]Referência https://pinterest.github.io/ktlint/latest/
Diferentemente de outros linters, o Ktlint é recomendado para ser instalado como um plugin do seu editor de texto. Para instalar o plugin no IntelliJ IDEA, vá em File > Settings > Plugins > Marketplace e procure por Ktlint e instale. Basicamente nenhuma configuração é necessária, o plugin já vem com as regras padrão que são recomendadas como forma de verdadeiramente padronizar o estilo de código.
A verficação e formatação do código é feita automaticamente pelo plugin.