-
Notifications
You must be signed in to change notification settings - Fork 2
Developer Documentation
An introduction to the tool, outlining it’s intended purpose, and the problem it aims to solve
Tool Name:
- prophet-evolution
Purpose:
- Prophet-evolution is a natural extension of the prophet tool with the purpose of preventing regressive changes to microservice architectures. This tool is currently focused on mapping microservice dependencies in Java Spring Boot projects and preventing changes to the microservice network that might degradate functionality considering these dependencies.
Problem:
- Microservices oftentimes depend on one another via programmatic calls from one service to another. More often than not changing one microservice will result in cascading effects on dependents.
Tool Concept:
Requirements and dependencies necessary for using the project or library
- Maven 3.6+
- Java 11+
Instructions for setting up the project locally
-
Clone and navigate to the project directory
git clone https://github.com/cloudhubs/prophet-evolution.git && cd prophet-evolution -
Clean target directory and build Maven project
mvn clean install -DskipTests
Instructions and examples illustrating how to utilize the project's features and functionalities
Run the JAR located in your target folder
-
Defaults to ‘./repos’ for repository locations, and ‘./results’ for output
java -jar target/semantics-1.0-SNAPSHOT-runner.jar 'https://github.com/<owner>/<repo1>.git,https://github.com/<owner>/<repo2>.git,...,https://github.com/<owner>/<repoN>.git' -
Specify a directory for repos and results
java -jar target/semantics-1.0-SNAPSHOT-runner.jar 'your-repo-dest-folder/' 'https://github.com/<owner>/<repo1>.git,https://github.com/<owner>/<repo2>.git,...,https://github.com/<owner>/<repoN>.git' 'your-results-folder/'
A high level flow of code execution within the project
-
initCache()
- Initializes msCache static class that is an object for caching data about the structure of micro-services.
-
initAndValidatePaths(args)
- Initializes and validates paths for cloneRemotes.
-
cloneRemotes(clonePath, repoUrls)
- Clones the repositories.
-
preProcess()
- Core logic for parsing Java code and creating flows.
-
persistCache()
- Saves cache to local files.
An overview of the essential libraries or modules constituting the backbone of the project
-
Description:
- The JavaParser library provides an Abstract Syntax Tree of Java code allowing for the manipulation of Java code source code in an easy programmatic way. This library allows our tool to parse Java code into discernable components or nodes which are regularly referenced throughout the code base.
-
Usage:
- N/A
-
Configuration:
-
pom.xml
<dependency> <groupId>com.github.javaparser</groupId> <artifactId>javaparser-symbol-solver-core</artifactId> <version>3.16.3</version> </dependency>
-
-
Resources
- Description:
- Quarkus is a full-stack, Kubernetes-native Java framework made for Java virtual machines (JVMs) and native compilation, optimizing Java specifically for containers and enabling it to become an effective platform for serverless, cloud, and Kubernetes environments.
- Usage:
- N/A
- Configuration:
- N/A
- Resources