Skip to content

JuanUBU/repo_analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RepoAnalyzer: Herramienta de Analisis de Codigo Python

Este proyecto es una aplicacion web basada en Flax para analizar repositorios de GitHub y extraer metricas de calidad de software.

1.Arquitectura y Patrones de Diseño

Se divide en varios modulos para garantizar el desacoplamiento:

Patron Strategy (Metricas)

Implementa una jerarquia de estrategias bajo la interfaz MetricStrategy lo que permite añadir nuevas metricas sin modificar el codigo ya existente:

  • LinesStrategy: Cuenta las lineas totales.
  • NumImportsStrategy: Identifica la cantidad de librerias externas.
  • FunctionsStrategy: Utiliza AST (Abstract Syntax Trees) para analizar la estructura interna de las funciones.
  • DuplicationStrategy: Implementa una heuristica basada en shingles (bloques de lineas) para detectar codigo repetido.
  • MaintainabilityStrategy: Calcula un indice de mantenibilidad basado en una funcion de mantenabilidad #https://es.scribd.com/document/529256325/Indice-de-Mantenibilidad aproximada

Patron Facade

La clase MetricsFacade simplifica el acceso al sistema de metricas. Da una interfaz unificada (compute_all) asi haciendo que el resto del programa no tenga que conocer en detalle cadda estrategia individual.

PatrOn Proxy

ProxySubject actUa como un intermediario entre la interfaz y la lógica. Implementa una cache utilizando una base de datos SQLite asi evitando tener que calcular el analisis si el repositoriio ya ha sido analizado antes. Tambien ofrece la opcion para que el usuario pueda forzar el recalculo.

Patron Mediator

El UIMediator coordina la comunicacion entre los componentes de la interfaz de usuario y el sistema del analisis:

  • InputComponent: Valida las URLs de GitHub comprobando si empiezan de una determinada manera.
  • OptionsComponent: Gestiona las preferencias de analisis como forzar el recalculo.
  • HistoryComponent: Recupera los analisis previos de la base de datos.
  • OutputComponent: Presenta los resultados para su visualización.

2.Requisitos Tecnicos

  • Python
  • Flask
  • SQLite
  • Git

3.Como utilizar el proyecto

  1. Instalar dependencias: pip install flask pytest
  2. Ejecutar la aplicacion: python app.py
  3. Acceder en el navegador a la URL que da: http://127.0.0.1:5000

4.Tests Unitarios

Para testear el proyecto y sus metricas, he hecho varios tests unitarios los cuales se pueden ejecutar con: python pytest Recomiendo utilizar el comando python -m pytest tests/ ya que es la que me funciona a mi. Si se quiere ver el valor de algun parametro de los tessts se tendra que ejecutar con python -m pytest -s tests/test_metrics.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors