O Que É Linting?
O linting executa uma ferramenta sobre o seu código para sinalizar violações de estilo, prováveis bugs e padrões desencorajados de acordo com um conjunto de regras.
Um linter lê o seu código e reporta problemas que um compilador não reportaria - estilo inconsistente, imports não utilizados, comparações suspeitas, anti-padrões. Executado no CI, ele mantém a base de código consistente e captura uma classe de pequenos bugs de forma barata e precoce.
O que um linter verifica
Os linters aplicam regras configuráveis: regras estilísticas (nomenclatura, espaçamento), de correção (variáveis não utilizadas, código inalcançável) e de boas práticas. Você ajusta o conjunto de regras às convenções da sua equipe.
Linter vs formatador
Um formatador (como o Prettier ou o gofmt) reescreve o código para um estilo fixo automaticamente. Um linter analisa e reporta, às vezes corrigindo automaticamente. Muitas equipes executam um formatador para o layout e um linter para problemas de nível lógico.
Um pequeno exemplo
O ESLint sinaliza const x = 1; x = 2; como atribuição a uma const e um import não utilizado como no-unused-vars. No CI, eslint . --max-warnings=0 faz qualquer achado desse tipo falhar o build, mantendo os problemas fora da main.
No CI
O linting é executado cedo e rápido como um gate: uma falha de lint interrompe o build antes dos testes, então regressões de estilo e bugs óbvios nunca são mescladas. Combiná-lo com um pre-commit hook captura a maioria dos problemas antes mesmo de chegarem ao CI.
Mantendo o conjunto de regras sensato
Uma configuração excessivamente rígida ou ruidosa treina as pessoas a ignorar a saída do lint. Comece a partir de um preset compartilhado sensato, habilite regras que capturam problemas reais e corrija automaticamente as mecânicas, para que as falhas restantes valham a leitura.
Principais conclusões
- O linting sinaliza problemas de estilo, prováveis bugs e padrões desencorajados por regra.
- Um formatador reescreve o layout; um linter analisa e reporta.
- Execute-o como um gate rápido e precoce, idealmente com um pre-commit hook correspondente.