Regla 0x8004h: Ejecutá la lista de verificación de calidad antes de entregar
Verificacion, testing y depuracion (0x80XX)
0x8004h: Ejecutá la lista de verificación de calidad antes de entregar¶
Enunciado normativo¶
Antes de cada entrega, DEBE recorrerse de forma consciente una lista de verificación que cubra compilación, pruebas, estilo, memoria y documentación. NO DEBE entregarse un trabajo sin haber ejecutado la lista completa y corregido cada punto fallido.
¿Por qué existe esta regla?¶
El problema¶
Los últimos minutos antes de la entrega son los más apurados y los más
propensos al descuido: un printf de depuración olvidado, código comentado,
un TODO pendiente, un archivo de prueba con errores de compilación. Una
lista fija convierte la revisión final en un procedimiento, no en una
cuestión de memoria.
La lista también nivela la calidad: todos los trabajos pasan por el mismo tamiz, independientemente de la experiencia o del cansancio del autor.
Consecuencias de violarla¶
| Tipo de consecuencia | Efecto concreto |
|---|---|
| Pérdida de puntos | Defectos triviales que el propio estudiante habría visto. |
| Mala impresión | printf y código muerto en la entrega. |
| Retrabajo | Rehacer la entrega por un detalle evitable. |
| Hábito pobre | Se consolida la costumbre de entregar sin revisar. |
Fundamento en la cátedra¶
Cierra el ciclo de construcción: diseño (0x6001h: Diseñá el algoritmo antes de escribir código en C), legibilidad (0x0001h: La claridad y prolijidad son de máxima importancia), robustez (0x7002h: Validá los datos en la frontera del programa) y verificación (0x8003h: Verificá con gcc, gdb y valgrind antes de entregar). Es la regla que asegura que las demás se hayan aplicado.
Alcance y excepciones¶
Aplica a toda entrega evaluable: trabajos prácticos, ejercicios y parciales de código. Cada punto debe marcarse de forma explícita; “lo revisé mentalmente” no cuenta. La lista puede adaptarse al tema, pero nunca reducirse a “compila”.
Ejemplos exhaustivos¶
❌ Contraejemplo 1 — Entrega sin revisar¶
int main(void)
{
// printf("DEBUG n=%d\n", n);
int v[10];
// sacar esto despues
procesar(v, 10); /* v sin inicializar */
return 0;
}Por qué falla: hay código comentado (0x0202h: No dejes código comentado (dead code) en los archivos fuente), un TODO informal, un
printf de depuración y un arreglo sin inicializar
(0x7005h: Inicializá todos los campos de estructuras y arreglos). Ninguno se habría escapado con una lista.
❌ Contraejemplo 2 — Lista “de memoria”¶
El estudiante recuerda revisar la compilación, pero olvida ejecutar
valgrind, revisar el estilo con gaff y actualizar la documentación.
✅ Ejemplo conforme 1 — Lista ejecutada y marcada¶
[x] Compila con -Wall -Wextra -Werror -std=c11 sin advertencias
[x] Pasa todos los asserts de las pruebas
[x] valgrind sin errores ni fugas
[x] gaff sin observaciones
[x] Sin printf/TODO de depuracion ni codigo comentado
[x] Todas las funciones documentadas
[x] Nombres descriptivos y sin abreviaturas cripticas
[x] Casos borde probados (vacio, uno, maximo)Cada casilla corresponde a una acción ejecutable y verificable.
✅ Ejemplo conforme 2 — Lista adaptada al tema¶
Para un TAD con memoria dinámica, la lista agrega:
[x] Toda asignacion tiene su free en el orden inverso
[x] Punteros liberados puestos en NULL
[x] Contratos documentan quien libera cada recursoLa lista se especializa, no se relaja.
⚠️ Casos límite¶
Tiempo escaso: si no alcanza para todo, priorizar compilación y
valgrind; nunca entregar sin haber compilado.Trabajos individuales: la lista es responsabilidad del autor, no del docente.
Automatización: cuando exista, un
Makefilecon objetivoscheck,testystylepuede ejecutar parte de la lista automáticamente.
Cómo detectarla¶
| Herramienta | Comando | Señal |
|---|---|---|
gaff | gaff check *.c | Estilo de cátedra. |
make | make check | Objetivo que corre compilación, pruebas y valgrind. |
| Revisión manual | — | Lista marcada antes de entregar. |
Checklist de autocontrol¶
¿La entrega compila sin advertencias?
¿Pasaron todas las pruebas, incluidos los bordes?
¿
valgrindno reporta errores ni fugas?¿No hay código de depuración, comentado ni
TODO?¿Las funciones están documentadas y con nombres claros?
Reglas relacionadas¶
0x8003h: Verificá con gcc, gdb y valgrind antes de entregar — verificación con gcc, gdb y valgrind.
0x5002h: Desarrollá y compilá siempre con todas las advertencias del compilador activadas — compilación con advertencias.
0x0001h: La claridad y prolijidad son de máxima importancia — claridad y prolijidad.
0x8002h: Escribí al menos una prueba por cláusula del contrato — cobertura de las cláusulas del contrato.