in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/core/CodeConfiguration.java [247:269]
private List<DerivedConcern> getOverlaps(List<Concern> concerns) {
List<DerivedConcern> overlaps = new ArrayList<>();
Map<String, DerivedConcern> overlapsMap = new HashMap<>();
getMain().getSourceFiles().forEach(sourceFile -> {
if (sourceFile.getConcerns().size() > 1) {
sourceFile.getConcerns().forEach(concern1 -> {
sourceFile.getConcerns().forEach(concern2 -> {
if (concern1 != concern2 && concerns.contains(concern1) && concerns.contains(concern2)) {
Concern overlapConcern = getOverlapSourceCodeAspect(concern1, concern2, overlapsMap, overlaps);
if (!overlapConcern.getSourceFiles().contains(sourceFile)) {
overlapConcern.getSourceFiles().add(sourceFile);
}
}
});
});
}
});
replacePercentageInOverlapConcerns(concerns, overlapsMap);
return overlaps;
}