override fun generateReport()

in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotnet/coverage/dotcover/DotCoverReportGenerator.kt [49:108]


    override fun generateReport(files: Collection<File>, input: DotnetCoverageGeneratorInput): DotCoverCoverageGenerationResult? {
        var currentDotCoverInfo: DotCoverInfo? = null
        val versions = HashSet<String?>()

        for (parameters in input.getParameters()) {
            val generatorRunner = _runnerFactory.getDotCoverReporter(parameters) ?: continue

            val dotCoverInfo = DotCoverInfo(parameters, generatorRunner, _fetcher)
            val hasVersion = dotCoverInfo.hasVersion()
            if (hasVersion) {
                versions.add(dotCoverInfo.versionString)
            }

            if (currentDotCoverInfo == null) {
                currentDotCoverInfo = dotCoverInfo
                continue
            }

            if (!hasVersion) {
                continue
            }

            if (VersionComparatorUtil.compare(dotCoverInfo.versionString, currentDotCoverInfo.versionString) > 0) {
                currentDotCoverInfo = dotCoverInfo
            }
        }

        if (currentDotCoverInfo == null) {
            return null
        }

        if (versions.size > 1) {
            val log: BuildProgressLogger = input.getFirstStepParameters().getBuildLogger()
            val versionsStr = StringUtil.join(", ", versions)
            log.warning("Several versions of dotCover were used (${versionsStr}). " +
                    "dotCover ${currentDotCoverInfo.versionString} was chosen to generate the coverage report.")
        }

        val params: DotnetCoverageParameters = currentDotCoverInfo.parameters
        val reporter = createReporterTool(
            params,
            currentDotCoverInfo.versionString,
            currentDotCoverInfo.myGeneratorRunner
        ) ?: return null

        val merged = merge(files, reporter)
        val xmlReport = reporter.runReportTask(merged)
        val html = File(params.getTempDirectory(), CoverageConstants.COVERAGE_HTML_REPORT_ZIP)

        val stat = _htmlReporter.generateReportHTMLandStats(params.getBuildLogger(), params.getConfigurationParameters(), params.resolvePath("."), xmlReport, html)
        val result = DotCoverCoverageGenerationResult(xmlReport, html, stat, reporter)
        val zipTool = result.zipTool

        zipTool?.let { publishSnapshot(params, merged, result, it) }

        publishDotCoverLogs(params, result)

        reporter.runDeleteTask(listOf(merged))
        return result
    }