fun runSeveralVerifiers()

in intellij-plugin-verifier/verifier-intellij/src/main/java/com/jetbrains/pluginverifier/PluginVerifierRun.kt [14:43]


fun runSeveralVerifiers(reportage: PluginVerificationReportage, verifiers: List<PluginVerifier>): List<PluginVerificationResult> {
  if (verifiers.isEmpty()) {
    return emptyList()
  }

  val executor = ExecutorWithProgress<PluginVerificationResult>("verifier", getConcurrencyLevel(), true) { progressData ->
    val result = progressData.result!!
    reportage.logVerificationStage(
      "Finished ${progressData.finishedNumber} of ${progressData.totalNumber} verifications (in ${String.format("%.1f", progressData.elapsedTime.toDouble() / 1000)} s): " +
        "${result.verificationTarget} against ${result.plugin}: ${result.verificationVerdict}"
    )
  }

  val tasks = verifiers.map { verifier ->
    ExecutorWithProgress.Task(verifier.verificationDescriptor.toString()) {
      val verificationResult: PluginVerificationResult
      measureTimeMillis {
        verificationResult = verifier.loadPluginAndVerify()
      }.let { verificationTime ->
        reportage.reportTelemetry(verificationResult.plugin, PluginTelemetry(PLUGIN_VERIFICATION_TIME to Duration.ofMillis(verificationTime)))
        if (verificationResult is PluginVerificationResult.Verified) {
          reportage.reportTelemetry(verificationResult.plugin, verificationResult.telemetry)
        }
        reportage.reportVerificationResult(verificationResult)
        verificationResult
      }
    }
  }
  return executor.executeTasks(tasks)
}