in reports/src/main/java/nl/obren/sokrates/reports/landscape/statichtml/LandscapeReportGenerator.java [433:478]
private void addProjectRow(ProjectAnalysisResults projectAnalysis) {
CodeAnalysisResults analysisResults = projectAnalysis.getAnalysisResults();
Metadata metadata = analysisResults.getMetadata();
String logoLink = metadata.getLogoLink();
landscapeReport.startTableRow();
landscapeReport.addTableCell(StringUtils.isNotBlank(logoLink) ? "<img src='" + logoLink + "' style='width: 20px'>" : "", "text-align: center");
landscapeReport.addTableCell(metadata.getName());
AspectAnalysisResults main = analysisResults.getMainAspectAnalysisResults();
AspectAnalysisResults test = analysisResults.getTestAspectAnalysisResults();
AspectAnalysisResults generated = analysisResults.getGeneratedAspectAnalysisResults();
AspectAnalysisResults build = analysisResults.getBuildAndDeployAspectAnalysisResults();
AspectAnalysisResults other = analysisResults.getOtherAspectAnalysisResults();
int thresholdCommits = landscapeAnalysisResults.getConfiguration().getContributorThresholdCommits();
List<Contributor> contributors = analysisResults.getContributorsAnalysisResults().getContributors()
.stream().filter(c -> c.getCommitsCount() >= thresholdCommits).collect(Collectors.toCollection(ArrayList::new));
int contributorsCount = contributors.size();
int recentContributorsCount = (int) contributors.stream().filter(c -> c.isActive(RECENT_THRESHOLD_DAYS)).count();
int rookiesCount = (int) contributors.stream().filter(c -> c.isRookie(RECENT_THRESHOLD_DAYS)).count();
List<NumericMetric> linesOfCodePerExtension = main.getLinesOfCodePerExtension();
StringBuilder locSummary = new StringBuilder();
if (linesOfCodePerExtension.size() > 0) {
locSummary.append(linesOfCodePerExtension.get(0).getName().replace("*.", "").trim().toUpperCase());
} else {
locSummary.append("-");
}
landscapeReport.addTableCell(locSummary.toString().replace("> = ", ">"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(main.getLinesOfCode(), "-"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(test.getLinesOfCode(), "-"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(generated.getLinesOfCode() + build.getLinesOfCode() + other.getLinesOfCode(), "-"), "text-align: center");
int projectAgeYears = (int) Math.round(analysisResults.getFilesHistoryAnalysisResults().getAgeInDays() / 365.0);
String age = projectAgeYears == 0 ? "<1y" : projectAgeYears + "y";
landscapeReport.addTableCell(age, "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(contributorsCount, "-"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(recentContributorsCount, "-"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(rookiesCount, "-"), "text-align: center");
landscapeReport.addTableCell(FormattingUtils.getFormattedCount(analysisResults.getContributorsAnalysisResults().getCommitsThisYear(), "-"), "text-align: center");
String projectReportUrl = landscapeAnalysisResults.getConfiguration().getProjectReportsUrlPrefix() + projectAnalysis.getSokratesProjectLink().getHtmlReportsRoot() + "/index.html";
landscapeReport.addTableCell("<a href='" + projectReportUrl + "' target='_blank'>"
+ "<div style='height: 40px'>" + ReportFileExporter.getIconSvg("report", 40) + "</div></a>", "text-align: center");
landscapeReport.endTableRow();
}