Skip to content
Latchkey

Flake8 vs Ruff: A Virada no Linting de Python

O Ruff reimplementa a maioria das verificações do Flake8 em Rust e roda muito mais rápido; o Flake8 mantém uma longa cauda de plugins e familiaridade.

O Flake8 tem sido o linter padrão de Python, unindo pyflakes, pycodestyle e um ecossistema de plugins. O Ruff cobre muitas dessas mesmas regras com velocidade muito maior, com um único binário e uma única config.

Flake8Ruff
LinguagemPythonRust
VelocidadeLenta em repositórios grandesMuito rápida
PluginsEcossistema grandeMuitas regras embutidas, menos plugins externos
Configsetup.cfg / .flake8 / tox.inipyproject.toml [tool.ruff]
AutofixNãoSim para muitas regras

Onde o Ruff vence

O Ruff é muito mais rápido, corrige automaticamente muitos problemas e consolida várias ferramentas por trás de uma única config. Ele mapeia os códigos de regra do Flake8, então a migração muitas vezes é uma questão de habilitar os conjuntos de regras equivalentes. Para a maioria das bases de código, ele cobre as verificações que você de fato usa.

Onde o Flake8 vence

O Flake8 tem um ecossistema de plugins grande e maduro. Se você depende de um plugin de nicho do Flake8 que o Ruff ainda não reimplementou, o Flake8 ainda tem a cauda longa mais ampla. Alguns times também valorizam seu histórico longo e estável.

Migração

Mova a config do Flake8 para [tool.ruff], habilite as famílias de regras correspondentes e compare a saída na sua base de código antes de trocar o gate de CI. Mantenha um plugin específico do Flake8 apenas se o Ruff não tiver um equivalente.

O veredito

Para a maioria dos projetos, o Ruff é o melhor padrão agora: mais rápido, com autofix e config única. Permaneça no Flake8 (ou rode-o em paralelo) apenas por plugins que o Ruff ainda não cobre.

Guias relacionados