Skip to content
Latchkey

Ruff vs Pylint: velocidade vs profundidade no linting Python

O Ruff é um linter Rust extremamente rápido que substitui muitas ferramentas; o Pylint é mais lento, mas realiza uma análise mais profunda e mais opinativa.

O Ruff faz lint (e pode formatar) Python em uma fração do tempo das ferramentas legadas, reimplementando muitas regras do Flake8/pycodestyle/pyflakes em Rust. O Pylint executa verificações semânticas mais profundas e heurísticas de design que o Ruff não cobre por completo.

RuffPylint
LinguagemRustPython
VelocidadeMuito rápido (ordens de magnitude)Lento em código grande
Amplitude de regrasMuitos Flake8/plugins reimplementadosVerificações semânticas + de design profundas
Configuraçãopyproject.toml [tool.ruff].pylintrc / pyproject
AutofixSim para muitas regrasSem autofix

Onde o Ruff ganha

O Ruff é rápido o suficiente para rodar a cada save e a cada commit sem atrito, e consolida Flake8, isort, pyupgrade e mais atrás de uma única ferramenta e configuração. Ele autocorrige muitos problemas. Para a maioria dos times, ele cobre as regras de lint que eles realmente aplicam.

Onde o Pylint ganha

O Pylint realiza uma análise mais profunda: pega certos problemas de lógica, sinaliza cheiros de design (argumentos demais, complexidade) e aplica verificações opinativas que o Ruff não implementa por completo. Se você depende dos avisos de design ou refatoração do Pylint, o Ruff ainda não é um substituto completo.

Em CI

Muitos times rodam o Ruff como o portão rápido em cada PR e rodam o Pylint com menos frequência (à noite ou sob demanda) por seu sinal mais profundo. O Ruff reduz drasticamente o tempo de lint nos pipelines; o Pylint adiciona profundidade onde você quiser.

O veredito

Use o Ruff como seu linter e formatador rápido primário para o CI do dia a dia; adicione o Pylint quando quiser suas verificações semânticas e de design mais profundas. Eles são mais complementares do que mutuamente exclusivos.

Guias relacionados