in codeanalyzer/src/main/java/nl/obren/sokrates/sourcecode/analysis/files/UnitsAnalyzer.java [53:108]
public void analyze() {
progressFeedback.start();
AnalysisUtils.info(textSummary, progressFeedback, "Extracting units...", start);
this.allUnits = new UnitsExtractor().getUnits(main.getSourceFiles(), progressFeedback);
int linesOfCode = UnitUtils.getLinesOfCode(allUnits);
addBasicUnitMetrics(allUnits, linesOfCode);
AnalysisUtils.detailedInfo(textSummary, progressFeedback, " - found " + allUnits.size() + " units (" + linesOfCode + " lines of code in units)", start);
unitsAnalysisResults.setTotalNumberOfUnits(allUnits.size());
unitsAnalysisResults.setLinesOfCodeInUnits(linesOfCode);
RiskDistributionStats unitSizeDistribution = UnitUtils.getUnitSizeDistribution(allUnits);
unitsAnalysisResults.setUnitSizeRiskDistribution(unitSizeDistribution);
printRiskDistributionStats(unitSizeDistribution, unitSizeCategoryNames, "Unit size distribution ");
AnalysisUtils.detailedInfo(textSummary, progressFeedback, "Unit size distribution per component:", start);
UnitUtils.getUnitSizeDistributionPerComponent(codeConfiguration.getLogicalDecompositions(), allUnits).forEach(group -> {
List<RiskDistributionStats> componentUnitSizeDistributionStats = new ArrayList<>();
unitsAnalysisResults.getUnitSizeRiskDistributionPerComponent().add(componentUnitSizeDistributionStats);
group.forEach(componentUnitSizeDistribution -> {
componentUnitSizeDistributionStats.add(componentUnitSizeDistribution);
printRiskDistributionStats(componentUnitSizeDistribution, unitSizeCategoryNames, "Unit Size Component " + componentUnitSizeDistribution.getKey() + ": ");
});
});
AnalysisUtils.detailedInfo(textSummary, progressFeedback, "Unit size distribution per extension:", start);
UnitUtils.getUnitSizeDistributionPerExtension(allUnits).forEach(extensionUnitSizeDistribution -> {
unitsAnalysisResults.getUnitSizeRiskDistributionPerExtension().add(extensionUnitSizeDistribution);
printRiskDistributionStats(extensionUnitSizeDistribution, unitSizeCategoryNames, "Unit Size Extension " + extensionUnitSizeDistribution.getKey() + ": ");
});
RiskDistributionStats conditionalComplexityDistribution = UnitUtils.getConditionalComplexityDistribution(allUnits);
unitsAnalysisResults.setConditionalComplexityRiskDistribution(conditionalComplexityDistribution);
printRiskDistributionStats(UnitUtils.getConditionalComplexityDistribution(allUnits), conditionalComplexityCategoryNames, "Conditional complexity distribution: ");
AnalysisUtils.detailedInfo(textSummary, progressFeedback, "Conditional complexity distribution per component:", start);
UnitUtils.getConditionalComplexityDistributionPerComponent(codeConfiguration.getLogicalDecompositions(), allUnits).forEach(group -> {
List<RiskDistributionStats> componentConditionalComplexityDistributionStats = new ArrayList<>();
unitsAnalysisResults.getConditionalComplexityRiskDistributionPerComponent().add(componentConditionalComplexityDistributionStats);
group.forEach(componentConditionalComplexityDistribution -> {
componentConditionalComplexityDistributionStats.add(componentConditionalComplexityDistribution);
printRiskDistributionStats(componentConditionalComplexityDistribution, conditionalComplexityCategoryNames, "Conditional Complexity Component " + componentConditionalComplexityDistribution.getKey() + " ");
});
});
AnalysisUtils.detailedInfo(textSummary, progressFeedback, "Conditional complexity distribution per extension:", start);
UnitUtils.getConditionalComplexityDistributionPerExtension(allUnits).forEach(extensionUnitSizeDistribution -> {
unitsAnalysisResults.getConditionalComplexityRiskDistributionPerExtension().add(extensionUnitSizeDistribution);
printRiskDistributionStats(extensionUnitSizeDistribution, conditionalComplexityCategoryNames, "Conditional Complexity Component " + extensionUnitSizeDistribution.getKey() + ": ");
});
int sampleSize = 50;
addAllUnits(allUnits, unitsAnalysisResults);
addLongestUnits(allUnits, unitsAnalysisResults, sampleSize);
addMostComplexUnits(allUnits, unitsAnalysisResults, sampleSize);
}