Tipus de document
Treball de fi de grauData de publicació
Llicència de publicació
Si us plau utilitzeu sempre aquest identificador per citar o enllaçar aquest document: https://hdl.handle.net/2445/227988
PyPex: Analizador estático de complejidad para código Python
Títol de la revista
Autors
Director/Tutor
ISSN de la revista
Títol del volum
Recurs relacionat
Resum
[es] Este Trabajo de Fin de Grado presenta el desarrollo de PyPex, una herramienta de análisis estático diseñada para evaluar la calidad de proyectos desarrollados en Python. PyPex implementa un conjunto de 16 métricas organizadas en cinco categorías principales: complejidad estructural, métricas específicas de Python, métricas de tamaño y documentación, acoplamiento y cohesión, y calidad de diseño.
La herramienta no se limita al análisis de complejidad, sino que proporciona una evaluación que incluye análisis de cohesión de clases (LCOM4), métricas de acoplamiento (Fan-In/Fan-Out), evaluación de la relación documentación/código, análisis específico de características Python como comprehensions y generadores, y métricas de calidad de diseño arquitectónico.
PyPex se ha desarrollado siguiendo una arquitectura modular basada en principios de ingeniería de software. Utiliza tecnologías como Astroid para el análisis sintáctico, Click para la interfaz de línea de comandos, y Rich para la presentación de resultados. El sistema soporta múltiples formatos de salida (HTML interactivo, JSON estructurado y consola rica), perfiles de umbrales configurables, y un sistema flexible de configuración.
La herramienta ha sido validada mediante una suite de 861 pruebas unitarias e integración, con más de 37,000 líneas de código entre implementación y tests, distribuidas en 59 archivos de código fuente. PyPex se ha aplicado al análisis del propio proyecto durante su desarrollo, permitiendo identificar aspectos de mejora en el código base. El análisis iterativo ha mostrado la capacidad de la herramienta para detectar patrones de complejidad, problemas de acoplamiento y oportunidades de refactoring.
[en] Code quality assessment is a fundamental aspect of modern software development. With the growth of software projects and the complexity of current systems, it becomes essential to have tools that allow objective measurement of multiple aspects of source code quality: complexity, cohesion, coupling, maintainability, and documentation.
This Bachelor’s Thesis presents the development of PyPex, an advanced static analysis tool specifically designed to evaluate the quality of projects developed in Python. PyPex implements a set of 16 metrics organized into five main categories: structural complexity, Python-specific metrics, size and documentation metrics, coupling and cohesion, and design quality.
The tool is not limited to complexity analysis alone, but provides a complete evaluation that includes class cohesion analysis (LCOM4), coupling metrics (Fan-In/Fan-Out), documentation-to-code ratio evaluation, specific analysis of Python features such as comprehensions and generators, and architectural design quality metrics. PyPex has been developed following a modular architecture based on software engineering principles. It uses modern technologies such as Astroid for syntactic analysis, Click for the command-line interface, and Rich for results presentation. The system supports multiple output formats (interactive HTML, structured JSON, and rich console), configurable threshold profiles, and a flexible configuration system.
The tool has been validated through a suite of 861 unit and integration tests, comprising over 37,000 lines of code between implementation and tests, distributed across 59 source code files. PyPex has been applied to analyze the project itself during development. This enabled the identification and correction of multiple improvement aspects in the codebase and demonstrated its practical utility as a continuous quality evaluation tool. The iterative analysis has shown the tool’s capability to detect complexity patterns, coupling issues, and refactoring opportunities, providing valuable information for decision-making in architectural improvement processes.
Descripció
Treballs Finals de Grau d'Enginyeria Informàtica, Facultat de Matemàtiques, Universitat de Barcelona, Any: 2025, Director: Nahuel Norberto Statuto Perez
Citació
Citació
PENALBA TARRIDA, Alejandro. PyPex: Analizador estático de complejidad para código Python. [consulted: 9 of September of 2026]. Available at: https://hdl.handle.net/2445/227988