diff --git a/src/main/java/de/example/main/EASmellDetector.java b/src/main/java/de/example/main/EASmellDetector.java index ef23079624191e4a50954b8d7bd78abdaf988d47..1167210c4fbb14dbe391db7cd52bb99fc15b160e 100644 --- a/src/main/java/de/example/main/EASmellDetector.java +++ b/src/main/java/de/example/main/EASmellDetector.java @@ -31,14 +31,16 @@ public class EASmellDetector { detectors.add(new StrictLayersViolation()); detectors.add(new WeakenedModularity()); - // detect each smell System.out.print("\n"); long startTotalTime = System.nanoTime(); for (Detector detector : detectors) { System.out.println("Start detection of " + detector.getSmellName() + " ..."); long startTime = System.nanoTime(); long startMemory = calculateMemoryConsumption(); + + // detect each smell printSmells(detector.detect()); + String time = calculateTimeConsumption(startTime); String memory = formatMemoryConsumption(calculateMemoryConsumption() - startMemory); System.out.println("Finished detection of " + detector.getSmellName() + " in " + time + " (" + memory + ")\n"); diff --git a/src/main/java/de/example/main/JAXBMarshalUnmarshal.java b/src/main/java/de/example/main/JAXBMarshalUnmarshal.java index 9f7f60e25f66e9d707d03ae72a45959a152f3bb5..ae1e73faa9ef42c983da6a9bab6e502da763d45f 100644 --- a/src/main/java/de/example/main/JAXBMarshalUnmarshal.java +++ b/src/main/java/de/example/main/JAXBMarshalUnmarshal.java @@ -12,6 +12,9 @@ import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import java.io.File; +/** + * Class for binding XML to Java Objects using JAXB + */ public class JAXBMarshalUnmarshal { /** @@ -54,8 +57,6 @@ public class JAXBMarshalUnmarshal { marshaller.marshal(jaxbElement, new File(xmlFile)); } - /*Schema schema = (xsdSchema == null || xsdSchema.trim().length() == 0) - ? null : schemaFactory.newSchema(new File(xsdSchema));*/ private static Schema createSchema(String xsdSchema) throws SAXException { if (xsdSchema == null || xsdSchema.trim().length() == 0) { return null; diff --git a/src/main/java/de/example/smells/AmbiguousViewpoint.java b/src/main/java/de/example/smells/AmbiguousViewpoint.java index 63c2ceb7fdbcb372d03cda084c008bcdf9c65730..6f0c8cf85e48a33113effe6f83765febe8a56e4b 100644 --- a/src/main/java/de/example/smells/AmbiguousViewpoint.java +++ b/src/main/java/de/example/smells/AmbiguousViewpoint.java @@ -13,7 +13,8 @@ public class AmbiguousViewpoint extends Detector { public List<EASmell> detect() { for (Diagram view : model.getViews()) { if (view.getViewpoint() == null) { - addToSmells(new EASmell(getSmellName(), null, " at the View \"" + view.getNameGroup().get(0).getValue() + "\" (" + view.getIdentifier() + ")")); + addToSmells(new EASmell(getSmellName(), null, " at the View \"" + view.getNameGroup().get(0).getValue() + + "\" (" + view.getIdentifier() + ")")); } } return result; diff --git a/src/main/java/de/example/smells/ChattyService.java b/src/main/java/de/example/smells/ChattyService.java index 4d3d53e5b5640d0bc35280a8c3eb416c6cbb6342..1c5e98904134f410bd6b0558b07ac471f898e56b 100644 --- a/src/main/java/de/example/smells/ChattyService.java +++ b/src/main/java/de/example/smells/ChattyService.java @@ -23,7 +23,8 @@ public class ChattyService extends Detector { if (model.isNotStructural(relationship)) { ElementType source = (ElementType) relationship.getSource(); ElementType target = (ElementType) relationship.getTarget(); - if (serviceElements.contains(source) && serviceElements.contains(target) && (serviceElement.equals(source) || serviceElement.equals(target))) { + if (serviceElements.contains(source) && serviceElements.contains(target) + && (serviceElement.equals(source) || serviceElement.equals(target))) { relationCount++; } } diff --git a/src/main/java/de/example/smells/DataService.java b/src/main/java/de/example/smells/DataService.java index e413927d05d424848244f6ec280f2f3b4231411c..1548a2113d5a5b54857d1879b1b69263fe160140 100644 --- a/src/main/java/de/example/smells/DataService.java +++ b/src/main/java/de/example/smells/DataService.java @@ -12,8 +12,8 @@ public class DataService extends Detector { } public List<EASmell> detect() { - List<ElementType> serviceElements = model.getElements().stream().filter(e -> - e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); + List<ElementType> serviceElements = model.getElements().stream().filter(e + -> e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); List<ElementType> dataElements = model.getElementsOfType(new String[]{"BusinessObject", "DataObject", "SystemSoftware"}); for (ElementType serviceElement : serviceElements) { List<ElementType> referencedElements = model.getReferencedElementsOf(serviceElement); diff --git a/src/main/java/de/example/smells/DeadComponent.java b/src/main/java/de/example/smells/DeadComponent.java index a6e1688ac8b02918a7a6b0f7d509a60cca029a97..b1113be31724731487ded554f3aa7cb19f37cf66 100644 --- a/src/main/java/de/example/smells/DeadComponent.java +++ b/src/main/java/de/example/smells/DeadComponent.java @@ -26,7 +26,8 @@ public class DeadComponent extends Detector { ElementType target = (ElementType) relationship.getTarget(); ElementType source = (ElementType) relationship.getSource(); // relationship to element outside the cluster -> so it is used - if ((cluster.contains(source) && !cluster.contains(target)) || (cluster.contains(target) && !cluster.contains(source))) { + if ((cluster.contains(source) && !cluster.contains(target)) + || (cluster.contains(target) && !cluster.contains(source))) { used = true; break; } diff --git a/src/main/java/de/example/smells/Documentation.java b/src/main/java/de/example/smells/Documentation.java index 37d128b4ef0f693a506731f7070e3320ff50f64c..68b76b8171b2588f147adc565543777beed0a49d 100644 --- a/src/main/java/de/example/smells/Documentation.java +++ b/src/main/java/de/example/smells/Documentation.java @@ -17,7 +17,8 @@ public class Documentation extends Detector { for (ElementType element : model.getElements()) { for (PreservedLangStringType documentation : element.getDocumentation()) { if (documentation.getValue().length() > MAX_DOCUMENTATION_LENGTH) { - addToSmells(new EASmell(getSmellName(), element, " with a documentation of length " + documentation.getValue().length())); + addToSmells(new EASmell(getSmellName(), element, " with a documentation of length " + + documentation.getValue().length())); break; } } diff --git a/src/main/java/de/example/smells/Duplication.java b/src/main/java/de/example/smells/Duplication.java index f7a7e9835ebf1b6887bc880bf2ea01b543f93fba..4436fa7ee7c2a5078ee59cc8d4374c25e75be633 100644 --- a/src/main/java/de/example/smells/Duplication.java +++ b/src/main/java/de/example/smells/Duplication.java @@ -28,8 +28,8 @@ public class Duplication extends Detector { } } if (((double) 2 * duplicatedWords) / (ei.size() + ej.size()) > DUPLICATED_WORDS_RATIO) { - addToSmells(new EASmell(getSmellName(), elements.get(i), " together with" + " \"" + - elements.get(j).getNameGroup().get(0).getValue() + "\" (" + elements.get(j).getIdentifier() + ")")); + addToSmells(new EASmell(getSmellName(), elements.get(i), " together with" + " \"" + + elements.get(j).getNameGroup().get(0).getValue() + "\" (" + elements.get(j).getIdentifier() + ")")); } } } diff --git a/src/main/java/de/example/smells/EASmell.java b/src/main/java/de/example/smells/EASmell.java index 4ae0588811d42053f4f0c9e4047d920ab379e607..9ff0f614732a30486c0b4cf23a6db91fa379bdc6 100644 --- a/src/main/java/de/example/smells/EASmell.java +++ b/src/main/java/de/example/smells/EASmell.java @@ -36,7 +36,7 @@ public class EASmell { } public String toString() { - return smellName + " detected" + ((element == null) ? "" : " at the " + element.getClass().getSimpleName() + " \"" + - getElementName() + "\" (" + element.getIdentifier() + ")") + (context == null ? "" : context); + return smellName + " detected" + ((element == null) ? "" : " at the " + element.getClass().getSimpleName() + " \"" + + getElementName() + "\" (" + element.getIdentifier() + ")") + (context == null ? "" : context); } } diff --git a/src/main/java/de/example/smells/HubLikeModularization.java b/src/main/java/de/example/smells/HubLikeModularization.java index 9025668b299749e49b264adb533d27ab17dbfce6..3dad2375b959734b5d3481a280fbba6b3f95ec9f 100644 --- a/src/main/java/de/example/smells/HubLikeModularization.java +++ b/src/main/java/de/example/smells/HubLikeModularization.java @@ -32,7 +32,8 @@ public class HubLikeModularization extends Detector { } } if (fanIn > LARGE_FAN_IN && fanOut > LARGE_FAN_OUT) { - addToSmells(new EASmell("Hub-like Modularization", element, " with a total of " + (fanIn + fanOut) + " relations")); + addToSmells(new EASmell("Hub-like Modularization", element, " with a total of " + + (fanIn + fanOut) + " relations")); } } return result; diff --git a/src/main/java/de/example/smells/MessageChain.java b/src/main/java/de/example/smells/MessageChain.java index 5fc5b85de68055137960e5b828692028e6b6c978..d2609136036a18e677e27001b09386f3e396cf05 100644 --- a/src/main/java/de/example/smells/MessageChain.java +++ b/src/main/java/de/example/smells/MessageChain.java @@ -16,8 +16,8 @@ public class MessageChain extends Detector { // restricted to Service Chains public List<EASmell> detect() { - List<ElementType> serviceElements = model.getElements().stream().filter(e -> - e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); + List<ElementType> serviceElements = model.getElements().stream().filter(e + -> e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); for (ElementType element : serviceElements) { List<ElementType> chain = getServiceChain(element); if (chain.size() > MAX_SERVICE_CHAIN_LENGTH) { @@ -26,7 +26,8 @@ public class MessageChain extends Detector { elementsInChain.append(e.getNameGroup().get(0).getValue()); elementsInChain.append(", "); } - addToSmells(new EASmell(getSmellName(), element, " with a chain length of " + chain.size() + " and the elements: " + elementsInChain)); + addToSmells(new EASmell(getSmellName(), element, " with a chain length of " + chain.size() + + " and the elements: " + elementsInChain)); } } return result; @@ -39,8 +40,8 @@ public class MessageChain extends Detector { } private List<ElementType> getServiceChain(ElementType start, List<ElementType> current) { - List<ElementType> referencedServiceElements = model.getReferencedElementsOf(start).stream().filter(e -> - e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); + List<ElementType> referencedServiceElements = model.getReferencedElementsOf(start).stream().filter(e + -> e.getClass().getSimpleName().contains("Service")).collect(Collectors.toList()); List<ElementType> res = new ArrayList<>(); // no further referenced services if (referencedServiceElements.isEmpty()) { diff --git a/src/main/java/de/example/smells/SharedPersistency.java b/src/main/java/de/example/smells/SharedPersistency.java index 1152eb0bd6c52e580a62d63a6283847a2070c54e..0a5b408317faa10c4ed3d527677aba0a5a5ddf3b 100644 --- a/src/main/java/de/example/smells/SharedPersistency.java +++ b/src/main/java/de/example/smells/SharedPersistency.java @@ -12,8 +12,8 @@ public class SharedPersistency extends Detector { } public List<EASmell> detect() { - List<ElementType> databaseElements = model.getElements().stream().filter(e -> e.getClass().getSimpleName().equals("SystemSoftware") && - (e.getNameGroup().get(0).getValue().contains("database") || e.getNameGroup().get(0).getValue().contains("DBMS"))).collect(Collectors.toList()); + List<ElementType> databaseElements = model.getElements().stream().filter(e -> e.getClass().getSimpleName().equals("SystemSoftware") + && (e.getNameGroup().get(0).getValue().contains("database") || e.getNameGroup().get(0).getValue().contains("DBMS"))).collect(Collectors.toList()); for (ElementType databaseElement : databaseElements) { String[] types = {"Association", "Realization", "Assignment"}; List<ElementType> referencedElements = model.getReferencedElementsOf(databaseElement, types); diff --git a/src/main/java/de/example/smells/StrictLayersViolation.java b/src/main/java/de/example/smells/StrictLayersViolation.java index e33162237835bf49163d541ca71ccbcd9561837b..132111191934b4a6ef77f13e42555740a7a48f68 100644 --- a/src/main/java/de/example/smells/StrictLayersViolation.java +++ b/src/main/java/de/example/smells/StrictLayersViolation.java @@ -20,8 +20,8 @@ public class StrictLayersViolation extends Detector { ElementType target = (ElementType) relationship.getTarget(); if ((businessElements.contains(source) && technologyElements.contains(target) || (businessElements.contains(target) && technologyElements.contains(source)))) { - addToSmells(new EASmell(getSmellName(), source, " with the " + target.getClass().getSimpleName() + " \"" + - target.getNameGroup().get(0).getValue() + "\" (" + target.getIdentifier() + ")")); + addToSmells(new EASmell(getSmellName(), source, " with the " + target.getClass().getSimpleName() + " \"" + + target.getNameGroup().get(0).getValue() + "\" (" + target.getIdentifier() + ")")); } } } diff --git a/src/main/java/de/example/smells/WeakenedModularity.java b/src/main/java/de/example/smells/WeakenedModularity.java index 8379bd1f1aafa305fb123d911ae24171e424ee4d..177ce4a155d4913ba33b153ed40c4063cfc0b8d6 100644 --- a/src/main/java/de/example/smells/WeakenedModularity.java +++ b/src/main/java/de/example/smells/WeakenedModularity.java @@ -25,8 +25,8 @@ public class WeakenedModularity extends Detector { ElementType source = (ElementType) relationship.getSource(); if (cluster.contains(source) && cluster.contains(target)) { internal++; - } else if (model.isNotStructural(relationship) && - ((cluster.contains(source) && !cluster.contains(target)) || (cluster.contains(target) && !cluster.contains(source)))) { + } else if (model.isNotStructural(relationship) + && ((cluster.contains(source) && !cluster.contains(target)) || (cluster.contains(target) && !cluster.contains(source)))) { external++; } }