Saltar a contenido

dorm.migrations.lint

Linter de migraciones online-safe — recorre cada lista operations de migración y emite hallazgos para patrones peligrosos en BD viva (alto tráfico).

CLI

dorm lint-migrations                            # exit != 0 si hay hallazgos
dorm lint-migrations --format json              # consumible por CI
dorm lint-migrations --rule DORM-M001           # filtrar (puede repetir)
dorm lint-migrations --exit-zero                # modo advisory

Ver la sección Seguridad de migraciones en la guía de producción para tabla completa de reglas + sintaxis de supresión.

API programática

from pathlib import Path
from dorm.migrations.lint import lint_directory

result = lint_directory(Path("myapp/migrations"))
if not result.ok:
    for f in result.findings:
        print(f.code, f.file, f.message)

Reglas

Código Trigger
DORM-M000 Archivo de migración falló al importar (parse error).
DORM-M001 AddField(null=False, default=…) — backfill de tabla completa en migrate time.
DORM-M002 AlterField — revisa si cambia el tipo (reescritura tabla en PG / MySQL) o solo toggle NOT NULL / default.
DORM-M003 AddIndex sin concurrently=True (PG) — lock ACCESS EXCLUSIVE.
DORM-M004 RunPython sin reverse_code — irreversible.

Silencia per-fichero con un comentario # noqa: DORM-M00X en cualquier sitio del archivo.