A microserver and a client-side application that computes and shows metrics of Issue Trackers.
Anpr-github-metrics is a JS client-side application that shows metrics on Issue Trackers, using a processing microservice in the backed.
- GUI Extensibility The JS application is based on Vue and is easily extensible for adding new plots and reports to the users.
- Virtualized environment The application communicates with a backend microservice (Dockerized on-the-go), to guarantee a stable and easy-to-set environment.
- Standard communication The communication uses a standard REST interface based on Swagger (See Swagger YAML Specification), to allow the system maintanability.
- Powerful frameworks The microservice runs in a Java SE Virtual Machine (it is not required a Java EE!) and exploites the services of Spring and Spring Boot.
- Maintainability and Extensibility The microservice adopts a compile-time plugin architecture:
- Currently implements analysis on GitHub, but can be extended to other issue tracker (e.g. BugZilla) in moments!.
- New plugins for computing new metrics can be easily added at compile-time and registered to the microservice.
- Designed with performance in mind The microservice uses a high-concurrent local time-cache (by using Google Guava Cache and Striped Locks) to improve the LRU queries. The caching is completely transparent to the plugins! (See how transparent caching has been implemented)
- Testability by design The application exploits strategies and design pattern to improve testability (unit and integration) preferring Inversion Of Control, Builders, Fluent APIs, and :over all: Readable code!.
The plugin architecture allows to easily add new Issue Trackers and Metrics.
- Currentely implemented Issue Tracker:
- GitHub
- Currently implemented Metric Plugins:
- TicketGeneral Computes the total numbers of open and closed tickets of a repository.
- IssuesClosedWithoutComments Retrieves all issues closed without comments.
- TicketClosingTime Finds the average time of a ticket resolution, providing the time resolution histogram.
- FirstReplyTime Computes the average time of a first comment to a new issue, providing the time histogram.
- IssuesCommentedBy Finds all the issues (open/closed/all) commented (or not commented) by a set of users.
- IssuesWithLabels Finds all the issues (open/closed/all) with (or without) a set of labels.
You need to have installed on your computer: 1. Docker 2. Build-tools (maven/make)
Download the project, open the console and cd into the project folder. Then, follow these steps:
1. [Optional] decomment (removing #) and set your GITLAB_OAUTH_TOKEN
in the Dockerfile
2. Compile, build microservice, and start docker instance with the command:
make build start
- To run the frontend in the same host run also:
make start-frontend
Goto http://localhost:8080 and you are on the go! ;-)
To run the test just call
make test
By default the service runs on docker on your local machine. Modify the Makefile
to change the environment.
- Swagger - The world's most popular API Tooling
- Docker - Docker is the world�s leading software container platform
- Spring - Spring Framework
- Google Guava - Google Core Libraries for Java
- Maven - Dependency Management
- Vue - The Progressive JavaScript Framework
- Bootstrap 4 - Bootstrap The most popular HTML, CSS, and JS framework
Ermanno Battista (ermanno.battista@gmail.com) and Fabio Scippacercola (f.scippacercola@gmail.com) - Software Engineers and PhDs. Working in IVM Tech and starting Fervento.systems.
- This code was developed in the 28-hour of the Developers Italia Hackathon held on the 7-8th October, 2017.