override fun getRequiredTools()

in plugin-dotnet-server/src/main/kotlin/jetbrains/buildServer/dotCover/DotCoverToolUsageProvider.kt [15:52]


    override fun getRequiredTools(build: SRunningBuild): List<ToolVersion> {
        val bp = build.buildPromotion as? BuildPromotionEx ?: return emptyList()

        val buildPromotion: BuildPromotionEx = bp

        val result: MutableList<ToolVersion> = ArrayList()

        if (isUsedBundledToolWithNotDefaultParams(buildPromotion)) {
            val bundledTool = _serverToolManager.findInstalledTool(CoverageConstants.DOTCOVER_BUNDLED_TOOL_ID)
            if (bundledTool != null) {
                result.add(bundledTool)
            }
        }

        for (runnerDescriptor in buildPromotion.getBuildSettings().getAllBuildRunners().getEnabledBuildRunners()) {
            //dot cover tool is required only if dot cover is enabled
            val coverageType = runnerDescriptor.parameters.getOrDefault(CoverageConstants.PARAM_TYPE, "")
            if (coverageType.isEmpty()) continue
            if (CoverageConstants.PARAM_DOTCOVER != coverageType) continue

            val selectedTool = runnerDescriptor.parameters.getOrDefault(CoverageConstants.PARAM_DOTCOVER_HOME, "")
            if (selectedTool.isEmpty() || ToolVersionReference.isDefaultToolReference(selectedTool)) {
                val defaultTool = _defaultToolFinder.getDefaultTool(_toolType, build)
                if (defaultTool != null) {
                    result.add(defaultTool)
                }
                continue
            }

            val toolId = ToolVersionReference.resolveToolId(selectedTool) ?: continue
            val installedTool = _serverToolManager.findInstalledTool(toolId)
            if (installedTool != null) {
                result.add(installedTool)
            }
        }

        return result
    }