From e8ee2f523f2086b21b1d101a2132d683d7c37cea Mon Sep 17 00:00:00 2001
From: cwojtak
- CIMET2 allows developers to avoid degrading the architecture of their Microservice Systems BEFORE
- changes are implemented. In a world where Microservice Systems rule them all developers need a way to navigate the complex interconnections between services and understand how
- new changes impact them. Our tool disrupts the traditional development process of Microservice Systems, save time, save money and use CIMET2!
-
- To install the project, follow these steps:
- CIMET2
- Change Impact Microservice Evolution Tool v2
-Project Motivation
- Setup
-
-
-
-
-
- Installation
-
-
- git clone https://github.com/cloudhubs/cimet2.gitcd repositorymvn install
- After the installation is complete, you can run the project using either Maven or by executing the JAR file: -
mvn clean package -P run-historyjava -jar cimet2-data.jar
- {
- "systemName": "systemName",
- "repositoryURL": "http://gitRepository.git",
- "baseBranch": "master"
- }
-
-
-
-
-Install Git using your package manager. For Ubuntu: sudo apt install git, or download from here.
Install OpenJDK: sudo apt install openjdk-17-jdk, or download from here.
Install Maven: sudo apt install maven, or download from here.
To run a JAR file, use the following command:
-java -jar yourfile.jar
Install Git using Homebrew by running: brew install git. You can also download from here.
Install Java using Homebrew: brew install java. Follow Oracle’s guide for manual installation.
Install Maven using Homebrew: brew install maven, or download from here.
To run a JAR file, use the following command:
-java -jar yourfile.jar
Download Git from here. Follow the installation instructions.
- -Download and install Java from here. Set the JAVA_HOME environment variable.
Download Maven from here. Extract the files and add bin to your system's PATH.
To run a JAR file, use the following command:
-java -jar yourfile.jar
- * This package includes:
- * - {@link edu.university.ecs.lab.common.config.Config}: Represents a configuration model for managing
- * JSON configuration files, including system name, repository URL, base commit and branch, and paths
- * to microservices within the repository.
- * - {@link edu.university.ecs.lab.common.config.ConfigUtil}: Utility class for reading and validating
- * JSON configuration files, converting them into {@code Config} objects.
- */
-package edu.university.ecs.lab.common.config;
diff --git a/src/main/java/edu/university/ecs/lab/common/error/Error.java b/src/main/java/edu/university/ecs/lab/common/error/Error.java
deleted file mode 100644
index 3daa7e9c..00000000
--- a/src/main/java/edu/university/ecs/lab/common/error/Error.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package edu.university.ecs.lab.common.error;
-
-import edu.university.ecs.lab.common.services.LoggerManager;
-import lombok.Getter;
-
-import java.util.Optional;
-
-/**
- * Enum representing different error types with corresponding error codes and messages.
- */
-@Getter
-public enum Error {
- UNKNOWN_ERROR(1, "Unknown error has occured!"),
- NULL_ERROR(1, "Input cannot be null!"),
- INVALID_REPOSITORY_URL(2, "Invalid repository URL!"),
- INVALID_REPO_PATHS(3, "Invalid relative repository paths!"),
- INVALID_REPO_PATH(4, "Invalid repository relative path after update! Skipping!"),
- INVALID_CONFIG_PATH(5, "Invalid configuration file path!"),
- REPO_DONT_EXIST(6, "The specified repository does not exist!"),
- GIT_FAILED(7, "The requested git action failed for an unknown reason!"),
- INVALID_ARGS(8, "Invalid arguments!"),
- INVALID_JSON_READ(9, "Unable to read JSON from file!"),
- INVALID_JSON_WRITE(10, "Unable to write JSON to file!"),
- JPARSE_FAILED(10, "Failed to parse Java Code!"),
- INVALID_CONFIG(10, "Invalid configuration file!"),
- MISSING_CONFIG(10, "Missing configuration file!");
-
- /**
- * The unique error code identifying the error type.
- */
- private final int code;
- /**
- * The detailed message describing the error.
- */
- private final String message;
-
- /**
- * Constructor for Error enum.
- *
- * @param code The error code.
- * @param message The error message.
- */
- Error(int code, String message) {
- this.code = code;
- this.message = message;
- }
-
- /**
- * Prints the error message to standard error and exits the program with the error code.
- *
- * @param error The error enum value to report and exit with.
- */
- public static void reportAndExit(Error error, Optional
- * This package contains an enumeration representing various error types that can occur during
- * the operation of the tool. Each error type includes an error code and a descriptive message
- * to identify and communicate errors effectively.
- */
-package edu.university.ecs.lab.common.error;
diff --git a/src/main/java/edu/university/ecs/lab/common/models/enums/ClassRole.java b/src/main/java/edu/university/ecs/lab/common/models/enums/ClassRole.java
deleted file mode 100644
index 1848f469..00000000
--- a/src/main/java/edu/university/ecs/lab/common/models/enums/ClassRole.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package edu.university.ecs.lab.common.models.enums;
-
-import edu.university.ecs.lab.common.models.ir.JClass;
-import lombok.Getter;
-
-/**
- * Enum to represent the role of a class in a system
- */
-public enum ClassRole {
- CONTROLLER(JClass.class),
- SERVICE(JClass.class),
- REPOSITORY(JClass.class),
- ENTITY(JClass.class),
- REP_REST_RSC(JClass.class),
- FEIGN_CLIENT(JClass.class),
- UNKNOWN(null);
-
- /**
- * Get the associated class type for a role
- */
- @Getter
- private final Class extends JClass> classType;
-
- /**
- * Private constructor to link enum to class type
- *
- * @param classType the class type to associate with the role
- */
- ClassRole(Class extends JClass> classType) {
- this.classType = classType;
- }
-
- /**
- * Get the class role from the class type
- *
- * @param roleName the name of the class role
- * @return associated class type if it exists, else null (unknown or not found)
- */
- public static Class extends JClass> classFromRoleName(String roleName) {
- // Iterate over type names
- for (ClassRole role : ClassRole.values()) {
- if (role.name().equalsIgnoreCase(roleName)) {
- return role.classType;
- }
- }
- return null;
- }
-
-}
diff --git a/src/main/java/edu/university/ecs/lab/common/models/enums/EndpointTemplate.java b/src/main/java/edu/university/ecs/lab/common/models/enums/EndpointTemplate.java
deleted file mode 100644
index fa90fcf4..00000000
--- a/src/main/java/edu/university/ecs/lab/common/models/enums/EndpointTemplate.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package edu.university.ecs.lab.common.models.enums;
-
-import com.github.javaparser.ast.body.MethodDeclaration;
-import com.github.javaparser.ast.expr.*;
-import edu.university.ecs.lab.intermediate.utils.StringParserUtils;
-import lombok.Getter;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Factory class for generating an endpoint template from annotations
- */
-@Getter
-public class EndpointTemplate {
- public static final List
The main components include:
- * - The {@link edu.university.ecs.lab.delta.models} package, which holds the data models representing individual - * and overall changes between commits. - * - The {@link edu.university.ecs.lab.delta.models.enums} package, which defines enumerations used within the - * data models, such as {@link edu.university.ecs.lab.delta.models.enums.ChangeType}. - * - The {@link edu.university.ecs.lab.delta.services} package, which provides services for extracting and - * processing differences between commits, such as the {@link edu.university.ecs.lab.delta.services.DeltaExtractionService}. - * - *The package also includes a runner class, {@link edu.university.ecs.lab.delta.DeltaExtractionRunner}, for executing - * a test delta process.
- */ -package edu.university.ecs.lab.delta; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/package-info.java deleted file mode 100644 index e461c419..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/package-info.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Contains model classes representing various entities related to microservices and anti-pattern detection. - * These models are used to represent different aspects of microservice architecture and anti-patterns. - *- * Models: - * - {@link edu.university.ecs.lab.detection.antipatterns.models.CyclicDependency}: Represents cyclic dependencies - * detected within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.GreedyMicroservice}: Represents microservices identified - * as greedy based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.HubLikeMicroservice}: Represents microservices identified - * as hub-like based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway, - * indicating potential issues with centralized routing and access control. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.NoHealthcheck}: Represents the absence of health check - * mechanisms, which are crucial for monitoring and maintaining the health of microservices. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.ServiceChain}: Represents a chain of services within a - * microservice network graph, potentially introducing latency and complexity. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.WrongCuts}: Represents clusters of services that are - * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.WobblyServiceInteraction}: Represents service interactions - * characterized by unstable or inconsistent communication patterns within microservice classes and methods. - *
- * These models are utilized across various services and components within the anti-pattern detection framework to - * analyze and report issues related to microservices architecture. - */ -package edu.university.ecs.lab.detection.antipatterns.models; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/package-info.java b/src/main/java/edu/university/ecs/lab/detection/antipatterns/package-info.java deleted file mode 100644 index 26f393ec..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/package-info.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Provides classes and services for detecting various anti-patterns in microservices architecture. - * Includes detection of cyclic dependencies, greedy microservices, hub-like microservices, wrong cuts, - * service chains, wobbly service interactions, and absence of API gateway and health checks. - *- * Classes: - * - {@link edu.university.ecs.lab.detection.antipatterns.AntipatternDetection}: Main class for running - * anti-pattern detection routines using configuration and services. - *
- *- * Models Package: - * - {@link edu.university.ecs.lab.detection.antipatterns.models.CyclicDependency}: Represents cyclic dependencies - * detected within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.GreedyMicroservice}: Represents microservices identified - * as greedy based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.HubLikeMicroservice}: Represents microservices identified - * as hub-like based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway, - * indicating potential issues with centralized routing and access control. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.NoHealthcheck}: Represents the absence of health check - * mechanisms, which are crucial for monitoring and maintaining the health of microservices. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.ServiceChain}: Represents a chain of services within a - * microservice network graph, potentially introducing latency and complexity. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.WrongCuts}: Represents clusters of services that are - * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network. - * - {@link edu.university.ecs.lab.detection.antipatterns.models.WobblyServiceInteraction}: Represents service interactions - * characterized by unstable or inconsistent communication patterns within microservice classes and methods. - *
- *- * Services Package: - * - {@link edu.university.ecs.lab.detection.antipatterns.services.CyclicDependencyMethodLevelService}: Service for detecting - * cyclic dependencies within a method network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.CyclicDependencyMSLevelService}: Service for detecting - * cyclic dependencies within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.GreedyService}: Service for identifying and managing - * microservices identified as greedy based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.HubLikeService}: Service for identifying and managing - * microservices identified as hub-like based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.ServiceChainMethodLevelService}: Service for detecting and managing - * service chains within a method network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.ServiceChainMSLevelService}: Service for detecting and managing - * service chains within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.WrongCutsService}: Service for identifying and reporting - * clusters of services that are incorrectly interconnected within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.WobblyServiceInteractionService}: Service for detecting - * wobbly service interactions within a microservice system based on specific annotations. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.NoApiGatewayService}: Service for checking the presence of an - * API gateway configuration in a YAML file. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.NoHealthcheckService}: Service for checking the presence of - * health check configurations in a YAML file. - *
- */ -package edu.university.ecs.lab.detection.antipatterns; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/package-info.java b/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/package-info.java deleted file mode 100644 index e500b791..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/package-info.java +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Provides services for detecting and analyzing various anti-patterns in microservices architecture. - * These services encapsulate logic for identifying specific issues within microservice systems and - * generating reports or performing corrective actions. - *- * Services: - * - {@link edu.university.ecs.lab.detection.antipatterns.services.CyclicDependencyMethodLevelService}: Service for detecting - * cyclic dependencies within a method network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.CyclicDependencyMSLevelService}: Service for detecting - * cyclic dependencies within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.GreedyService}: Service for identifying and managing - * microservices identified as greedy based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.HubLikeService}: Service for identifying and managing - * microservices identified as hub-like based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.ServiceChainMethodLevelService}: Service for detecting and managing - * service chains within a method network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.ServiceChainMSLevelService}: Service for detecting and managing - * service chains within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.WrongCutsService}: Service for identifying and reporting - * clusters of services that are incorrectly interconnected within a microservice network graph. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.WobblyServiceInteractionService}: Service for detecting - * wobbly service interactions within a microservice system based on specific annotations. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.NoApiGatewayService}: Service for checking the presence of an - * API gateway configuration in a YAML file. - * - {@link edu.university.ecs.lab.detection.antipatterns.services.NoHealthcheckService}: Service for checking the presence of - * health check configurations in a YAML file. - *
- */ -package edu.university.ecs.lab.detection.antipatterns.services; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/enums/Confidence.java b/src/main/java/edu/university/ecs/lab/detection/architecture/models/enums/Confidence.java deleted file mode 100644 index 47bdf0d6..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/enums/Confidence.java +++ /dev/null @@ -1,7 +0,0 @@ -package edu.university.ecs.lab.detection.architecture.models.enums; - -public enum Confidence { - CONFIDENT, - INFERENCE, - UNKNOWN -} diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection/architecture/models/package-info.java deleted file mode 100644 index ef64bcef..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Provides classes and enums for representing architectural rules within the microservice system. - * This package is part of the {@link edu.university.ecs.lab.detection.architecture} package, which focuses on detecting architectural rules and related information in a microservice system. - * - *This package includes: - * - {@link edu.university.ecs.lab.detection.architecture.models.enums}: Contains enumerations used within the architectural models, such as confidence levels. - * - {@link edu.university.ecs.lab.detection.architecture.models.AbstractAR}: Provides a template for all architectural rules, including methods to get the name, description, weight, commit IDs, and type of the rule, and to convert the rule to a JSON object. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR1}: Represents the rule for detecting floating calls due to endpoint removal within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR3}: Represents the rule for detecting floating calls due to invalid call creation within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR4}: Represents the rule for detecting floating endpoints due to last call removal within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR6}: Represents the rule for detecting affected endpoints due to business logic updates within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR7}: Represents the rule for detecting affected endpoints due to data access logic updates within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR20}: Represents the rule for identifying hub-like services within the microservice architecture, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR21}: Represents the rule for detecting clusters of wrongly interconnected services (wrongcuts) within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR22}: Represents the rule for detecting inconsistent modifications of entities across services within the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR23}: Represents the rule for detecting the absence of API gateway configuration in the microservice system, including methods for scanning and detecting such instances. - * - {@link edu.university.ecs.lab.detection.architecture.models.AR24}: Represents the rule for detecting the absence of health check configurations in the microservice system, including methods for scanning and detecting such instances. - *
- */ -package edu.university.ecs.lab.detection.architecture.models; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/package-info.java b/src/main/java/edu/university/ecs/lab/detection/architecture/package-info.java deleted file mode 100644 index 73a55049..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Provides classes and related services for detecting architectural rules and related information in a microservice system. - * - *This package includes: - * - {@link edu.university.ecs.lab.detection.architecture.models}: Contains classes that represent each individual architectural rule and the logic for detection in the microservice system. - * - {@link edu.university.ecs.lab.detection.architecture.services}: Provides tools scanning the entire microservice system at each Delta and checking for all the architectural rules. - *
- */ - -package edu.university.ecs.lab.detection.architecture; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection/metrics/models/package-info.java deleted file mode 100644 index 58a35d66..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/package-info.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This package contains classes that represent models used for calculating various metrics related to microservices - * and service dependency graphs. - *- * This package includes: - * - {@link edu.university.ecs.lab.detection.metrics.models.ConnectedComponentsModularity}: - * Contains the implementation of the modularity metric of partitioning a graph into strongly connected components. - * - {@link edu.university.ecs.lab.detection.metrics.models.DegreeCoupling}: - * Contains the calculation of degree-related Coupling metrics. - * - {@link edu.university.ecs.lab.detection.metrics.models.IInputFile}: - * Represents an input file of different formats and creates a Service Descriptor object. - * - {@link edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor}: - * Represents a service descriptor interface defining methods for service name, version, operations, and their types. - * - {@link edu.university.ecs.lab.detection.metrics.models.IServiceDescriptorBuilder}: Provides a method to build a service descriptor from a file path. - * - {@link edu.university.ecs.lab.detection.metrics.models.Operation}: - * Represents an operation of a microservice with parameters, using types, response type, and path. - * - {@link edu.university.ecs.lab.detection.metrics.models.Parameter}: - * Represents a parameter of a method or operation. - * - {@link edu.university.ecs.lab.detection.metrics.models.ServiceDescriptor}: - * - {@link edu.university.ecs.lab.detection.metrics.models.Statements}: Enumerates various statements or types used within the metrics calculation context. - * Represents a service descriptor with service name, operations, and version. - * - {@link edu.university.ecs.lab.detection.metrics.models.StructuralCoupling}: Contains the implementation of the Structural Coupling Metric. - *
- */ -package edu.university.ecs.lab.detection.metrics.models; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/package-info.java b/src/main/java/edu/university/ecs/lab/detection/metrics/package-info.java deleted file mode 100644 index 0bb30352..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/package-info.java +++ /dev/null @@ -1,17 +0,0 @@ -/** - * This package contains classes and utilities for calculating various metrics related to microservices - * and service dependency graphs. - *- * This package include: - * - {@link edu.university.ecs.lab.detection.metrics.MetricCalculation}: Calculates structural and degree coupling metrics, - * and modularity metrics for a microservice system based on service dependency graph (SDG). - * - {@link edu.university.ecs.lab.detection.metrics.RunCohesionMetrics}: Calculates cohesion metrics for a microservice system - * based on its intermediate representation (IR). - * - {@link edu.university.ecs.lab.detection.metrics.models}: Contains models used in metric calculations. - * - {@link edu.university.ecs.lab.detection.metrics.services}: Contains services for calculating and aggregating metric results. - * - {@link edu.university.ecs.lab.detection.metrics.utils}: Contains utility classes for common operations related to metric calculations. - *
- * The main purpose of this package is to provide tools for assessing the architecture and design quality of microservice systems - * through various quantitative metrics. - */ -package edu.university.ecs.lab.detection.metrics; diff --git a/src/main/java/edu/university/ecs/lab/detection/package-info.java b/src/main/java/edu/university/ecs/lab/detection/package-info.java deleted file mode 100644 index 15606b1a..00000000 --- a/src/main/java/edu/university/ecs/lab/detection/package-info.java +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Provides classes and related services for detecting trends and information in a microservice system. - * This package includes functionality for detecting antipatterns, broken architectural rules, and related metrics. - * - *This package includes: - * - {@link edu.university.ecs.lab.detection.antipatterns}: Contains classes for detecting common antipatterns in microservice architectures. - * - {@link edu.university.ecs.lab.detection.architecture}: Provides tools for analyzing and evaluating architecture rules of microservice architecture. - * - {@link edu.university.ecs.lab.detection.metrics}: Includes classes for gathering and analyzing various metrics from microservice systems. - * - {@link edu.university.ecs.lab.detection.ExcelOutputRunner}: Contains the main class for generating Excel reports of detected trends and metrics. - * - {@link edu.university.ecs.lab.detection.DetectionService}: Contains the main class for detecting and analyzing architectural rules. - - *
- */ -package edu.university.ecs.lab.detection; diff --git a/src/main/java/edu/university/ecs/lab/detection/reporting/AbstractReporter.java b/src/main/java/edu/university/ecs/lab/detection/reporting/AbstractReporter.java new file mode 100644 index 00000000..8e5be8f6 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/reporting/AbstractReporter.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.reporting; + +public class AbstractReporter { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/reporting/Pipeline.java b/src/main/java/edu/university/ecs/lab/detection/reporting/Pipeline.java new file mode 100644 index 00000000..9b63da99 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/reporting/Pipeline.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.reporting; + +public class Pipeline { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/scanning/AbstractScanner.java b/src/main/java/edu/university/ecs/lab/detection/scanning/AbstractScanner.java new file mode 100644 index 00000000..db1b146b --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/scanning/AbstractScanner.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.scanning; + +public class AbstractScanner { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/scanning/GraphScanner.java b/src/main/java/edu/university/ecs/lab/detection/scanning/GraphScanner.java new file mode 100644 index 00000000..d8077a2d --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/scanning/GraphScanner.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.scanning; + +public class GraphScanner { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/scanning/SimpleScanner.java b/src/main/java/edu/university/ecs/lab/detection/scanning/SimpleScanner.java new file mode 100644 index 00000000..be811aeb --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/scanning/SimpleScanner.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.scanning; + +public class SimpleScanner { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/strategies/GraphStrategy.java b/src/main/java/edu/university/ecs/lab/detection/strategies/GraphStrategy.java new file mode 100644 index 00000000..226c2d35 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/strategies/GraphStrategy.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.strategies; + +public class GraphStrategy { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/strategies/ScanStrategy.java b/src/main/java/edu/university/ecs/lab/detection/strategies/ScanStrategy.java new file mode 100644 index 00000000..25ae324b --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection/strategies/ScanStrategy.java @@ -0,0 +1,4 @@ +package edu.university.ecs.lab.detection.strategies; + +public interface ScanStrategy { +} diff --git a/src/main/java/edu/university/ecs/lab/detection/ARDetectionRunner.java b/src/main/java/edu/university/ecs/lab/detection_old/ARDetectionRunner.java similarity index 100% rename from src/main/java/edu/university/ecs/lab/detection/ARDetectionRunner.java rename to src/main/java/edu/university/ecs/lab/detection_old/ARDetectionRunner.java diff --git a/src/main/java/edu/university/ecs/lab/detection/DetectionService.java b/src/main/java/edu/university/ecs/lab/detection_old/DetectionService.java similarity index 95% rename from src/main/java/edu/university/ecs/lab/detection/DetectionService.java rename to src/main/java/edu/university/ecs/lab/detection_old/DetectionService.java index 4740c99d..8f0ea939 100644 --- a/src/main/java/edu/university/ecs/lab/detection/DetectionService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/DetectionService.java @@ -1,24 +1,24 @@ -package edu.university.ecs.lab.detection; +package edu.university.ecs.lab.detection_old; import com.google.gson.JsonArray; import edu.university.ecs.lab.common.config.Config; import edu.university.ecs.lab.common.config.ConfigUtil; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.common.models.sdg.MethodDependencyGraph; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import edu.university.ecs.lab.common.services.GitService; import edu.university.ecs.lab.common.utils.FileUtils; import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; import edu.university.ecs.lab.delta.models.SystemChange; import edu.university.ecs.lab.delta.services.DeltaExtractionService; -import edu.university.ecs.lab.detection.antipatterns.models.ServiceChain; -import edu.university.ecs.lab.detection.antipatterns.services.*; -import edu.university.ecs.lab.detection.architecture.models.*; -import edu.university.ecs.lab.detection.metrics.RunCohesionMetrics; -import edu.university.ecs.lab.detection.metrics.models.ConnectedComponentsModularity; -import edu.university.ecs.lab.detection.metrics.models.DegreeCoupling; -import edu.university.ecs.lab.detection.metrics.models.StructuralCoupling; -import edu.university.ecs.lab.detection.metrics.services.MetricResultCalculation; +import edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain; +import edu.university.ecs.lab.detection_old.antipatterns.services.*; +import edu.university.ecs.lab.detection_old.architecture.models.*; +import edu.university.ecs.lab.detection_old.metrics.RunCohesionMetrics; +import edu.university.ecs.lab.detection_old.metrics.models.ConnectedComponentsModularity; +import edu.university.ecs.lab.detection_old.metrics.models.DegreeCoupling; +import edu.university.ecs.lab.detection_old.metrics.models.StructuralCoupling; +import edu.university.ecs.lab.detection_old.metrics.services.MetricResultCalculation; import edu.university.ecs.lab.intermediate.create.services.IRExtractionService; import edu.university.ecs.lab.intermediate.merge.services.MergeService; import org.apache.poi.ss.usermodel.Cell; diff --git a/src/main/java/edu/university/ecs/lab/detection/ExcelOutputRunner.java b/src/main/java/edu/university/ecs/lab/detection_old/ExcelOutputRunner.java similarity index 90% rename from src/main/java/edu/university/ecs/lab/detection/ExcelOutputRunner.java rename to src/main/java/edu/university/ecs/lab/detection_old/ExcelOutputRunner.java index 05ffc749..52adc349 100644 --- a/src/main/java/edu/university/ecs/lab/detection/ExcelOutputRunner.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/ExcelOutputRunner.java @@ -1,11 +1,10 @@ -package edu.university.ecs.lab.detection; +package edu.university.ecs.lab.detection_old; import org.eclipse.jgit.api.errors.GitAPIException; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.Optional; /** * Runner class to execute detection service diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/AntipatternDetection.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/AntipatternDetection.java similarity index 95% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/AntipatternDetection.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/AntipatternDetection.java index a890c539..28c96aeb 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/AntipatternDetection.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/AntipatternDetection.java @@ -1,14 +1,14 @@ -package edu.university.ecs.lab.detection.antipatterns; +package edu.university.ecs.lab.detection_old.antipatterns; import com.google.gson.Gson; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.common.models.sdg.MethodDependencyGraph; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import edu.university.ecs.lab.common.utils.FileUtils; import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; import edu.university.ecs.lab.intermediate.create.services.IRExtractionService; -import edu.university.ecs.lab.detection.antipatterns.models.*; -import edu.university.ecs.lab.detection.antipatterns.services.*; +import edu.university.ecs.lab.detection_old.antipatterns.models.*; +import edu.university.ecs.lab.detection_old.antipatterns.services.*; import org.eclipse.jgit.api.errors.GitAPIException; import java.io.FileWriter; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/AbstractAntiPattern.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/AbstractAntiPattern.java similarity index 91% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/AbstractAntiPattern.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/AbstractAntiPattern.java index 424740e3..23b52a75 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/AbstractAntiPattern.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/AbstractAntiPattern.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import com.google.gson.JsonObject; import edu.university.ecs.lab.common.models.serialization.JsonSerializable; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/CyclicDependency.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/CyclicDependency.java similarity index 95% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/CyclicDependency.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/CyclicDependency.java index 6c0c76c5..4b4cd9d8 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/CyclicDependency.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/CyclicDependency.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import lombok.Data; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/GreedyMicroservice.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/GreedyMicroservice.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java index 106be674..c710f6bc 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/GreedyMicroservice.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import com.google.gson.Gson; import com.google.gson.JsonObject; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/HubLikeMicroservice.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/HubLikeMicroservice.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java index 92d5b404..10a259b2 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/HubLikeMicroservice.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import com.google.gson.Gson; import com.google.gson.JsonObject; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoApiGateway.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoApiGateway.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java index 6b401240..9f8d5d14 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoApiGateway.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import com.google.gson.JsonObject; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoHealthcheck.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoHealthcheck.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java index 60956a05..f108e3c2 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/NoHealthcheck.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import java.util.Map; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/ServiceChain.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/ServiceChain.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/ServiceChain.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/ServiceChain.java index 52a07952..a0e22066 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/ServiceChain.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/ServiceChain.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import lombok.Data; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WobblyServiceInteraction.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WobblyServiceInteraction.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WobblyServiceInteraction.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WobblyServiceInteraction.java index dbdc7c15..0b844c9f 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WobblyServiceInteraction.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WobblyServiceInteraction.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WrongCuts.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WrongCuts.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WrongCuts.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WrongCuts.java index ad47a7ff..37fd12d6 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/models/WrongCuts.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/WrongCuts.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.models; +package edu.university.ecs.lab.detection_old.antipatterns.models; import lombok.Data; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/package-info.java new file mode 100644 index 00000000..32722dc7 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/package-info.java @@ -0,0 +1,26 @@ +/** + * Contains model classes representing various entities related to microservices and anti-pattern detection. + * These models are used to represent different aspects of microservice architecture and anti-patterns. + *+ * Models: + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency}: Represents cyclic dependencies + * detected within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice}: Represents microservices identified + * as greedy based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice}: Represents microservices identified + * as hub-like based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway, + * indicating potential issues with centralized routing and access control. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck}: Represents the absence of health check + * mechanisms, which are crucial for monitoring and maintaining the health of microservices. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain}: Represents a chain of services within a + * microservice network graph, potentially introducing latency and complexity. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts}: Represents clusters of services that are + * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction}: Represents service interactions + * characterized by unstable or inconsistent communication patterns within microservice classes and methods. + *
+ * These models are utilized across various services and components within the anti-pattern detection framework to + * analyze and report issues related to microservices architecture. + */ +package edu.university.ecs.lab.detection_old.antipatterns.models; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/package-info.java new file mode 100644 index 00000000..2d8dcd95 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/package-info.java @@ -0,0 +1,53 @@ +/** + * Provides classes and services for detecting various anti-patterns in microservices architecture. + * Includes detection of cyclic dependencies, greedy microservices, hub-like microservices, wrong cuts, + * service chains, wobbly service interactions, and absence of API gateway and health checks. + *+ * Classes: + * - {@link edu.university.ecs.lab.detection_old.antipatterns.AntipatternDetection}: Main class for running + * anti-pattern detection routines using configuration and services. + *
+ *+ * Models Package: + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency}: Represents cyclic dependencies + * detected within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice}: Represents microservices identified + * as greedy based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice}: Represents microservices identified + * as hub-like based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway, + * indicating potential issues with centralized routing and access control. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck}: Represents the absence of health check + * mechanisms, which are crucial for monitoring and maintaining the health of microservices. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain}: Represents a chain of services within a + * microservice network graph, potentially introducing latency and complexity. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts}: Represents clusters of services that are + * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction}: Represents service interactions + * characterized by unstable or inconsistent communication patterns within microservice classes and methods. + *
+ *+ * Services Package: + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.CyclicDependencyMethodLevelService}: Service for detecting + * cyclic dependencies within a method network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.CyclicDependencyMSLevelService}: Service for detecting + * cyclic dependencies within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.GreedyService}: Service for identifying and managing + * microservices identified as greedy based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.HubLikeService}: Service for identifying and managing + * microservices identified as hub-like based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.ServiceChainMethodLevelService}: Service for detecting and managing + * service chains within a method network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.ServiceChainMSLevelService}: Service for detecting and managing + * service chains within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.WrongCutsService}: Service for identifying and reporting + * clusters of services that are incorrectly interconnected within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.WobblyServiceInteractionService}: Service for detecting + * wobbly service interactions within a microservice system based on specific annotations. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.NoApiGatewayService}: Service for checking the presence of an + * API gateway configuration in a YAML file. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.NoHealthcheckService}: Service for checking the presence of + * health check configurations in a YAML file. + *
+ */ +package edu.university.ecs.lab.detection_old.antipatterns; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMSLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java similarity index 93% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMSLevelService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java index 19a0cbd7..58eeb1d0 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMSLevelService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.CyclicDependency; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMethodLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java similarity index 94% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMethodLevelService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java index 294fc560..366ea99c 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/CyclicDependencyMethodLevelService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Method; -import edu.university.ecs.lab.common.models.sdg.MethodDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.CyclicDependency; +import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/GreedyService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java similarity index 86% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/GreedyService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java index 7c87ec5d..ecf8b167 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/GreedyService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.GreedyMicroservice; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/HubLikeService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java similarity index 87% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/HubLikeService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java index 5ad2899f..93c44ae6 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/HubLikeService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.HubLikeMicroservice; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoApiGatewayService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java similarity index 93% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoApiGatewayService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java index fc761368..5fc5f189 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoApiGatewayService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import com.google.gson.JsonObject; @@ -6,7 +6,7 @@ import edu.university.ecs.lab.common.models.ir.ConfigFile; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.detection.antipatterns.models.NoApiGateway; +import edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway; /** * Service class to detect the presence of an API Gateway configuration in a YAML file. diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoHealthcheckService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoHealthcheckService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java index f512d6be..dc5ca617 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/NoHealthcheckService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import java.util.Map; import java.util.HashMap; @@ -9,7 +9,7 @@ import edu.university.ecs.lab.common.models.ir.ConfigFile; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.detection.antipatterns.models.NoHealthcheck; +import edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck; /** diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMSLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java similarity index 94% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMSLevelService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java index 78525fa0..67353e53 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMSLevelService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.ServiceChain; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMethodLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java similarity index 92% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMethodLevelService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java index 5531511d..b0012c9e 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/ServiceChainMethodLevelService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Method; -import edu.university.ecs.lab.common.models.sdg.MethodDependencyGraph; -import edu.university.ecs.lab.detection.antipatterns.models.ServiceChain; +import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph; +import edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WobblyServiceInteractionService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java similarity index 95% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WobblyServiceInteractionService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java index 97762cfe..d5071aab 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WobblyServiceInteractionService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java @@ -1,11 +1,11 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Annotation; import edu.university.ecs.lab.common.models.ir.JClass; import edu.university.ecs.lab.common.models.ir.Method; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.detection.antipatterns.models.WobblyServiceInteraction; +import edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WrongCutsService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java similarity index 88% rename from src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WrongCutsService.java rename to src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java index 191b2ad2..49aef6ac 100644 --- a/src/main/java/edu/university/ecs/lab/detection/antipatterns/services/WrongCutsService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.antipatterns.services; +package edu.university.ecs.lab.detection_old.antipatterns.services; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.detection.antipatterns.models.WrongCuts; +import edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/package-info.java new file mode 100644 index 00000000..4bac219a --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/package-info.java @@ -0,0 +1,29 @@ +/** + * Provides services for detecting and analyzing various anti-patterns in microservices architecture. + * These services encapsulate logic for identifying specific issues within microservice systems and + * generating reports or performing corrective actions. + *+ * Services: + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.CyclicDependencyMethodLevelService}: Service for detecting + * cyclic dependencies within a method network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.CyclicDependencyMSLevelService}: Service for detecting + * cyclic dependencies within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.GreedyService}: Service for identifying and managing + * microservices identified as greedy based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.HubLikeService}: Service for identifying and managing + * microservices identified as hub-like based on REST call thresholds. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.ServiceChainMethodLevelService}: Service for detecting and managing + * service chains within a method network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.ServiceChainMSLevelService}: Service for detecting and managing + * service chains within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.WrongCutsService}: Service for identifying and reporting + * clusters of services that are incorrectly interconnected within a microservice network graph. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.WobblyServiceInteractionService}: Service for detecting + * wobbly service interactions within a microservice system based on specific annotations. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.NoApiGatewayService}: Service for checking the presence of an + * API gateway configuration in a YAML file. + * - {@link edu.university.ecs.lab.detection_old.antipatterns.services.NoHealthcheckService}: Service for checking the presence of + * health check configurations in a YAML file. + *
+ */ +package edu.university.ecs.lab.detection_old.antipatterns.services; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR1.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java similarity index 98% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR1.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java index 46f82081..60c26f03 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR1.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR12.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR12.java similarity index 100% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR12.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR12.java diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR2.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR2.java similarity index 100% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR2.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR2.java diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR20.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR20.java similarity index 94% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR20.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR20.java index 045110a9..9f5bef0f 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR20.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR20.java @@ -1,9 +1,9 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import com.google.gson.JsonObject; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import lombok.Data; import java.util.ArrayList; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR21.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR21.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR21.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR21.java index 01e81640..1528020d 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR21.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR21.java @@ -1,9 +1,9 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import com.google.gson.JsonObject; import edu.university.ecs.lab.common.models.ir.Microservice; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import lombok.Data; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR22.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR22.java similarity index 93% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR22.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR22.java index d6c82a71..6aa45cf4 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR22.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR22.java @@ -1,11 +1,11 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import com.google.gson.JsonObject; import edu.university.ecs.lab.common.models.enums.ClassRole; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; import edu.university.ecs.lab.delta.models.Delta; import edu.university.ecs.lab.delta.models.enums.ChangeType; -import edu.university.ecs.lab.detection.architecture.models.enums.Confidence; +import edu.university.ecs.lab.detection_old.architecture.models.enums.Confidence; import lombok.Data; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR23.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR23.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR23.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR23.java index 285efc87..c1208157 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR23.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR23.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import java.util.ArrayList; import java.util.List; @@ -9,7 +9,7 @@ import edu.university.ecs.lab.common.models.ir.ConfigFile; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; import edu.university.ecs.lab.delta.models.Delta; -import edu.university.ecs.lab.detection.architecture.models.enums.Confidence; +import edu.university.ecs.lab.detection_old.architecture.models.enums.Confidence; import lombok.Data; /** diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR24.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR24.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR24.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR24.java index 326be73b..51273cc8 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR24.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR24.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import java.util.ArrayList; import java.util.List; @@ -9,7 +9,7 @@ import edu.university.ecs.lab.common.models.ir.ConfigFile; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; import edu.university.ecs.lab.delta.models.Delta; -import edu.university.ecs.lab.detection.architecture.models.enums.Confidence; +import edu.university.ecs.lab.detection_old.architecture.models.enums.Confidence; import lombok.Data; /** diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR3.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR3.java similarity index 98% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR3.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR3.java index 3ae09342..802d8388 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR3.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR3.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import edu.university.ecs.lab.common.models.ir.Endpoint; import edu.university.ecs.lab.common.models.ir.JClass; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR4.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR4.java similarity index 99% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR4.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR4.java index 778b677a..35cd9c3b 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR4.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR4.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import java.util.*; import java.util.stream.Collectors; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR6.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR6.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR6.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR6.java index 3b5aca78..33b4484a 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR6.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR6.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import com.google.gson.JsonObject; import edu.university.ecs.lab.common.models.ir.JClass; @@ -9,10 +9,8 @@ import edu.university.ecs.lab.delta.models.Delta; import edu.university.ecs.lab.delta.models.enums.ChangeType; import lombok.Data; -import org.apache.poi.ss.formula.functions.T; import java.util.*; -import java.util.stream.Collectors; /** * Architectural Rule 6 Class: Affected endpoint due to business logic update diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR7.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR7.java similarity index 98% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AR7.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR7.java index 5ab6ddee..8793b32f 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AR7.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR7.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AbstractAR.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AbstractAR.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/architecture/models/AbstractAR.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AbstractAR.java index 740f1920..3bc967c3 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/models/AbstractAR.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AbstractAR.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.architecture.models; +package edu.university.ecs.lab.detection_old.architecture.models; import com.google.gson.JsonObject; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/enums/Confidence.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/enums/Confidence.java new file mode 100644 index 00000000..66d12235 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/enums/Confidence.java @@ -0,0 +1,7 @@ +package edu.university.ecs.lab.detection_old.architecture.models.enums; + +public enum Confidence { + CONFIDENT, + INFERENCE, + UNKNOWN +} diff --git a/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/package-info.java new file mode 100644 index 00000000..6d874ef6 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/package-info.java @@ -0,0 +1,20 @@ +/** + * Provides classes and enums for representing architectural rules within the microservice system. + * This package is part of the {@link edu.university.ecs.lab.detection_old.architecture} package, which focuses on detecting architectural rules and related information in a microservice system. + * + *This package includes: + * - {@link edu.university.ecs.lab.detection_old.architecture.models.enums}: Contains enumerations used within the architectural models, such as confidence levels. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AbstractAR}: Provides a template for all architectural rules, including methods to get the name, description, weight, commit IDs, and type of the rule, and to convert the rule to a JSON object. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR1}: Represents the rule for detecting floating calls due to endpoint removal within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR3}: Represents the rule for detecting floating calls due to invalid call creation within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR4}: Represents the rule for detecting floating endpoints due to last call removal within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR6}: Represents the rule for detecting affected endpoints due to business logic updates within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR7}: Represents the rule for detecting affected endpoints due to data access logic updates within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR20}: Represents the rule for identifying hub-like services within the microservice architecture, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR21}: Represents the rule for detecting clusters of wrongly interconnected services (wrongcuts) within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR22}: Represents the rule for detecting inconsistent modifications of entities across services within the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR23}: Represents the rule for detecting the absence of API gateway configuration in the microservice system, including methods for scanning and detecting such instances. + * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR24}: Represents the rule for detecting the absence of health check configurations in the microservice system, including methods for scanning and detecting such instances. + *
+ */ +package edu.university.ecs.lab.detection_old.architecture.models; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/architecture/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/package-info.java new file mode 100644 index 00000000..f990f1f3 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/package-info.java @@ -0,0 +1,10 @@ +/** + * Provides classes and related services for detecting architectural rules and related information in a microservice system. + * + *This package includes: + * - {@link edu.university.ecs.lab.detection_old.architecture.models}: Contains classes that represent each individual architectural rule and the logic for detection in the microservice system. + * - {@link edu.university.ecs.lab.detection_old.architecture.services}: Provides tools scanning the entire microservice system at each Delta and checking for all the architectural rules. + *
+ */ + +package edu.university.ecs.lab.detection_old.architecture; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/services/ARDetectionService.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/services/ARDetectionService.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/architecture/services/ARDetectionService.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/services/ARDetectionService.java index 9b01d2ca..f6bc323b 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/services/ARDetectionService.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/services/ARDetectionService.java @@ -1,10 +1,10 @@ -package edu.university.ecs.lab.detection.architecture.services; +package edu.university.ecs.lab.detection_old.architecture.services; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; import edu.university.ecs.lab.delta.models.Delta; import edu.university.ecs.lab.delta.models.SystemChange; -import edu.university.ecs.lab.detection.architecture.models.*; +import edu.university.ecs.lab.detection_old.architecture.models.*; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/edu/university/ecs/lab/detection/architecture/services/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/services/package-info.java similarity index 81% rename from src/main/java/edu/university/ecs/lab/detection/architecture/services/package-info.java rename to src/main/java/edu/university/ecs/lab/detection_old/architecture/services/package-info.java index 89b61ca4..91c1d91c 100644 --- a/src/main/java/edu/university/ecs/lab/detection/architecture/services/package-info.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/architecture/services/package-info.java @@ -3,9 +3,9 @@ * Includes utilities for reading system changes and microservice snapshots, * and utilizes specific architectural rule classes for detection. * - *The main class in this package is {@link edu.university.ecs.lab.detection.architecture.services.ARDetectionService}, + *
The main class in this package is {@link edu.university.ecs.lab.detection_old.architecture.services.ARDetectionService}, * which orchestrates the detection process by scanning {@link edu.university.ecs.lab.delta.models.Delta} changes * and comparing {@link edu.university.ecs.lab.common.models.ir.MicroserviceSystem} instances to identify instances * of architectural rules.
*/ -package edu.university.ecs.lab.detection.architecture.services; +package edu.university.ecs.lab.detection_old.architecture.services; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/MetricCalculation.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/MetricCalculation.java similarity index 89% rename from src/main/java/edu/university/ecs/lab/detection/metrics/MetricCalculation.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/MetricCalculation.java index 519be25b..280367a5 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/MetricCalculation.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/MetricCalculation.java @@ -1,14 +1,14 @@ -package edu.university.ecs.lab.detection.metrics; +package edu.university.ecs.lab.detection_old.metrics; import edu.university.ecs.lab.common.config.Config; import edu.university.ecs.lab.common.config.ConfigUtil; import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import edu.university.ecs.lab.common.utils.FileUtils; import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; -import edu.university.ecs.lab.detection.metrics.models.ConnectedComponentsModularity; -import edu.university.ecs.lab.detection.metrics.models.DegreeCoupling; -import edu.university.ecs.lab.detection.metrics.models.StructuralCoupling; +import edu.university.ecs.lab.detection_old.metrics.models.ConnectedComponentsModularity; +import edu.university.ecs.lab.detection_old.metrics.models.DegreeCoupling; +import edu.university.ecs.lab.detection_old.metrics.models.StructuralCoupling; import edu.university.ecs.lab.intermediate.create.services.IRExtractionService; import org.eclipse.jgit.api.errors.GitAPIException; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/RunCohesionMetrics.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/RunCohesionMetrics.java similarity index 84% rename from src/main/java/edu/university/ecs/lab/detection/metrics/RunCohesionMetrics.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/RunCohesionMetrics.java index a53e6445..734e822c 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/RunCohesionMetrics.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/RunCohesionMetrics.java @@ -1,14 +1,13 @@ -package edu.university.ecs.lab.detection.metrics; +package edu.university.ecs.lab.detection_old.metrics; import edu.university.ecs.lab.common.models.ir.*; import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; -import edu.university.ecs.lab.detection.metrics.models.Operation; -import edu.university.ecs.lab.detection.metrics.models.Parameter; -import edu.university.ecs.lab.detection.metrics.models.ServiceDescriptor; -import edu.university.ecs.lab.detection.metrics.services.MetricCalculator; -import edu.university.ecs.lab.detection.metrics.services.MetricResult; -import edu.university.ecs.lab.detection.metrics.services.MetricResultCalculation; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.Operation; +import edu.university.ecs.lab.detection_old.metrics.models.ServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.services.MetricCalculator; +import edu.university.ecs.lab.detection_old.metrics.services.MetricResult; +import edu.university.ecs.lab.detection_old.metrics.services.MetricResultCalculation; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/ConnectedComponentsModularity.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ConnectedComponentsModularity.java similarity index 88% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/ConnectedComponentsModularity.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ConnectedComponentsModularity.java index 558a3bf3..1f94c679 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/ConnectedComponentsModularity.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ConnectedComponentsModularity.java @@ -1,8 +1,8 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.RestCallEdge; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.RestCallEdge; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import lombok.Getter; import org.jgrapht.alg.clustering.UndirectedModularityMeasurer; import org.jgrapht.alg.connectivity.KosarajuStrongConnectivityInspector; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/DegreeCoupling.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/DegreeCoupling.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/DegreeCoupling.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/DegreeCoupling.java index ed1e6039..81b6b3fc 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/DegreeCoupling.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/DegreeCoupling.java @@ -1,7 +1,7 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import java.util.Comparator; import java.util.HashMap; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IInputFile.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IInputFile.java similarity index 77% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/IInputFile.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IInputFile.java index 415d03bf..e876860e 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IInputFile.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IInputFile.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.io.IOException; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptor.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptor.java similarity index 83% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptor.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptor.java index 81dcb8d2..0b8dcdf5 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptor.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptor.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptorBuilder.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptorBuilder.java similarity index 72% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptorBuilder.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptorBuilder.java index 93250b35..773f3803 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/IServiceDescriptorBuilder.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/IServiceDescriptorBuilder.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.io.IOException; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Operation.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Operation.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/Operation.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Operation.java index 9d277146..9f2d4b87 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Operation.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Operation.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Parameter.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Parameter.java similarity index 94% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/Parameter.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Parameter.java index 3e87c382..cc2f7b50 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Parameter.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Parameter.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/ServiceDescriptor.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ServiceDescriptor.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/ServiceDescriptor.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ServiceDescriptor.java index 9d84f8b6..77b94d57 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/ServiceDescriptor.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/ServiceDescriptor.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Statements.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Statements.java similarity index 63% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/Statements.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Statements.java index cdda1a7d..58d7ed01 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/Statements.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/Statements.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; public enum Statements { OPERATION_NAME, OPERATION_USE_OF_TYPE, OPERATION_PARAM, BLANK, SERVICE_NAME diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/models/StructuralCoupling.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/StructuralCoupling.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/metrics/models/StructuralCoupling.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/models/StructuralCoupling.java index 82f9c67c..4976b573 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/models/StructuralCoupling.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/StructuralCoupling.java @@ -1,7 +1,7 @@ -package edu.university.ecs.lab.detection.metrics.models; +package edu.university.ecs.lab.detection_old.metrics.models; import edu.university.ecs.lab.common.models.ir.Microservice; -import edu.university.ecs.lab.common.models.sdg.ServiceDependencyGraph; +import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph; import lombok.Getter; import java.util.*; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/package-info.java new file mode 100644 index 00000000..a9610a14 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/models/package-info.java @@ -0,0 +1,25 @@ +/** + * This package contains classes that represent models used for calculating various metrics related to microservices + * and service dependency graphs. + *+ * This package includes: + * - {@link edu.university.ecs.lab.detection_old.metrics.models.ConnectedComponentsModularity}: + * Contains the implementation of the modularity metric of partitioning a graph into strongly connected components. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.DegreeCoupling}: + * Contains the calculation of degree-related Coupling metrics. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.IInputFile}: + * Represents an input file of different formats and creates a Service Descriptor object. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor}: + * Represents a service descriptor interface defining methods for service name, version, operations, and their types. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptorBuilder}: Provides a method to build a service descriptor from a file path. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.Operation}: + * Represents an operation of a microservice with parameters, using types, response type, and path. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.Parameter}: + * Represents a parameter of a method or operation. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.ServiceDescriptor}: + * - {@link edu.university.ecs.lab.detection_old.metrics.models.Statements}: Enumerates various statements or types used within the metrics calculation context. + * Represents a service descriptor with service name, operations, and version. + * - {@link edu.university.ecs.lab.detection_old.metrics.models.StructuralCoupling}: Contains the implementation of the Structural Coupling Metric. + *
+ */ +package edu.university.ecs.lab.detection_old.metrics.models; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/metrics/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/package-info.java new file mode 100644 index 00000000..b73a8886 --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/package-info.java @@ -0,0 +1,17 @@ +/** + * This package contains classes and utilities for calculating various metrics related to microservices + * and service dependency graphs. + *+ * This package include: + * - {@link edu.university.ecs.lab.detection_old.metrics.MetricCalculation}: Calculates structural and degree coupling metrics, + * and modularity metrics for a microservice system based on service dependency graph (SDG). + * - {@link edu.university.ecs.lab.detection_old.metrics.RunCohesionMetrics}: Calculates cohesion metrics for a microservice system + * based on its intermediate representation (IR). + * - {@link edu.university.ecs.lab.detection_old.metrics.models}: Contains models used in metric calculations. + * - {@link edu.university.ecs.lab.detection_old.metrics.services}: Contains services for calculating and aggregating metric results. + * - {@link edu.university.ecs.lab.detection_old.metrics.utils}: Contains utility classes for common operations related to metric calculations. + *
+ * The main purpose of this package is to provide tools for assessing the architecture and design quality of microservice systems + * through various quantitative metrics. + */ +package edu.university.ecs.lab.detection_old.metrics; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/AbstractMetric.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/AbstractMetric.java similarity index 87% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/AbstractMetric.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/AbstractMetric.java index 51d410db..39358d9d 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/AbstractMetric.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/AbstractMetric.java @@ -1,6 +1,6 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; /** * Abstract metric class template for all metrics diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/IMetric.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/IMetric.java similarity index 74% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/IMetric.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/IMetric.java index ee424ca3..30dbda8b 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/IMetric.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/IMetric.java @@ -1,9 +1,9 @@ /** * */ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; /** * @author Mateus Gabi Moreira diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/LackOfMessageLevelCohesion.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/LackOfMessageLevelCohesion.java similarity index 93% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/LackOfMessageLevelCohesion.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/LackOfMessageLevelCohesion.java index 662b4740..a067123c 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/LackOfMessageLevelCohesion.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/LackOfMessageLevelCohesion.java @@ -1,9 +1,8 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; -import edu.university.ecs.lab.detection.metrics.models.Operation; -import edu.university.ecs.lab.detection.metrics.models.Parameter; -import edu.university.ecs.lab.detection.metrics.utils.Utils; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.Operation; +import edu.university.ecs.lab.detection_old.metrics.utils.Utils; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricCalculator.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricCalculator.java similarity index 89% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricCalculator.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricCalculator.java index c6d99d6a..0314b88a 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricCalculator.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricCalculator.java @@ -1,6 +1,6 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResult.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResult.java similarity index 96% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResult.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResult.java index a9e0e68d..8ba5874e 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResult.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResult.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; /** * Result of a single metric calculation diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResultCalculation.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResultCalculation.java similarity index 97% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResultCalculation.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResultCalculation.java index aa84d315..76d98617 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/MetricResultCalculation.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/MetricResultCalculation.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/NumberOfOperations.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/NumberOfOperations.java similarity index 85% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/NumberOfOperations.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/NumberOfOperations.java index 95212972..61f01ea1 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/NumberOfOperations.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/NumberOfOperations.java @@ -1,6 +1,6 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; /** * Metric Service Class to determine the Number of Operations in a microservice diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/ServiceInterfaceDataCohesion.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/ServiceInterfaceDataCohesion.java similarity index 89% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/ServiceInterfaceDataCohesion.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/ServiceInterfaceDataCohesion.java index faa583c5..f9d6f509 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/ServiceInterfaceDataCohesion.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/ServiceInterfaceDataCohesion.java @@ -1,9 +1,8 @@ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; -import edu.university.ecs.lab.detection.metrics.models.Operation; -import edu.university.ecs.lab.detection.metrics.models.Parameter; -import edu.university.ecs.lab.detection.metrics.utils.Utils; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.Operation; +import edu.university.ecs.lab.detection_old.metrics.utils.Utils; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/StrictServiceImplementationCohesion.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/StrictServiceImplementationCohesion.java similarity index 91% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/StrictServiceImplementationCohesion.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/StrictServiceImplementationCohesion.java index 4bfea4d9..988e091b 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/StrictServiceImplementationCohesion.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/StrictServiceImplementationCohesion.java @@ -1,11 +1,11 @@ /** * */ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; -import edu.university.ecs.lab.detection.metrics.models.IServiceDescriptor; -import edu.university.ecs.lab.detection.metrics.models.Operation; -import edu.university.ecs.lab.detection.metrics.utils.Utils; +import edu.university.ecs.lab.detection_old.metrics.models.IServiceDescriptor; +import edu.university.ecs.lab.detection_old.metrics.models.Operation; +import edu.university.ecs.lab.detection_old.metrics.utils.Utils; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/services/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/package-info.java similarity index 52% rename from src/main/java/edu/university/ecs/lab/detection/metrics/services/package-info.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/services/package-info.java index 59174db7..024dcd7a 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/services/package-info.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/services/package-info.java @@ -3,24 +3,24 @@ * and service dependency graphs. ** This package includes: - * - {@link edu.university.ecs.lab.detection.metrics.services.AbstractMetric}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.AbstractMetric}: * Contains an Abstract class providing a base for implementing metrics. - * - {@link edu.university.ecs.lab.detection.metrics.services.IMetric}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.IMetric}: * Contains an interface defining methods for metric calculation. - * - {@link edu.university.ecs.lab.detection.metrics.services.LackOfMessageLevelCohesion}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.LackOfMessageLevelCohesion}: * Contains a service calculating the Lack of Message-Level Cohesion (LMC) metric between microservices operations. - * - {@link edu.university.ecs.lab.detection.metrics.services.MetricCalculator}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.MetricCalculator}: * Contains a utility class that orchestrates the evaluation of multiple metrics for a given service descriptor. - * - {@link edu.university.ecs.lab.detection.metrics.services.MetricResult}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.MetricResult}: * Represents the result of a single metric calculation. - * - {@link edu.university.ecs.lab.detection.metrics.services.MetricResultCalculation}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.MetricResultCalculation}: * Contains the aggregation and calculation overall metric results. - * - {@link edu.university.ecs.lab.detection.metrics.services.NumberOfOperations}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.NumberOfOperations}: * Contains a service calculating the total number of operations within a microservice. - * - {@link edu.university.ecs.lab.detection.metrics.services.ServiceInterfaceDataCohesion}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.ServiceInterfaceDataCohesion}: * Contains a service Interface Data Cohesion (SIDC) metric calculation service. - * - {@link edu.university.ecs.lab.detection.metrics.services.StrictServiceImplementationCohesion}: + * - {@link edu.university.ecs.lab.detection_old.metrics.services.StrictServiceImplementationCohesion}: * Contains the Strict Service Implementation Cohesion (SSIC) metric calculation service. *
*/ -package edu.university.ecs.lab.detection.metrics.services; +package edu.university.ecs.lab.detection_old.metrics.services; diff --git a/src/main/java/edu/university/ecs/lab/detection/metrics/utils/Utils.java b/src/main/java/edu/university/ecs/lab/detection_old/metrics/utils/Utils.java similarity index 88% rename from src/main/java/edu/university/ecs/lab/detection/metrics/utils/Utils.java rename to src/main/java/edu/university/ecs/lab/detection_old/metrics/utils/Utils.java index da39b07b..a13e3c7e 100644 --- a/src/main/java/edu/university/ecs/lab/detection/metrics/utils/Utils.java +++ b/src/main/java/edu/university/ecs/lab/detection_old/metrics/utils/Utils.java @@ -1,4 +1,4 @@ -package edu.university.ecs.lab.detection.metrics.utils; +package edu.university.ecs.lab.detection_old.metrics.utils; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/edu/university/ecs/lab/detection_old/package-info.java b/src/main/java/edu/university/ecs/lab/detection_old/package-info.java new file mode 100644 index 00000000..bc8fe0db --- /dev/null +++ b/src/main/java/edu/university/ecs/lab/detection_old/package-info.java @@ -0,0 +1,14 @@ +/** + * Provides classes and related services for detecting trends and information in a microservice system. + * This package includes functionality for detecting antipatterns, broken architectural rules, and related metrics. + * + *This package includes: + * - {@link edu.university.ecs.lab.detection_old.antipatterns}: Contains classes for detecting common antipatterns in microservice architectures. + * - {@link edu.university.ecs.lab.detection_old.architecture}: Provides tools for analyzing and evaluating architecture rules of microservice architecture. + * - {@link edu.university.ecs.lab.detection_old.metrics}: Includes classes for gathering and analyzing various metrics from microservice systems. + * - {@link edu.university.ecs.lab.detection_old.ExcelOutputRunner}: Contains the main class for generating Excel reports of detected trends and metrics. + * - {@link edu.university.ecs.lab.detection_old.DetectionService}: Contains the main class for detecting and analyzing architectural rules. + + *
+ */ +package edu.university.ecs.lab.detection_old; diff --git a/src/main/java/edu/university/ecs/lab/intermediate/package-info.java b/src/main/java/edu/university/ecs/lab/intermediate/package-info.java deleted file mode 100644 index 453705d4..00000000 --- a/src/main/java/edu/university/ecs/lab/intermediate/package-info.java +++ /dev/null @@ -1,13 +0,0 @@ -/** - * This package contains the classes and sub-packages responsible for the intermediate representation extraction and merging processes. - * - *The main sub-packages within this package are:
- * - {@link edu.university.ecs.lab.intermediate.create}: Includes the classes responsible for generating the intermediate representation from the source code. - * - {@link edu.university.ecs.lab.intermediate.merge}: Includes the classes responsible for merging the intermediate representation with delta changes. - * - {@link edu.university.ecs.lab.intermediate.utils}: Includes utility classes used throughout the intermediate representation processes. - * - *The intermediate extraction process involves cloning remote services, scanning through each local repository to extract REST endpoints and calls, and writing the extracted data into an intermediate representation.
- * - *The intermediate merging process involves taking an existing intermediate representation and applying changes based on delta files to generate an updated intermediate representation.
- */ -package edu.university.ecs.lab.intermediate; diff --git a/src/test/java/integration/ComparisonTest.java b/src/test/java/integration/ComparisonTest.java deleted file mode 100644 index d7fe39e3..00000000 --- a/src/test/java/integration/ComparisonTest.java +++ /dev/null @@ -1,83 +0,0 @@ -//package integration; -// -//import edu.university.ecs.lab.common.models.ir.JClass; -//import edu.university.ecs.lab.common.models.ir.Microservice; -//import edu.university.ecs.lab.common.models.ir.MicroserviceSystem; -//import edu.university.ecs.lab.common.models.ir.ProjectFile; -//import edu.university.ecs.lab.common.utils.JsonReadWriteUtils; -//import edu.university.ecs.lab.intermediate.create.services.IRExtractionService; -//import org.junit.Test; -// -// -//import java.util.*; -// -//import static integration.Constants.TEST_CONFIG_PATH; -//import static integration.Constants.TEST_IR_NAME; -//import static org.junit.Assert.assertTrue; -// -//public class ComparisonTest { -// -// -// @Test -// public void testIR() { -// MicroserviceSystem ms1 = JsonReadWriteUtils.readFromJSON("./output/NewIR.json", MicroserviceSystem.class); -// -// IRExtractionService irExtractionService = new IRExtractionService(TEST_CONFIG_PATH, Optional.empty()); -// irExtractionService.generateIR(TEST_IR_NAME); -// -// MicroserviceSystem ms2 = JsonReadWriteUtils.readFromJSON("./output/TestIR.json", MicroserviceSystem.class); -// ms1.setOrphans(null); -// ms2.setOrphans(null); -// deepCompareSystems(ms1, ms2); -// assertTrue(ms1.equals(ms2)); -// } -// -// private static void deepCompareSystems(MicroserviceSystem microserviceSystem1, MicroserviceSystem microserviceSystem2) { -// -// System.out.println("System equivalence is: " + Objects.deepEquals(microserviceSystem1, microserviceSystem2)); -// -// for (Microservice microservice1 : microserviceSystem1.getMicroservices()) { -// outer2: { -// for (Microservice microservice2 : microserviceSystem2.getMicroservices()) { -// if (microservice1.getName().equals(microservice2.getName())) { -// System.out.println("Microservice equivalence of " + microservice1.getPath() + " is: " + Objects.equals(microservice1, microservice2)); -// for (ProjectFile projectFile1 : microservice1.getAllFiles()) { -// outer1: { -// for (ProjectFile projectFile2 : microservice2.getAllFiles()) { -// if (projectFile1.getPath().equals(projectFile2.getPath())) { -// if(!Objects.equals(projectFile1, projectFile2)) { -// findDifferences(((JClass) projectFile1).getMethodCalls(), ((JClass) projectFile2).getMethodCalls()); -// System.out.println(""); -// } -// System.out.println("Class equivalence of " + projectFile1.getPath() + " is: " + Objects.equals(projectFile1, projectFile2)); -// break outer1; -// } -// } -// -// System.out.println("No JClass match found for " + projectFile1.getPath()); -// } -// } -// break outer2; -// } -// } -// -// System.out.println("No Microservice match found for " + microservice1.getPath()); -// } -// } -// -// } -// -// public static- * This package includes: - * - - * - {@link edu.university.ecs.lab.common.models.enums}: Enumerations used for categorizing different components, such as Class Roles, HTTP Methods, etc. - * - {@link edu.university.ecs.lab.common.models.serialization}: Serialization and deserialization utilities for converting Java objects to JSON and vice versa - * - Other model classes representing key elements of the microservice system: - * - {@link edu.university.ecs.lab.common.models.ir.Annotation}: Represents annotations within classes. - * - {@link edu.university.ecs.lab.common_old.models.sdg.RestCallEdge}: Represents an edge in a network graph schema - * modeling microservice connections. - * - {@link edu.university.ecs.lab.common.models.ir.Endpoint}: Represents an endpoint exposed by a microservice. - * - {@link edu.university.ecs.lab.common.models.ir.Field}: Represents fields within classes. - * - {@link edu.university.ecs.lab.common.models.ir.JClass}: Represents a Java class within a microservice. - * - {@link edu.university.ecs.lab.common.models.ir.Method}: Represents a method within classes. - * - {@link edu.university.ecs.lab.common.models.ir.MethodCall}: Represents a method call within microservices. - * - {@link edu.university.ecs.lab.common.models.ir.Microservice}: Represents a microservice within the system, - * including its components like controllers, services, etc. - * - {@link edu.university.ecs.lab.common.models.ir.MicroserviceSystem}: Represents a microservice system and all its components, - * including the name of the system, the set of microservices, etc. - * - {@link edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph}: Represents the microservice system in a Static SDG schema (nodes and edges) - * - {@link edu.university.ecs.lab.common.models.ir.RestCall}: Represents an a call to an endpoing mapping and exists at the service level - * - */ -package edu.university.ecs.lab.common_old.models; \ No newline at end of file diff --git a/src/main/java/edu/university/ecs/lab/common_old/package-info.java b/src/main/java/edu/university/ecs/lab/common_old/package-info.java deleted file mode 100644 index 7ed46644..00000000 --- a/src/main/java/edu/university/ecs/lab/common_old/package-info.java +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Provides various components for managing and configuring a microservice system. - *
- * This package includes:
- * - {@link edu.university.ecs.lab.common.config}: Classes for handling configuration files
- * and Git repository path extensions.
- * - {@link edu.university.ecs.lab.common.error}: Enumerations for handling errors within the tool.
- * - {@link edu.university.ecs.lab.common.models}: Components representing various aspects of
- * microservices, including annotations, edges, endpoints, fields, classes, methods, method calls,
- * microservices, microservice systems, network graphs, and REST calls.
- * - {@link edu.university.ecs.lab.common.utils}: Utility classes for file management, JSON handling,
- * and source code parsing.
- */
-package edu.university.ecs.lab.common_old;
diff --git a/src/main/java/edu/university/ecs/lab/detection/models/results/DetectionResult.java b/src/main/java/edu/university/ecs/lab/detection/models/results/DetectionResult.java
new file mode 100644
index 00000000..47440411
--- /dev/null
+++ b/src/main/java/edu/university/ecs/lab/detection/models/results/DetectionResult.java
@@ -0,0 +1,30 @@
+package edu.university.ecs.lab.detection.models.results;
+
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import edu.university.ecs.lab.detection.models.results.antipatterns.*;
+import edu.university.ecs.lab.detection.models.results.architecture.AbstractAR;
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+@JsonTypeInfo(
+ use = JsonTypeInfo.Id.NAME,
+ include = JsonTypeInfo.As.PROPERTY,
+ property = "type"
+)
+@JsonSubTypes({@JsonSubTypes.Type(value = AbstractAntiPattern.class, name = "AbstractAntiPattern"),
+ @JsonSubTypes.Type(value = AbstractAR.class, name = "AbstractAR"),})
+public abstract class DetectionResult {
+ protected final ObjectMapper objectMapper = new ObjectMapper();
+
+ protected String description;
+ protected String location;
+ protected Map
+ * Models:
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.CyclicDependency}: Represents cyclic dependencies
+ * detected within a microservice network graph.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.GreedyMicroservice}: Represents microservices identified
+ * as greedy based on REST call thresholds.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.HubLikeMicroservice}: Represents microservices identified
+ * as hub-like based on REST call thresholds.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.NoApiGateway}: Represents the absence of an API Gateway,
+ * indicating potential issues with centralized routing and access control.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.NoHealthcheck}: Represents the absence of health check
+ * mechanisms, which are crucial for monitoring and maintaining the health of microservices.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.ServiceChain}: Represents a chain of services within a
+ * microservice network graph, potentially introducing latency and complexity.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.WrongCuts}: Represents clusters of services that are
+ * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network.
+ * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.WobblyServiceInteraction}: Represents service interactions
+ * characterized by unstable or inconsistent communication patterns within microservice classes and methods.
+ * This package includes:
+ * - {@link edu.university.ecs.lab.detection_old.architecture.models.enums}: Contains enumerations used within the architectural models, such as confidence levels.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AbstractAR}: Provides a template for all architectural rules, including methods to get the name, description, weight, commit IDs, and type of the rule, and to convert the rule to a JSON object.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR1}: Represents the rule for detecting floating calls due to endpoint removal within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR3}: Represents the rule for detecting floating calls due to invalid call creation within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR4}: Represents the rule for detecting floating endpoints due to last call removal within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR6}: Represents the rule for detecting affected endpoints due to business logic updates within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR7}: Represents the rule for detecting affected endpoints due to data access logic updates within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR20}: Represents the rule for identifying hub-like services within the microservice architecture, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR21}: Represents the rule for detecting clusters of wrongly interconnected services (wrongcuts) within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR22}: Represents the rule for detecting inconsistent modifications of entities across services within the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR23}: Represents the rule for detecting the absence of API gateway configuration in the microservice system, including methods for scanning and detecting such instances.
+ * - {@link edu.university.ecs.lab.detection.models.results.architecture.AR24}: Represents the rule for detecting the absence of health check configurations in the microservice system, including methods for scanning and detecting such instances.
+ *
- * Models:
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency}: Represents cyclic dependencies
- * detected within a microservice network graph.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice}: Represents microservices identified
- * as greedy based on REST call thresholds.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice}: Represents microservices identified
- * as hub-like based on REST call thresholds.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway,
- * indicating potential issues with centralized routing and access control.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck}: Represents the absence of health check
- * mechanisms, which are crucial for monitoring and maintaining the health of microservices.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain}: Represents a chain of services within a
- * microservice network graph, potentially introducing latency and complexity.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts}: Represents clusters of services that are
- * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network.
- * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction}: Represents service interactions
- * characterized by unstable or inconsistent communication patterns within microservice classes and methods.
- * > cycles) {
}
@Override
+ @JsonIgnore
protected String getName() {
return NAME;
}
@Override
- protected String getDescription() {
+ @JsonIgnore
+ public String getDescription() {
return DESCRIPTION;
}
@Override
- protected JsonObject getMetaData() {
- JsonObject jsonObject = new JsonObject();
-
- Gson gson = new Gson();
-
- jsonObject.add("Cyclic Dependencies Found", gson.toJsonTree(cycles).getAsJsonArray());
-
- return jsonObject;
+ @JsonIgnore
+ protected JsonNode getMetaData() {
+ return JsonNodeFactory.instance.objectNode().set("Cyclic Dependencies Found", objectMapper.valueToTree(cycles));
}
public int numCyclicDep(){
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/GreedyMicroservice.java
similarity index 69%
rename from src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java
rename to src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/GreedyMicroservice.java
index c710f6bc..1b1865f2 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/GreedyMicroservice.java
+++ b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/GreedyMicroservice.java
@@ -1,8 +1,11 @@
-package edu.university.ecs.lab.detection_old.antipatterns.models;
+package edu.university.ecs.lab.detection.models.results.antipatterns;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.List;
@@ -10,7 +13,9 @@
/**
* Represents a collection of microservices identified as greedy.
*/
+@EqualsAndHashCode(callSuper = true)
@Data
+@JsonTypeName("GreedyMicroservice")
public class GreedyMicroservice extends AbstractAntiPattern {
/**
* Anti-pattern name
@@ -45,24 +50,21 @@ public boolean isEmpty(){
}
@Override
+ @JsonIgnore
protected String getName() {
return NAME;
}
@Override
- protected String getDescription() {
+ @JsonIgnore
+ public String getDescription() {
return DESCRIPTION;
}
@Override
- protected JsonObject getMetaData() {
- JsonObject jsonObject = new JsonObject();
-
- Gson gson = new Gson();
-
- jsonObject.add("Greedy Microservices Found", gson.toJsonTree(greedyMicroservices).getAsJsonArray());
-
- return jsonObject;
+ @JsonIgnore
+ protected JsonNode getMetaData() {
+ return JsonNodeFactory.instance.objectNode().set("Greedy Microservices Found", objectMapper.valueToTree(greedyMicroservices));
}
public int numGreedyMicro(){
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/HubLikeMicroservice.java
similarity index 68%
rename from src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java
rename to src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/HubLikeMicroservice.java
index 10a259b2..79f26195 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/HubLikeMicroservice.java
+++ b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/HubLikeMicroservice.java
@@ -1,15 +1,21 @@
-package edu.university.ecs.lab.detection_old.antipatterns.models;
+package edu.university.ecs.lab.detection.models.results.antipatterns;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.List;
/**
* Represents a collection of microservices identified as hub-like.
*/
+
+@EqualsAndHashCode(callSuper = true)
@Data
+@JsonTypeName("HubLikeMicroservice")
public class HubLikeMicroservice extends AbstractAntiPattern {
/**
* Anti-pattern name
@@ -45,24 +51,21 @@ public boolean isEmpty(){
}
@Override
+ @JsonIgnore
protected String getName() {
return NAME;
}
@Override
- protected String getDescription() {
+ @JsonIgnore
+ public String getDescription() {
return DESCRIPTION;
}
@Override
- protected JsonObject getMetaData() {
- JsonObject jsonObject = new JsonObject();
-
- Gson gson = new Gson();
-
- jsonObject.add("Hub-like Microservices Found", gson.toJsonTree(hublikeMicroservices).getAsJsonArray());
-
- return jsonObject;
+ @JsonIgnore
+ protected JsonNode getMetaData() {
+ return JsonNodeFactory.instance.objectNode().set("Hub-like Microservices Found", objectMapper.valueToTree(hublikeMicroservices));
}
public int numHubLike(){
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoApiGateway.java
similarity index 70%
rename from src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java
rename to src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoApiGateway.java
index 9f8d5d14..a7992590 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoApiGateway.java
+++ b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoApiGateway.java
@@ -1,13 +1,19 @@
-package edu.university.ecs.lab.detection_old.antipatterns.models;
+package edu.university.ecs.lab.detection.models.results.antipatterns;
-import com.google.gson.JsonObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import lombok.Data;
+import lombok.EqualsAndHashCode;
/**
* Represents the "No API-Gateway" anti-pattern
*/
+@EqualsAndHashCode(callSuper = true)
@Data
+@JsonTypeName("NoApiGateway")
public class NoApiGateway extends AbstractAntiPattern {
/**
* Anti-pattern name
@@ -43,22 +49,21 @@ public boolean getnoApiGateway(){
}
@Override
+ @JsonIgnore
protected String getName() {
return NAME;
}
@Override
- protected String getDescription() {
+ @JsonIgnore
+ public String getDescription() {
return DESCRIPTION;
}
@Override
- protected JsonObject getMetaData() {
- JsonObject jsonObject = new JsonObject();
-
- jsonObject.addProperty("No API-Gateway:", noApiGateway);
-
- return jsonObject;
+ @JsonIgnore
+ protected JsonNode getMetaData() {
+ return JsonNodeFactory.instance.objectNode().set("No API-Gateway:", objectMapper.valueToTree(noApiGateway));
}
public int getBoolApiGateway(){
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoHealthcheck.java
similarity index 71%
rename from src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java
rename to src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoHealthcheck.java
index f108e3c2..ddabe642 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/models/NoHealthcheck.java
+++ b/src/main/java/edu/university/ecs/lab/detection/models/results/antipatterns/NoHealthcheck.java
@@ -1,16 +1,21 @@
-package edu.university.ecs.lab.detection_old.antipatterns.models;
+package edu.university.ecs.lab.detection.models.results.antipatterns;
import java.util.Map;
-import com.google.gson.Gson;
-import com.google.gson.JsonObject;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import lombok.Data;
+import lombok.EqualsAndHashCode;
/**
* Represents the "No Health Check" anti-pattern
*/
+@EqualsAndHashCode(callSuper = true)
@Data
+@JsonTypeName("NoHealthcheck")
public class NoHealthcheck extends AbstractAntiPattern {
/**
* Anti-pattern name
@@ -41,28 +46,27 @@ public NoHealthcheck(Map
* Models Package: - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency}: Represents cyclic dependencies + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.CyclicDependency}: Represents cyclic dependencies * detected within a microservice network graph. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice}: Represents microservices identified + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.GreedyMicroservice}: Represents microservices identified * as greedy based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice}: Represents microservices identified + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.HubLikeMicroservice}: Represents microservices identified * as hub-like based on REST call thresholds. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway}: Represents the absence of an API Gateway, + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.NoApiGateway}: Represents the absence of an API Gateway, * indicating potential issues with centralized routing and access control. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck}: Represents the absence of health check + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.NoHealthcheck}: Represents the absence of health check * mechanisms, which are crucial for monitoring and maintaining the health of microservices. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain}: Represents a chain of services within a + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.ServiceChain}: Represents a chain of services within a * microservice network graph, potentially introducing latency and complexity. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts}: Represents clusters of services that are + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.WrongCuts}: Represents clusters of services that are * incorrectly segmented, leading to inefficiencies and increased coupling within the microservice network. - * - {@link edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction}: Represents service interactions + * - {@link edu.university.ecs.lab.detection.models.results.antipatterns.WobblyServiceInteraction}: Represents service interactions * characterized by unstable or inconsistent communication patterns within microservice classes and methods. *
*
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java
index 58eeb1d0..740f49a7 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMSLevelService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Microservice;
-import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency;
+import edu.university.ecs.lab.detection.models.sdg.ServiceDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.CyclicDependency;
import java.util.*;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java
index 366ea99c..e3f014b3 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/CyclicDependencyMethodLevelService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Method;
-import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.CyclicDependency;
+import edu.university.ecs.lab.detection.models.sdg.MethodDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.CyclicDependency;
import java.util.*;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java
index ecf8b167..75560ca1 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/GreedyService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Microservice;
-import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.GreedyMicroservice;
+import edu.university.ecs.lab.detection.models.sdg.ServiceDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.GreedyMicroservice;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java
index 93c44ae6..7fc1f984 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/HubLikeService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Microservice;
-import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.HubLikeMicroservice;
+import edu.university.ecs.lab.detection.models.sdg.ServiceDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.HubLikeMicroservice;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java
index 5fc5f189..7278aa2f 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoApiGatewayService.java
@@ -6,7 +6,7 @@
import edu.university.ecs.lab.common.models.ir.ConfigFile;
import edu.university.ecs.lab.common.models.ir.Microservice;
import edu.university.ecs.lab.common.models.ir.MicroserviceSystem;
-import edu.university.ecs.lab.detection_old.antipatterns.models.NoApiGateway;
+import edu.university.ecs.lab.detection.models.results.antipatterns.NoApiGateway;
/**
* Service class to detect the presence of an API Gateway configuration in a YAML file.
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java
index dc5ca617..6c43044b 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/NoHealthcheckService.java
@@ -9,7 +9,7 @@
import edu.university.ecs.lab.common.models.ir.ConfigFile;
import edu.university.ecs.lab.common.models.ir.Microservice;
import edu.university.ecs.lab.common.models.ir.MicroserviceSystem;
-import edu.university.ecs.lab.detection_old.antipatterns.models.NoHealthcheck;
+import edu.university.ecs.lab.detection.models.results.antipatterns.NoHealthcheck;
/**
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java
index 67353e53..3d6e3821 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMSLevelService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Microservice;
-import edu.university.ecs.lab.common_old.models.sdg.ServiceDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain;
+import edu.university.ecs.lab.detection.models.sdg.ServiceDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.ServiceChain;
import java.util.*;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java
index b0012c9e..1f9aaa81 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/ServiceChainMethodLevelService.java
@@ -1,8 +1,8 @@
package edu.university.ecs.lab.detection_old.antipatterns.services;
import edu.university.ecs.lab.common.models.ir.Method;
-import edu.university.ecs.lab.common_old.models.sdg.MethodDependencyGraph;
-import edu.university.ecs.lab.detection_old.antipatterns.models.ServiceChain;
+import edu.university.ecs.lab.detection.models.sdg.MethodDependencyGraph;
+import edu.university.ecs.lab.detection.models.results.antipatterns.ServiceChain;
import java.util.*;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java
index d5071aab..40639095 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WobblyServiceInteractionService.java
@@ -5,7 +5,7 @@
import edu.university.ecs.lab.common.models.ir.Method;
import edu.university.ecs.lab.common.models.ir.Microservice;
import edu.university.ecs.lab.common.models.ir.MicroserviceSystem;
-import edu.university.ecs.lab.detection_old.antipatterns.models.WobblyServiceInteraction;
+import edu.university.ecs.lab.detection.models.results.antipatterns.WobblyServiceInteraction;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java
index 49aef6ac..1aff85b8 100644
--- a/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java
+++ b/src/main/java/edu/university/ecs/lab/detection_old/antipatterns/services/WrongCutsService.java
@@ -2,7 +2,7 @@
import edu.university.ecs.lab.common.models.ir.Microservice;
import edu.university.ecs.lab.common.models.ir.MicroserviceSystem;
-import edu.university.ecs.lab.detection_old.antipatterns.models.WrongCuts;
+import edu.university.ecs.lab.detection.models.results.antipatterns.WrongCuts;
import java.util.*;
diff --git a/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java b/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java
deleted file mode 100644
index 60c26f03..00000000
--- a/src/main/java/edu/university/ecs/lab/detection_old/architecture/models/AR1.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package edu.university.ecs.lab.detection_old.architecture.models;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-import com.google.gson.JsonObject;
-
-import edu.university.ecs.lab.common.models.enums.ClassRole;
-import edu.university.ecs.lab.common.models.ir.*;
-import edu.university.ecs.lab.common.utils.FlowUtils;
-import edu.university.ecs.lab.delta.models.Delta;
-import edu.university.ecs.lab.delta.models.enums.ChangeType;
-import lombok.Data;
-
-/**
- * Architectural Rule 1 Class: Floating call due to endpoint removal (internal)
- */
-@Data
-public class AR1 extends AbstractAR {
-
- /**
- * Architectural rule 1 details
- */
- protected static final String TYPE = "Architectural Rule 1";
- protected static final String NAME = "Floating call due to endpoint removal (internal)";
- protected static final String DESC = "An endpoint was removed, inter service calls depending on this method are no longer called";
-
- private String oldCommitID;
- private String newCommitID;
- protected JsonObject metaData;
-
- @Override
- public String getName() {
- return NAME;
- }
-
- @Override
- public String getDescription() {
- return DESC;
- }
-
- @Override
- public double getWeight() {
- return 0;
- }
-
- @Override
- public JsonObject getMetaData() {
- return metaData;
- }
-
- @Override
- public String getType() {
- return TYPE;
- }
-
- /**
- * Scan and compare old microservice system and new microservice system to identify endpoint removals
- *
- * @param delta change between old commit and new microservice systems
- * @param oldSystem old commit of microservice system
- * @param newSystem new commit of microservice system
- * @return list of restCalls called in severed flow (if method was deleted)
- */
- public static List This package includes:
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.enums}: Contains enumerations used within the architectural models, such as confidence levels.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AbstractAR}: Provides a template for all architectural rules, including methods to get the name, description, weight, commit IDs, and type of the rule, and to convert the rule to a JSON object.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR1}: Represents the rule for detecting floating calls due to endpoint removal within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR3}: Represents the rule for detecting floating calls due to invalid call creation within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR4}: Represents the rule for detecting floating endpoints due to last call removal within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR6}: Represents the rule for detecting affected endpoints due to business logic updates within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR7}: Represents the rule for detecting affected endpoints due to data access logic updates within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR20}: Represents the rule for identifying hub-like services within the microservice architecture, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR21}: Represents the rule for detecting clusters of wrongly interconnected services (wrongcuts) within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR22}: Represents the rule for detecting inconsistent modifications of entities across services within the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR23}: Represents the rule for detecting the absence of API gateway configuration in the microservice system, including methods for scanning and detecting such instances.
- * - {@link edu.university.ecs.lab.detection_old.architecture.models.AR24}: Represents the rule for detecting the absence of health check configurations in the microservice system, including methods for scanning and detecting such instances.
- *