public void analyze()

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);

        });
    }