This library is built using Spring Boot to detect 11 code smells in microservice applications.
These instructions will get you a copy of the project up and running.
There are a couple prerequisites to cover before running.
- Download the Jar
- Add the jar to your local mvn repository
mvn install:install-file -Dfile=<path-to-jar> -DgroupId=com.sciss -DartifactId=ws4j -Dversion=1.0.1 -Dpackaging=jar
MSANose uses Lombok for generating getters/setters. If your IDE is not configured for annotation processing then you might see the IDE reporting errors on getters/setters such as "method not found". The application should still run successfully, but you will need to follow the directions for your IDE to install the necessary plugins/annotation processor to get rid of the errors.
In this section, there are brief overviews of each endpoint.
This endpoint will run all of the other endpoints and aggregate them into a single report object. Additionally, it will time each code-smell detection and report their times.
This endpoint will find all of the unversioned APIs and report them as a list.
This endpoint will find all of the shared libraries and report them as a list.
This endpoint will detect any microservice that is cut wrongly. It will also find the number of entities in each microservice.
This endpoint will give a boolean that is true if any cycles are detected in the microservice dependency graph.
This endpoint will find any shared persistencies and report a list of the offending microservices and their shared persistency.
This endpoint will return a list of potential ESB microservices.
This endpoint will return true if an API gateway should be used (microservice count > 50).
This endpoint will return a list of inappropriately similar microservices along with their similarity scores.
This endpoint will return the standards used by the application for the presentation, business and data layers.
This endpoint will return a list of greedy microservices.
Each of the endpoints is called using a POST operation with the body as follows:
{
"pathToCompiledMicroservices": "/<path-to-microservices>/",
"organizationPath": "",
"outputPath": ""
}
* At the moment outputPath is a WIP.
This material is based upon work supported by the National Science Foundation under Grant No. 1854049 and a grant from Red Hat Research.