Skip to content
Latchkey

Ruff vs Flake8: qual linter de Python para o CI?

O Ruff é um linter baseado em Rust que roda muito mais rápido que o Flake8 e incorpora as regras de vários plugins.

O Flake8 é um linter de Python consagrado que envolve o pyflakes, o pycodestyle e plugins. O Ruff (da Astral) é um linter baseado em Rust que reimplementa um grande conjunto de regras do Flake8/plugins e roda ordens de magnitude mais rápido, muitas vezes substituindo várias ferramentas de uma vez.

Flake8Ruff
ImplementaçãoPythonRust
VelocidadeMais lentoExtremamente rápido
Cobertura de regrasNúcleo + pluginsReimplementa as regras de muitos plugins
AutofixNãoSim (muitas regras)
ConsolidaçãoVárias ferramentas/pluginsUma ferramenta para muitas verificações

No CI

O Ruff normalmente linta uma base de código Python grande em uma fração de segundo, onde o Flake8 leva muito mais tempo, e pode substituir o Flake8 mais vários plugins (isort, regras no estilo pyupgrade e mais) com um único binário rápido. Ele também faz autofix de muitos problemas. O Flake8 continua familiar e estável; se você depende de um plugin de nicho do Flake8 que o Ruff ainda não portou, mantenha essa verificação.

Esforço de migração

Mapeie os plugins do Flake8 que você tem habilitados para os conjuntos de regras do Ruff, rode o Ruff com --fix em um único commit e então imponha no CI. A maioria das regras comuns do Flake8/plugins tem equivalentes no Ruff; verifique quaisquer plugins especializados dos quais você depende.

O veredito

Quer linting muito rápido que consolida várias ferramentas e faz autofix: Ruff. Depende de um plugin de nicho do Flake8 que falta no Ruff: mantenha essa verificação (ou rode ambos). A maioria dos times move o grosso do linting para o Ruff.

Guias relacionados