Ruff es un analizador de código y formateador para Python, diseñado para ser rápido y compatible con múltiples reglas de estilo y linters. Sus opciones se pueden configurar desde la línea de comandos o a través de archivos de configuración como pyproject.toml, .ruff.toml o ruff.yaml.
Ruff puede reemplazar herramientas como flake8, pylint y mypy en algunas funciones:
Detección de errores comunes (E, W)
Errores de sintaxis y estilo (F)
Complejidad del código (C)
Seguridad (S)
Tipos de datos (ANN para anotaciones)
Ejemplo:
ruff check .
Opciones útiles:
ruff check --fix # Corrige errores automáticamente
ruff check --select E,W,F # Solo chequea reglas específicas
ruff check --ignore ANN,S # Ignora ciertas reglas
ruff check --show-source # Muestra el código fuente de los errores
ruff check --preview # Activa reglas en desarrollo
Ruff también puede formatear el código como black:
ruff format .
Opciones útiles:
ruff format --check # Verifica si el código ya está formateado
ruff format --diff # Muestra los cambios sin aplicarlos
Puedes personalizar Ruff en pyproject.toml:
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = ["E", "W", "F", "C"]
ignore = ["ANN", "S"]
Puedes usar Ruff con pre-commit para evitar errores antes de hacer un commit:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.0
hooks:
- id: ruff
- id: ruff-format