mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-265654: migrate run.configuration.exec to StructuredIdeActivity
GitOrigin-RevId: 63855094d1af8e677e21129fee9675d01a270276
This commit is contained in:
committed by
intellij-monorepo-bot
parent
439613bc10
commit
b6baad842a
@@ -14,6 +14,7 @@ import com.intellij.execution.filters.TextConsoleBuilderFactory
|
||||
import com.intellij.execution.impl.ExecutionManagerImpl.Companion.DELEGATED_RUN_PROFILE_KEY
|
||||
import com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector
|
||||
import com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector.RunConfigurationFinishType
|
||||
import com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector.UI_SHOWN_STAGE
|
||||
import com.intellij.execution.process.*
|
||||
import com.intellij.execution.runners.ExecutionEnvironment
|
||||
import com.intellij.execution.runners.ExecutionEnvironmentBuilder
|
||||
@@ -25,7 +26,7 @@ import com.intellij.execution.ui.ConsoleView
|
||||
import com.intellij.execution.ui.RunContentDescriptor
|
||||
import com.intellij.execution.ui.RunContentManager
|
||||
import com.intellij.ide.SaveAndSyncHandler
|
||||
import com.intellij.internal.statistic.IdeActivity
|
||||
import com.intellij.internal.statistic.StructuredIdeActivity
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.impl.SimpleDataContext
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
@@ -153,7 +154,7 @@ class ExecutionManagerImpl(private val project: Project) : ExecutionManager(), D
|
||||
|
||||
private val inProgress = Collections.synchronizedSet(HashSet<InProgressEntry>())
|
||||
|
||||
private fun processNotStarted(environment: ExecutionEnvironment, activity: IdeActivity?) {
|
||||
private fun processNotStarted(environment: ExecutionEnvironment, activity: StructuredIdeActivity?) {
|
||||
RunConfigurationUsageTriggerCollector.logProcessFinished(activity, RunConfigurationFinishType.FAILED)
|
||||
val executorId = environment.executor.id
|
||||
inProgress.remove(InProgressEntry(executorId, environment.runner.runnerId))
|
||||
@@ -242,7 +243,7 @@ class ExecutionManagerImpl(private val project: Project) : ExecutionManager(), D
|
||||
if (!descriptor.isHiddenContent && !environment.isHeadless) {
|
||||
RunContentManager.getInstance(project).showRunContent(executor, descriptor, environment.contentToReuse)
|
||||
}
|
||||
activity?.stageStarted("ui.shown")
|
||||
activity?.stageStarted(UI_SHOWN_STAGE)
|
||||
environment.contentToReuse = descriptor
|
||||
|
||||
val processHandler = descriptor.processHandler
|
||||
@@ -817,7 +818,7 @@ fun RunnerAndConfigurationSettings.isOfSameType(runnerAndConfigurationSettings:
|
||||
return false
|
||||
}
|
||||
|
||||
private fun triggerUsage(environment: ExecutionEnvironment): IdeActivity? {
|
||||
private fun triggerUsage(environment: ExecutionEnvironment): StructuredIdeActivity? {
|
||||
val runConfiguration = environment.runnerAndConfigurationSettings?.configuration
|
||||
val configurationFactory = runConfiguration?.factory ?: return null
|
||||
return RunConfigurationUsageTriggerCollector.trigger(environment.project, configurationFactory, environment.executor, runConfiguration)
|
||||
@@ -920,7 +921,7 @@ private class ProcessExecutionListener(private val project: Project,
|
||||
private val environment: ExecutionEnvironment,
|
||||
private val processHandler: ProcessHandler,
|
||||
private val descriptor: RunContentDescriptor,
|
||||
private val activity: IdeActivity?) : ProcessAdapter() {
|
||||
private val activity: StructuredIdeActivity?) : ProcessAdapter() {
|
||||
private val willTerminateNotified = AtomicBoolean()
|
||||
private val terminateNotified = AtomicBoolean()
|
||||
|
||||
|
||||
+7
-7
@@ -74,7 +74,7 @@ public final class RunConfigurationTypeUsagesCollector extends ProjectUsagesColl
|
||||
}
|
||||
|
||||
final ConfigurationType configurationType = configurationFactory.getType();
|
||||
List<EventPair> pairs = createFeatureUsageData(configurationType, configurationFactory);
|
||||
List<EventPair<?>> pairs = createFeatureUsageData(configurationType, configurationFactory);
|
||||
pairs.addAll(getSettings(settings, runConfiguration));
|
||||
final Template template = new Template(CONFIGURED_IN_PROJECT_EVENT, pairs);
|
||||
addOrIncrement(templates, template);
|
||||
@@ -140,7 +140,7 @@ public final class RunConfigurationTypeUsagesCollector extends ProjectUsagesColl
|
||||
continue;
|
||||
}
|
||||
if (featureUsed) {
|
||||
List<EventPair> pairs = new ArrayList<>();
|
||||
List<EventPair<?>> pairs = new ArrayList<>();
|
||||
pairs.add(ID_FIELD.with(runConfiguration.getType().getId()));
|
||||
pairs.add(EventFields.PluginInfo.with(info));
|
||||
pairs.add(FEATURE_NAME_FIELD.with(name));
|
||||
@@ -151,9 +151,9 @@ public final class RunConfigurationTypeUsagesCollector extends ProjectUsagesColl
|
||||
}
|
||||
}
|
||||
|
||||
public static @NotNull List<EventPair> createFeatureUsageData(@NotNull ConfigurationType configuration, @Nullable ConfigurationFactory factory) {
|
||||
public static @NotNull List<EventPair<?>> createFeatureUsageData(@NotNull ConfigurationType configuration, @Nullable ConfigurationFactory factory) {
|
||||
final String id = configuration instanceof UnknownConfigurationType ? "unknown" : configuration.getId();
|
||||
List<EventPair> pairs = new ArrayList<>();
|
||||
List<EventPair<?>> pairs = new ArrayList<>();
|
||||
pairs.add(ID_FIELD.with(id));
|
||||
if (factory != null && configuration.getConfigurationFactories().length > 1) {
|
||||
pairs.add(FACTORY_FIELD.with(factory.getId()));
|
||||
@@ -172,10 +172,10 @@ public final class RunConfigurationTypeUsagesCollector extends ProjectUsagesColl
|
||||
|
||||
private static final class Template {
|
||||
private final VarargEventId myEventId;
|
||||
private final List<? super EventPair> myEventPairs;
|
||||
private final List<EventPair<?>> myEventPairs;
|
||||
|
||||
private Template(VarargEventId id,
|
||||
List<? super EventPair> pairs) {
|
||||
List<EventPair<?>> pairs) {
|
||||
myEventId = id;
|
||||
myEventPairs = pairs;
|
||||
}
|
||||
@@ -183,7 +183,7 @@ public final class RunConfigurationTypeUsagesCollector extends ProjectUsagesColl
|
||||
@NotNull
|
||||
private MetricEvent createMetricEvent(int count) {
|
||||
myEventPairs.add(COUNT_FIELD.with(count));
|
||||
return myEventId.metric(myEventPairs.toArray(new EventPair[0]));
|
||||
return myEventId.metric(myEventPairs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-3
@@ -1,7 +1,6 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.impl.statistics;
|
||||
|
||||
import com.intellij.internal.statistic.IdeActivity;
|
||||
import com.intellij.internal.statistic.eventLog.events.EventField;
|
||||
import com.intellij.internal.statistic.eventLog.events.EventFields;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FeatureUsageCollectorExtension;
|
||||
@@ -12,12 +11,12 @@ import java.util.List;
|
||||
public class RunConfigurationUsageLanguageExtension implements FeatureUsageCollectorExtension {
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return RunConfigurationUsageTriggerCollector.GROUP;
|
||||
return RunConfigurationUsageTriggerCollector.GROUP_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEventId() {
|
||||
return IdeActivity.STARTED_EVENT_ID;
|
||||
return "started";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+43
-25
@@ -10,12 +10,14 @@ import com.intellij.execution.target.TargetEnvironmentAwareRunProfile;
|
||||
import com.intellij.execution.target.TargetEnvironmentConfiguration;
|
||||
import com.intellij.execution.target.TargetEnvironmentType;
|
||||
import com.intellij.execution.target.TargetEnvironmentsManager;
|
||||
import com.intellij.internal.statistic.IdeActivity;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageData;
|
||||
import com.intellij.internal.statistic.IdeActivityGroup;
|
||||
import com.intellij.internal.statistic.StructuredIdeActivity;
|
||||
import com.intellij.internal.statistic.eventLog.EventLogGroup;
|
||||
import com.intellij.internal.statistic.eventLog.events.*;
|
||||
import com.intellij.internal.statistic.eventLog.validator.ValidationResultType;
|
||||
import com.intellij.internal.statistic.eventLog.validator.rules.EventContext;
|
||||
import com.intellij.internal.statistic.eventLog.validator.rules.impl.CustomValidationRule;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector;
|
||||
import com.intellij.internal.statistic.utils.PluginInfo;
|
||||
import com.intellij.internal.statistic.utils.PluginInfoDetectorKt;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
@@ -25,36 +27,53 @@ import com.intellij.util.concurrency.NonUrgentExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.execution.impl.statistics.RunConfigurationTypeUsagesCollector.createFeatureUsageData;
|
||||
|
||||
public final class RunConfigurationUsageTriggerCollector {
|
||||
public static final String GROUP = "run.configuration.exec";
|
||||
private static final ObjectEventField ADDITIONAL_FIELD = EventFields.createAdditionalDataField(GROUP, "started");
|
||||
public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCollector {
|
||||
public static final String GROUP_NAME = "run.configuration.exec";
|
||||
private static final EventLogGroup GROUP = new EventLogGroup(GROUP_NAME, 61);
|
||||
private static final ObjectEventField ADDITIONAL_FIELD = EventFields.createAdditionalDataField(GROUP_NAME, "started");
|
||||
private static final StringEventField EXECUTOR = EventFields.StringValidatedByCustomRule("executor", "run_config_executor");
|
||||
private static final StringEventField TARGET =
|
||||
EventFields.StringValidatedByCustomRule("target", RunConfigurationUsageTriggerCollector.RunTargetValidator.RULE_ID);
|
||||
private static final EnumEventField<RunConfigurationFinishType> FINISH_TYPE =
|
||||
EventFields.Enum("finish_type", RunConfigurationFinishType.class);
|
||||
|
||||
@NotNull
|
||||
public static IdeActivity trigger(@NotNull Project project,
|
||||
@NotNull ConfigurationFactory factory,
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration) {
|
||||
return new IdeActivity(project, GROUP).startedWithDataAsync(data -> {
|
||||
return ReadAction.nonBlocking(() -> buildContext(project, factory, executor, runConfiguration, data))
|
||||
.expireWith(project)
|
||||
.submit(NonUrgentExecutor.getInstance());
|
||||
});
|
||||
private static final IdeActivityGroup ACTIVITY_GROUP = new IdeActivityGroup(GROUP, null,
|
||||
new EventField<?>[]{ADDITIONAL_FIELD, EXECUTOR,
|
||||
TARGET,
|
||||
RunConfigurationTypeUsagesCollector.FACTORY_FIELD,
|
||||
RunConfigurationTypeUsagesCollector.ID_FIELD,
|
||||
EventFields.PluginInfo},
|
||||
new EventField<?>[]{FINISH_TYPE});
|
||||
|
||||
public static final VarargEventId UI_SHOWN_STAGE = ACTIVITY_GROUP.registerStage("ui.shown");
|
||||
|
||||
@Override
|
||||
public EventLogGroup getGroup() {
|
||||
return GROUP;
|
||||
}
|
||||
|
||||
private static @NotNull FeatureUsageData buildContext(@NotNull Project project,
|
||||
@NotNull ConfigurationFactory factory,
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration,
|
||||
@NotNull FeatureUsageData data) {
|
||||
@NotNull
|
||||
public static StructuredIdeActivity trigger(@NotNull Project project,
|
||||
@NotNull ConfigurationFactory factory,
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration) {
|
||||
return new StructuredIdeActivity(project, ACTIVITY_GROUP)
|
||||
.startedAsync(() -> ReadAction.nonBlocking(() -> buildContext(project, factory, executor, runConfiguration))
|
||||
.expireWith(project)
|
||||
.submit(NonUrgentExecutor.getInstance()));
|
||||
}
|
||||
|
||||
private static @NotNull List<EventPair<?>> buildContext(@NotNull Project project,
|
||||
@NotNull ConfigurationFactory factory,
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration) {
|
||||
final ConfigurationType configurationType = factory.getType();
|
||||
List<EventPair> eventPairs = createFeatureUsageData(configurationType, factory);
|
||||
List<EventPair<?>> eventPairs = createFeatureUsageData(configurationType, factory);
|
||||
ExecutorGroup<?> group = ExecutorGroup.getGroupIfProxy(executor);
|
||||
eventPairs.add(EXECUTOR.with(group != null ? group.getId() : executor.getId()));
|
||||
if (runConfiguration instanceof FusAwareRunConfiguration) {
|
||||
@@ -71,14 +90,13 @@ public final class RunConfigurationUsageTriggerCollector {
|
||||
}
|
||||
}
|
||||
}
|
||||
eventPairs.forEach(pair -> pair.addData(data));
|
||||
return data;
|
||||
return eventPairs;
|
||||
}
|
||||
|
||||
public static void logProcessFinished(@Nullable IdeActivity activity,
|
||||
public static void logProcessFinished(@Nullable StructuredIdeActivity activity,
|
||||
RunConfigurationFinishType finishType) {
|
||||
if (activity != null) {
|
||||
activity.finished(data -> data.addData("finish_type", finishType.name()));
|
||||
activity.finished(() -> Collections.singletonList(FINISH_TYPE.with(finishType)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -54,8 +54,8 @@ public class RunDashboardUsagesCollector extends ProjectUsagesCollector {
|
||||
ConfigurationType configurationType = ContainerUtil.find(configurationTypes, type -> type.getId().equals(dashboardType));
|
||||
if (configurationType == null) continue;
|
||||
|
||||
List<EventPair> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null);
|
||||
metricEvents.add(ADDED_RUN_CONFIGURATION.metric(data.toArray(new EventPair[0])));
|
||||
List<EventPair<?>> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null);
|
||||
metricEvents.add(ADDED_RUN_CONFIGURATION.metric(data));
|
||||
}
|
||||
}
|
||||
if (!removedDefaultType.isEmpty()) {
|
||||
@@ -64,8 +64,8 @@ public class RunDashboardUsagesCollector extends ProjectUsagesCollector {
|
||||
ConfigurationType configurationType = ContainerUtil.find(configurationTypes, type -> type.getId().equals(removedType));
|
||||
if (configurationType == null) continue;
|
||||
|
||||
List<EventPair> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null);
|
||||
metricEvents.add(REMOVED_RUN_CONFIGURATION.metric(data.toArray(new EventPair[0])));
|
||||
List<EventPair<?>> data = RunConfigurationTypeUsagesCollector.createFeatureUsageData(configurationType, null);
|
||||
metricEvents.add(REMOVED_RUN_CONFIGURATION.metric(data));
|
||||
}
|
||||
}
|
||||
return metricEvents;
|
||||
|
||||
@@ -1037,7 +1037,7 @@
|
||||
<statistics.counterUsagesCollector groupId="create.directory.dialog" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="refactoring.dialog" version="2"/>
|
||||
<statistics.counterUsagesCollector groupId="project.view.pane.changes" version="1"/>
|
||||
<statistics.counterUsagesCollector groupId="run.configuration.exec" version="60"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector"/>
|
||||
<statistics.counterUsagesCollector groupId="intentions" version="57"/>
|
||||
<statistics.counterUsagesCollector groupId="completion.postfix" version="57"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user