override fun build()

in intellij-plugin-verifier/verifier-cli/src/main/java/com/jetbrains/pluginverifier/tasks/checkPlugin/CheckPluginParamsBuilder.kt [39:102]


  override fun build(opts: CmdOpts, freeArgs: List<String>): CheckPluginParams {
    val internalApiVerificationMode = OptionsParser.parseInternalApiVerificationMode(opts)
    require(freeArgs.size > 1) {
      "You must specify plugin to check and IDE(s), example:\n" +
        "java -jar verifier.jar check-plugin ~/work/myPlugin/myPlugin.zip ~/EAPs/idea-IU-117.963\n" +
        "java -jar verifier.jar check-plugin #14986 ~/EAPs/idea-IU-117.963"
    }

    val ideDescriptors = ideDescriptorParser.parseIdeDescriptors(opts, freeArgs)
    val ideVersions = ideDescriptors.map { it.ideVersion }
    val pluginParsingConfiguration = OptionsParser.createPluginParsingConfiguration(opts)
    val pluginsSet = PluginsSet()
    // pluginsParsing will modify [pluginsSet] in-place.
    val pluginsParsing = PluginsParsing(pluginRepository, archiveManager, reportage, pluginsSet, pluginParsingConfiguration)

    val pluginToTestArg = freeArgs[0]
    when {
      pluginToTestArg.startsWith("@") -> {
        pluginsParsing.addPluginsListedInFile(
          Paths.get(pluginToTestArg.substringAfter("@")),
          ideVersions
        )
      }
      else -> {
        pluginsParsing.addPluginBySpec(pluginToTestArg, Paths.get(""), ideVersions)
      }
    }

    val externalClassesPackageFilter = OptionsParser.getExternalClassesPackageFilter(opts)
    val problemsFilters = OptionsParser.getProblemsFilters(opts)

    val verificationDescriptors = ideDescriptors.flatMap { ideDescriptor ->
      val dependencyFinder = createDependencyFinder(pluginsSet.localRepository, ideDescriptor, pluginDetailsCache)
      val classResolverProvider = DefaultClassResolverProvider(
        dependencyFinder,
        ideDescriptor,
        externalClassesPackageFilter,
        archiveManager = archiveManager
      )

      pluginsSet.pluginsToCheck.map {
        PluginVerificationDescriptor.IDE(ideDescriptor, classResolverProvider, it)
      }
    }

    val verificationTargets = ideDescriptors.map {
      PluginVerificationTarget.IDE(it.ideVersion, it.jdkVersion)
    }

    pluginsSet.ignoredPlugins.forEach { (plugin, reason) ->
      verificationTargets.forEach { verificationTarget ->
        reportage.logPluginVerificationIgnored(plugin, verificationTarget, reason)
      }
    }

    return CheckPluginParams(
      ideDescriptors,
      problemsFilters,
      verificationDescriptors,
      pluginsSet.invalidPluginFiles,
      opts.excludeExternalBuildClassesSelector,
      internalApiVerificationMode
    )
  }