public static void analyze()

in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/AnalysisUtils.java [28:79]


    public static void analyze(String group, NamedSourceCodeAspect aspect, ProgressFeedback progressFeedback, AspectAnalysisResults aspectAnalysisResults, MetricsList metricsList, StringBuffer textSummary, long start) {
        aspectAnalysisResults.setAspect(aspect);
        String prefix = StringUtils.isNotBlank(group) ? (group + FileSystems.getDefault().getSeparator()) : "";

        String name = prefix + aspect.getName();

        metricsList.addMetric()
                .id(getMetricId("NUMBER_OF_FILES_" + name))
                .value(aspect.getSourceFiles().size());

        metricsList.addMetric()
                .id(getMetricId("LINES_OF_CODE_" + name))
                .value(aspect.getLinesOfCode());

        detailedInfo(textSummary, progressFeedback, aspect.getSourceFiles().size() + " are in the " + name + "'s scope "
                + " (" + aspect.getLinesOfCode() + " lines of code)", start);

        aspectAnalysisResults.setFilesCount(aspect.getSourceFiles().size());
        aspectAnalysisResults.setLinesOfCode(aspect.getLinesOfCode());

        if (aspect instanceof Concern) {
            LOG.info("Creating searchable file chache for " + name);
            SearcheableFilesCache searcheableFilesCache = SearcheableFilesCache.getInstance(aspect.getSourceFiles());
            aspect.getSourceFileFilters().forEach(filter -> {
                SearchRequest searchRequest = new SearchRequest(
                        new SearchExpression(filter.getPathPattern()),
                        new SearchExpression(filter.getContentPattern()));
                LOG.info("Searching for path line \"" + searchRequest.getPathSearchExpression().getExpression() + "\" and/or content like \""
                        + searchRequest.getContentSearchExpression().getExpression() + "\"");
                SearchResult searchResult = searcheableFilesCache.search(searchRequest, new ProgressFeedback());
                aspectAnalysisResults.setFoundTextList(searchResult.getFoundTextList());
                aspectAnalysisResults.setFoundFiles(searchResult.getFoundFiles());
                aspectAnalysisResults.setNumberOfRegexLineMatches(aspectAnalysisResults.getNumberOfRegexLineMatches()
                        + searchResult.getTotalNumberOfMatchingLines());
            });
        }

        SourceCodeAspectUtils.getAspectsPerExtensions(aspect).forEach(aspectPerExtension -> {
            String extensionMetricName = name + "_EXT_" + aspectPerExtension.getName().replace("*.", "");
            metricsList.addMetric()
                    .id(getMetricId("NUMBER_OF_FILES_" + extensionMetricName))
                    .value(aspectPerExtension.getSourceFiles().size());

            metricsList.addMetric()
                    .id(getMetricId("LINES_OF_CODE_" + extensionMetricName))
                    .value(aspectPerExtension.getLinesOfCode());

            detailedInfo(textSummary, progressFeedback, aspectPerExtension.getName() + ": " + aspectPerExtension.getSourceFiles().size() + " files, (" + aspectPerExtension.getLinesOfCode() + " lines of code)", start);
            aspectAnalysisResults.getFileCountPerExtension().add(new NumericMetric(aspectPerExtension.getName(), aspectPerExtension.getSourceFiles().size()));
            aspectAnalysisResults.getLinesOfCodePerExtension().add(new NumericMetric(aspectPerExtension.getName(), aspectPerExtension.getLinesOfCode()));
        });
    }