public void renderDetails()

in reports/src/main/java/nl/obren/sokrates/reports/utils/ScopesRenderer.java [242:307]


    public void renderDetails(RichTextReport report, boolean renderTitle) {
        updateCountVariables();
        if (renderTitle) {
            report.addHtmlContent("<h3>" + title + "</h3>");
        }

        boolean criteriaDefined = aspect != null && aspect.getSourceFileFilters().size() > 0;
        if (criteriaDefined) {
            report.startUnorderedList();
            report.addListItem("The following criteria are used to filter files:");
            report.startUnorderedList();
            aspect.getSourceFileFilters().forEach(filter -> report.addListItem(describeFilters(filter)));
            report.endUnorderedList();
            report.endUnorderedList();
        }

        if (filesCount == 0) {
            report.startUnorderedList();
            report.addListItem("There are no \"" + title.toLowerCase() + "\" files.");
            report.endUnorderedList();
            return;
        }

        if (StringUtils.isNotBlank(description)) {
            report.startUnorderedList();
            report.addListItem(description);
            report.endUnorderedList();
        }
        report.startUnorderedList();
        if (criteriaDefined) {
            String filesFragment;
            String filesPhrase = filesCount == 1 ? "file" : "files";
            if (StringUtils.isNotBlank(filesListPath)) {
                filesFragment = "<a href='../data/text/" + filesListPath + "'><b>" + filesCount + "</b> " + filesPhrase + "</a>";
            } else {
                filesFragment = "<b>" + filesCount + "</b> " + filesPhrase;
            }
            report.addListItem(filesFragment + " match" + (filesCount == 1 ? "es" : "") + " defined criteria (" +
                    "<b>" + RichTextRenderingUtils.renderNumber(linesCount) + "</b> lines of code, "
                    + "<b>" + RichTextRenderingUtils.renderNumber(100.0 * linesCount / linesOfCodeInMain) + "%</b> vs. main code)"
                    + (fileCountPerComponent.size() == 1 ? ". All matches are in " + fileCountPerComponent.get(0).getName() + " files." : ":"));
            report.startUnorderedList();
            if (fileCountPerComponent.size() > 1) {
                for (int i = 0; i < fileCountPerComponent.size(); i++) {
                    NumericMetric fileCountMetric = fileCountPerComponent.get(i);
                    NumericMetric linesOfCodeMetric = linesOfCode.get(i);
                    report.addListItem("<b>" + RichTextRenderingUtils.renderNumber(fileCountMetric.getValue().intValue()) + "</b>"
                            + " " + fileCountMetric.getName() + " files"
                            + " (<b>" + RichTextRenderingUtils.renderNumber(linesOfCodeMetric.getValue().intValue()) + "</b> lines of code)");
                }
            }
            report.endUnorderedList();
            if (totalNumberOfRegexMatches > 0) {
                report.addListItem(totalNumberOfRegexMatches == 1
                        ? "<b>1</b> line matches the content pattern."
                        : "<b>" + RichTextRenderingUtils.renderNumber(totalNumberOfRegexMatches) + "</b> lines match the content pattern.");
            }
        } else {
            report.addListItem("<b>" + RichTextRenderingUtils.renderNumber(filesCount) + "</b> files, " +
                    "<b>" + RichTextRenderingUtils.renderNumber(linesCount) + "</b> lines of code ("
                    + "<b>" + RichTextRenderingUtils.renderNumber(100.0 * linesCount / maxLinesOfCode) + "%</b> vs. main code).");
        }

        report.endUnorderedList();

    }