Defensa Tesis Licenciatura Nicolás Papagna Maldonado
septiembre 17 @ 2:30 pm - 3:30 pm
Título: Cobertura de código en lenguajes dinámicamente tipados usando meta-programación
Director: Hernán Wilkinson
Jurados: Juan Pablo Galeotti, Pablo Rubinstein
Resumen:
Cuis Smalltalk no contaba con herramientas de cobertura de código antes de este trabajo, y en el ecosistema más amplio de Smalltalk las herramientas disponibles se limitaban a Method Coverage (Squeak, VAST) y Statement Coverage (Pharo). Este trabajo desarrolla la primera herramienta de cobertura de código para Cuis Smalltalk, de uso público desde 2021. La herramienta soporta cuatro criterios. Method Coverage, necesario para distinguir métodos vacíos ejecutados; Statement Coverage; Branch Coverage (no implementado previamente en ningún dialecto de Smalltalk evaluado); y Observed Boolean Coverage (OBC), una variante computable de Boolean Coverage, caracterizada en este trabajo específicamente para lenguajes dinámicamente tipados donde la identificación estática de expresiones booleanas es indecidible.
La implementación se basa fuertemente en el uso de metaprogramación: los métodos a analizar se instrumentan mediante reescritura de su abstract syntax tree (AST), sin requerir modificaciones a la máquina virtual ni al bytecode. Como contribución adicional, el trabajo desarrolla PackageSnapshot, un módulo independiente para clonar paquetes de Cuis preservando jerarquías de clases y referencias internas, que habilita el análisis reflexivo de la cobertura del propio código de la herramienta.
La evaluación de performance sobre paquetes representativos del ecosistema Cuis muestra que el overhead absoluto se mantiene en el orden de los segundos para suites de duración razonable, compatible con el uso interactivo durante el desarrollo.
Palabras clave: cobertura de código, Smalltalk, Cuis Smalltalk, metaprogramación, lenguajes dinámicamente tipados, criterios de cobertura, Boolean Coverage, instrumentación a nivel de AST, testing de software
