Ruff no SotuHire¶
Objetivo¶
O SotuHire usa Ruff para manter qualidade e consistência no código Python.
Ruff é um linter e formatador Python rápido, escrito em Rust. Ele pode substituir várias ferramentas separadas em projetos pequenos e médios, como parte de Flake8, isort, Black, pyupgrade e plugins comuns.
Por que usar Ruff¶
Para o SotuHire, Ruff faz sentido porque:
- é rápido;
- reduz ferramentas no projeto;
- funciona bem com
pyproject.toml; - roda fácil no terminal;
- integra bem com CI;
- ajuda a manter Clean Code;
- evita commits com imports quebrados, variáveis não usadas e formatação inconsistente.
Comandos principais¶
Verificar problemas:
ruff check .
Corrigir automaticamente quando possível:
ruff check . --fix
Formatar:
ruff format .
Verificar se está formatado sem alterar arquivos:
ruff format . --check
Configuração recomendada¶
O arquivo pyproject.toml deve centralizar a configuração:
[tool.ruff]
line-length = 100
target-version = "py311"
src = ["modules", "tests"]
[tool.ruff.lint]
select = [
"E",
"F",
"I",
"B",
"UP",
"SIM",
]
ignore = [
"E501"
]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
line-ending = "auto"
Regras iniciais¶
Para não virar overengineering, comece com regras úteis:
E: pycodestyle;F: Pyflakes;I: organização de imports;B: flake8-bugbear;UP: pyupgrade;SIM: simplificações.
Evite ativar regras demais logo no começo. O foco é melhorar o código, não travar desenvolvimento.
Integração com pytest¶
O fluxo local deve ser:
ruff check .
ruff format . --check
pytest
Integração com GitHub Actions¶
O CI deve rodar:
python -m ruff check .
python -m ruff format . --check
python -m pytest
Quando usar --fix¶
Pode usar:
ruff check . --fix
Antes de commitar, revise o diff:
git diff
Não aceite correções automáticas cegamente em regra de negócio.
O que não colocar no Ruff¶
Ruff não substitui:
- testes;
- validação de schema;
- revisão humana;
- análise de arquitetura;
- documentação;
- segurança;
- bom senso.
Ele é uma camada de qualidade, não a qualidade inteira.