/anpr-github-metrics

An analytics system for github issues

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Anpr-github-metrics

A microserver and a client-side application that computes and shows metrics of Issue Trackers.

Description

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:
    1. Currently implements analysis on GitHub, but can be extended to other issue tracker (e.g. BugZilla) in moments!.
    2. 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!.

Screenshot 1

Currently Implemented Plugins

The plugin architecture allows to easily add new Issue Trackers and Metrics.

  • Currentely implemented Issue Tracker:
    • GitHub
  • Currently implemented Metric Plugins:
    1. TicketGeneral Computes the total numbers of open and closed tickets of a repository.
    2. IssuesClosedWithoutComments Retrieves all issues closed without comments.
    3. TicketClosingTime Finds the average time of a ticket resolution, providing the time resolution histogram.
    4. FirstReplyTime Computes the average time of a first comment to a new issue, providing the time histogram.
    5. IssuesCommentedBy Finds all the issues (open/closed/all) commented (or not commented) by a set of users.
    6. IssuesWithLabels Finds all the issues (open/closed/all) with (or without) a set of labels.

Prerequisites

You need to have installed on your computer: 1. Docker 2. Build-tools (maven/make)

Installing

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
  1. To run the frontend in the same host run also:
    make start-frontend

Goto http://localhost:8080 and you are on the go! ;-)

Running the tests

To run the test just call

    make test

Deployment

By default the service runs on docker on your local machine. Modify the Makefile to change the environment.

Built With

  • 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

Authors

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.

Acknowledgments

Screenshot 2