in report-builder/src/jetbrains/coverage/report/impl/html/HTMLReportBuilderImpl.java [96:130]
private void doGenerateReport(final CoverageData data, final StatisticsCalculator covStatsCalculator) {
FileSystem fs = null;
try {
fs = createFS();
createReportDir(fs);
MapToSet<ModuleInfo, ClassInfo> moduleToClassesMap = groupByModules(data.getClasses());
final TemplateProcessorFactory fac;
final LocalGeneratorPaths paths;
final TemplateFactory templateFactory = new TemplateFactory();
if (moduleToClassesMap.keySet().size() > 1) {
paths = new ModulesLocalPaths(myReportDir);
fac = new TemplateProcessorFactory(templateFactory, myResourceBundleName, true, getFooterInfos(), fs, myReportTitle, myCharset);
new ModulesIndexGenerator(fac.createModulesIndexProcessor(), paths).generateModulesIndex(moduleToClassesMap.keySet(), covStatsCalculator);
} else {
fac = new TemplateProcessorFactory(templateFactory, myResourceBundleName, false, getFooterInfos(), fs, myReportTitle, myCharset);
paths = new NamespacesLocalPaths(myReportDir);
}
if (moduleToClassesMap.isEmpty()) {
fac.createEmptyTemplate().renderTemplate(Collections.<String, Object>emptyMap(), paths.getModulesIndexPath(SortOption.NONE));
} else {
for (ModuleInfo info : moduleToClassesMap.keySet()) {
generateReportForModule(data.getSourceData(), covStatsCalculator, fac, paths, moduleToClassesMap, info);
}
}
} catch (IOException e) {
throw new ReportGenerationFailedException("Failed to generate report", e);
} finally {
if (fs instanceof Closeable) {
IOUtil.close((Closeable) fs);
}
}
}