Ruff: herramienta que avisa de errores o patrones peligrosos en tu código y no solo eso

¿Qué es Ruff?

Ruff es un linter y formateador de código Python creado por Astral. Está escrito en Rust, y ese es precisamente el motivo por el que es tan rápido: reemplaza herramientas como Flake8, Black, isort, pydocstyle, pyupgrade y autoflake. En total soporta más de 900 reglas para revisar códigos, aunque no todas vienen activas de fábrica: corrige errores automáticamente y usa caché para no repetir trabajo de más. Proyectos como Pandas, FastAPI, Hugging Face y Apache Airflow ya lo usan en producción.

La razón por la que se volvió el estándar tan rápido no es que "sea otro linter más". Es que hace en 0.2 segundos lo que a otras herramientas les toma 20.

Cómo instalarlo con uv

Instalarlo de forma global, para usarlo en cualquier proyecto:

uv tool install ruff@latest

Agregarlo como dependencia de desarrollo de tu proyecto actual:

uv add --dev ruff

Ejecutarlo sin instalarlo, directo desde uvx:

uvx ruff check
uvx ruff format

Cómo correrlo una vez instalado
Si lo instalaste con uv tool install, ya tienes el comando ruff disponible en cualquier proyecto:

ruff check   # revisa todos los archivos del directorio actual
ruff format  # formatea todos los archivos del directorio actual

La diferencia con uvx ruff es que ese modo lo descarga y ejecuta sin instalarlo.

Las alertas de vulnerabilidades no vienen activadas: así las activas

uff trae un set de reglas dedicado a detectar vulnerabilidades de seguridad en tu código. Cosas como el uso de assert en producción, exec(), o funciones de hash inseguras como MD5 o SHA1.

El problema es que ese set no está activo por defecto. Si solo corres ruff check con la configuración estándar, esas reglas ni siquiera se evalúan. Tienes que decirle explícitamente a Ruff que las incluya.

Para activarlas en tu proyecto (la forma recomendada), agrega esto a tu pyproject.toml:

[tool.ruff.lint]
extend-select = ["S"]

Ojo con la diferencia entre extend-select y select, porque cambia el resultado por completo:

Para probarlas una sola vez desde la terminal, sin tocar el archivo de configuración:

ruff check --select S

Una vez activas, cualquier ruff check en ese proyecto te va a marcar los patrones de riesgo junto con el resto de los errores de estilo. No es un escáner de seguridad completo, para eso existen herramientas dedicadas, pero te avisa de los errores más comunes antes de que lleguen a producción.

Si programas con ayuda de IA, esto importa todavía más: el código que genera un asistente puede tener estos mismos patrones de riesgo, y tú no te enteras si nadie los está revisando. Activar el set S es una línea de configuración que cuesta cero y te cubre las espaldas.

Documentación oficial de Ruff, para quien quiera profundizar: https://docs.astral.sh/ruff/

¿Quieres saber si tu app hecha con IA es segura?
Te comparto checklists, casos reales y tutoriales de seguridad.
instagram
tik tok