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
}