fun prepareReports()

in plugin-dotnet-agent/src/main/kotlin/jetbrains/buildServer/dotnet/coverage/DotnetCoverageReportsMerger.kt [10:61]


    fun prepareReports(type: String, files: List<DotnetCoverageReportRequest>): DotnetCoverageGeneratorInput? {

        if (files.isEmpty()) return null
        val log: BuildProgressLogger = files.iterator().next().snapshot.getBuildLogger()

        val gen: DotnetCoverageReportGenerator? = _generators.getReportGenerator(type)
        if (gen == null) {
            log.warning("There is no .NET Coverage report generator for type '$type'. Skipped files: $files")
            return null
        }

        val rejected: MutableList<DotnetCoverageReportRequest> = ArrayList<DotnetCoverageReportRequest>()
        val accepted: MutableList<DotnetCoverageReportRequest> = ArrayList<DotnetCoverageReportRequest>()
        for (file: DotnetCoverageReportRequest in files) {
            if (!gen.supportCoverage(file.snapshot)) {
                rejected.add(file)
            } else {
                accepted.add(file)
            }
        }

        if (!rejected.isEmpty()) {
            log.warning("No available .NET Coverage report generator for type '$type'. Skipped files: $rejected")
        }

        val requests: List<DotnetCoverageReportRequest> = filterSameParameters(gen, accepted)
        if (requests.isEmpty()) return null

        if (requests.size > 1) {
            log.warning(
                "There are several .NET Coverage reports of type '" + type + "' with " +
                        "different parameters. Will use first parameters to generate all reports."
            )
            log.activityStarted(".NET Coverage reports of type '$type", ".NETCoverage")
            for (req: DotnetCoverageReportRequest in accepted) {
                log.message(("Report: " + req.reportFile) + ", " + gen.presentParameters(req.snapshot))
            }
            log.activityFinished(".NET Coverage reports of type '$type", ".NETCoverage")
        }

        val params: MutableList<DotnetCoverageParameters> = ArrayList()
        for (req: DotnetCoverageReportRequest in requests) {
            params.add(req.snapshot)
        }

        val pfiles: MutableList<File> = ArrayList()
        for (file: DotnetCoverageReportRequest in files) {
            pfiles.add(file.reportFile)
        }

        return DotnetCoverageGeneratorInput(gen, type, params, pfiles)
    }