Skip to content

RepoGenius aims to create a distributed system that, starting from a GitHub link or certain parameters, performs an analysis on the reference repository based on elements such as code, language or files

License

Notifications You must be signed in to change notification settings

ManciSee/RepoGenius

Repository files navigation

RepoGenius

This project, developed as part of the Distributed Systems Engineering course in the Master's Degree Program in Computer Science at the University of Catania, aims to create a distributed system that, starting from a GitHub link or certain parameters, performs an analysis on the reference repository based on elements such as code, language, files, etc.

🎯 Project Objectives

  1. Automated Data Collection: Implement a system that can automatically collect data from GitHub repositories, using direct links or specific parameters, ensuring efficient and accurate extraction of information.
  2. Code Structure Evaluation: Analyze the code structure within the repositories, examining the organization of files, modularity, and the relationships between different components of the project.
  3. Code Quality Metrics: Calculate and present code quality metrics such as cyclomatic complexity, test coverage, code smells, and other indicators of good software development practices.
  4. Support for Developers: Provide tools and detailed reports that help developers better understand their code, identify areas for improvement, and adopt good development practices.

🔗 Architecture and Functioning of the RepoGenius Pipeline

The RepoGenius pipeline is composed of these microservices:
  • Flask
  • RabbitMQ

ℹ️ How to use

  1. Clone the repository
git clone https://github.com/ManciSee/RepoGenius.git
cd RepoGenius
  1. Build and run the docker container
docker compose up --build
  1. Run the RabbitMQ consumer
cd rabbitmq/rabbitmq-consumer
python3 consumer.py
  1. Open the Flask server on port 5001
  2. Insert a link of a GitHub repository and enjoy!

📀 Demo

repogenius_demo.mp4

👥 Authors

About

RepoGenius aims to create a distributed system that, starting from a GitHub link or certain parameters, performs an analysis on the reference repository based on elements such as code, language or files

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published