in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/files/LogicalDecompositionAnalyzer.java [41:91]
public void analyze(ProgressFeedback progressFeedback) {
this.progressFeedback = progressFeedback;
progressFeedback.start();
progressFeedback.setDetailedText("");
boolean skipDependencies = codeAnalysisResults.getCodeConfiguration().getAnalysis().isSkipDependencies();
DependenciesAnalysis dependenciesAnalysis = new DependenciesAnalysis();
boolean shouldGetDependencies = false;
if (!skipDependencies) {
AnalysisUtils.info(textSummary, progressFeedback, "Extracting dependencies...", start);
dependenciesAnalysis = DependenciesUtils.extractDependencies(codeConfiguration.getMain(), skipDependencies);
for (LogicalDecomposition logicalDecomposition : codeConfiguration.getLogicalDecompositions()) {
if (logicalDecomposition.getDependenciesFinder().isUseBuiltInDependencyFinders()) {
shouldGetDependencies = true;
break;
}
}
}
List<Dependency> allDependencies = shouldGetDependencies ? dependenciesAnalysis.getDependencies() : new ArrayList<>();
this.codeAnalysisResults.setAllDependencies(allDependencies);
DependenciesAnalysis finalDependenciesAnalysis = dependenciesAnalysis;
codeConfiguration.getLogicalDecompositions().forEach(logicalDecomposition -> {
LogicalDecompositionAnalysisResults logicalDecompositionAnalysisResults = new LogicalDecompositionAnalysisResults(logicalDecomposition.getName());
logicalDecompositionAnalysisResults.setLogicalDecomposition(logicalDecomposition);
this.logicalDecompositionAnalysisResults.add(logicalDecompositionAnalysisResults);
logicalDecomposition.getComponents().forEach(component -> {
AspectAnalysisResults componentAnalysisResults = new AspectAnalysisResults(component.getName());
logicalDecompositionAnalysisResults.getComponents().add(componentAnalysisResults);
AnalysisUtils.analyze("DECOMPOSITION_" + logicalDecomposition.getName(), component, LogicalDecompositionAnalyzer.this.progressFeedback, componentAnalysisResults,
metricsList, textSummary, start);
});
List<ComponentDependency> componentDependencies =
logicalDecomposition.getDependenciesFinder().isUseBuiltInDependencyFinders()
? DependencyUtils.getComponentDependencies(allDependencies, logicalDecomposition.getName())
: new ArrayList<>();
DependenciesFinderExtractor finder = new DependenciesFinderExtractor(logicalDecomposition);
List<ComponentDependency> finderDependencies = finder.findComponentDependencies(codeConfiguration.getMain());
componentDependencies.addAll(finderDependencies);
allDependencies.addAll(finder.getAllDependencies());
logicalDecompositionAnalysisResults.setComponentDependencies(componentDependencies);
logicalDecompositionAnalysisResults.setAllDependencies(allDependencies);
addDependencyMetrics(allDependencies, logicalDecomposition.getName(), componentDependencies);
List<DependencyError> errors = new ArrayList<>();
finalDependenciesAnalysis.getErrors().stream().filter(error -> error.getFiltering().equals(logicalDecomposition.getName())).forEach(errors::add);
logicalDecompositionAnalysisResults.getComponentDependenciesErrors().addAll(errors);
});
}