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)
}