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