mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[fus] IJPL-944 Add dumb flag to Run Configuration was started event
GitOrigin-RevId: b9076a1e9a6029326e9bd45963142a74544d4102
This commit is contained in:
committed by
intellij-monorepo-bot
parent
53d0dbe426
commit
25f08fe587
@@ -1424,8 +1424,8 @@ f:com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector
|
||||
- <init>():V
|
||||
- getGroup():com.intellij.internal.statistic.eventLog.EventLogGroup
|
||||
- s:logProcessFinished(com.intellij.internal.statistic.StructuredIdeActivity,com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector$RunConfigurationFinishType):V
|
||||
- s:trigger(com.intellij.openapi.project.Project,com.intellij.execution.configurations.ConfigurationFactory,com.intellij.execution.Executor,com.intellij.execution.configurations.RunConfiguration,Z,Z):com.intellij.internal.statistic.StructuredIdeActivity
|
||||
- s:triggerWithParent(com.intellij.internal.statistic.StructuredIdeActivity,com.intellij.openapi.project.Project,com.intellij.execution.configurations.ConfigurationFactory,com.intellij.execution.Executor,com.intellij.execution.configurations.RunConfiguration,Z,Z):com.intellij.internal.statistic.StructuredIdeActivity
|
||||
- s:trigger(com.intellij.openapi.project.Project,com.intellij.execution.configurations.ConfigurationFactory,com.intellij.execution.Executor,com.intellij.execution.configurations.RunConfiguration,Z,Z,Z):com.intellij.internal.statistic.StructuredIdeActivity
|
||||
- s:triggerWithParent(com.intellij.internal.statistic.StructuredIdeActivity,com.intellij.openapi.project.Project,com.intellij.execution.configurations.ConfigurationFactory,com.intellij.execution.Executor,com.intellij.execution.configurations.RunConfiguration,Z,Z,Z):com.intellij.internal.statistic.StructuredIdeActivity
|
||||
f:com.intellij.execution.impl.statistics.RunConfigurationUsageTriggerCollector$RunConfigurationExecutorUtilValidator
|
||||
- com.intellij.internal.statistic.eventLog.validator.rules.FUSRule
|
||||
- com.intellij.internal.statistic.eventLog.validator.rules.PerformanceCareRule
|
||||
|
||||
@@ -919,19 +919,24 @@ fun RunnerAndConfigurationSettings.isOfSameType(runnerAndConfigurationSettings:
|
||||
}
|
||||
|
||||
private fun triggerUsage(environment: ExecutionEnvironment): StructuredIdeActivity? {
|
||||
val isDumb = DumbService.isDumb(environment.project)
|
||||
val runConfiguration = environment.runnerAndConfigurationSettings?.configuration
|
||||
val configurationFactory = runConfiguration?.factory ?: return null
|
||||
val isRerun = environment.getUserData(ExecutionManagerImpl.REPORT_NEXT_START_AS_RERUN) == true
|
||||
|
||||
// The 'Rerun' button in the Run tool window will reuse the same ExecutionEnvironment object again.
|
||||
// If there are no processes to stop, the REPORT_NEXT_START_AS_RERUN won't be set in restartRunProfile(), so need to set it here.
|
||||
if (!isRerun) environment.putUserData(ExecutionManagerImpl.REPORT_NEXT_START_AS_RERUN, true)
|
||||
if (!isRerun) {
|
||||
environment.putUserData(ExecutionManagerImpl.REPORT_NEXT_START_AS_RERUN, true)
|
||||
}
|
||||
|
||||
return when(val parentIdeActivity = environment.getUserData(ExecutionManagerImpl.PARENT_PROFILE_IDE_ACTIVITY)) {
|
||||
null -> RunConfigurationUsageTriggerCollector
|
||||
.trigger(environment.project, configurationFactory, environment.executor, runConfiguration, isRerun, environment.isRunningCurrentFile)
|
||||
.trigger(environment.project, configurationFactory, environment.executor, runConfiguration, isRerun,
|
||||
environment.isRunningCurrentFile, isDumb)
|
||||
else -> RunConfigurationUsageTriggerCollector
|
||||
.triggerWithParent(parentIdeActivity, environment.project, configurationFactory, environment.executor, runConfiguration, isRerun,
|
||||
environment.isRunningCurrentFile)
|
||||
environment.isRunningCurrentFile, isDumb)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ package com.intellij.execution.impl.statistics;
|
||||
import com.intellij.execution.EnvFilesOptions;
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.executors.ExecutorGroup;
|
||||
import com.intellij.execution.target.*;
|
||||
@@ -33,13 +32,15 @@ import static com.intellij.execution.impl.statistics.RunConfigurationTypeUsagesC
|
||||
|
||||
public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCollector {
|
||||
public static final String GROUP_NAME = "run.configuration.exec";
|
||||
private static final EventLogGroup GROUP = new EventLogGroup(GROUP_NAME, 74);
|
||||
private static final EventLogGroup GROUP = new EventLogGroup(GROUP_NAME, 75);
|
||||
|
||||
public static final IntEventField ALTERNATIVE_JRE_VERSION = EventFields.Int("alternative_jre_version");
|
||||
private static final ObjectEventField ADDITIONAL_FIELD = EventFields.createAdditionalDataField(GROUP_NAME, "started");
|
||||
private static final StringEventField EXECUTOR = EventFields.StringValidatedByCustomRule("executor",
|
||||
RunConfigurationExecutorUtilValidator.class);
|
||||
private static final BooleanEventField IS_RERUN = EventFields.Boolean("is_rerun");
|
||||
private static final BooleanEventField IS_RUNNING_CURRENT_FILE = EventFields.Boolean("is_running_current_file");
|
||||
private static final BooleanEventField IS_DUMB_MODE = EventFields.Boolean("dumb");
|
||||
|
||||
/**
|
||||
* The type of the target the run configuration is being executed with. {@code null} stands for the local machine target.
|
||||
@@ -54,18 +55,23 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
|
||||
private static final EnumEventField<RunConfigurationFinishType> FINISH_TYPE =
|
||||
EventFields.Enum("finish_type", RunConfigurationFinishType.class);
|
||||
|
||||
private static final IdeActivityDefinition ACTIVITY_GROUP = GROUP.registerIdeActivity(null,
|
||||
new EventField<?>[]{ADDITIONAL_FIELD, EXECUTOR,
|
||||
IS_RERUN,
|
||||
IS_RUNNING_CURRENT_FILE,
|
||||
TARGET,
|
||||
RunConfigurationTypeUsagesCollector.FACTORY_FIELD,
|
||||
RunConfigurationTypeUsagesCollector.ID_FIELD,
|
||||
EventFields.PluginInfo,
|
||||
ENV_FILES_COUNT},
|
||||
new EventField<?>[]{FINISH_TYPE},
|
||||
null,
|
||||
true);
|
||||
private static final IdeActivityDefinition ACTIVITY_GROUP = GROUP.registerIdeActivity(
|
||||
null,
|
||||
new EventField<?>[]{
|
||||
ADDITIONAL_FIELD,
|
||||
EXECUTOR,
|
||||
IS_RERUN,
|
||||
IS_RUNNING_CURRENT_FILE,
|
||||
TARGET,
|
||||
RunConfigurationTypeUsagesCollector.FACTORY_FIELD,
|
||||
RunConfigurationTypeUsagesCollector.ID_FIELD,
|
||||
EventFields.PluginInfo,
|
||||
ENV_FILES_COUNT,
|
||||
IS_DUMB_MODE
|
||||
},
|
||||
new EventField<?>[]{FINISH_TYPE},
|
||||
null,
|
||||
true);
|
||||
|
||||
public static final VarargEventId UI_SHOWN_STAGE = ACTIVITY_GROUP.registerStage("ui.shown");
|
||||
|
||||
@@ -79,10 +85,11 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration,
|
||||
boolean isRerun,
|
||||
boolean isRunningCurrentFile) {
|
||||
boolean isRunningCurrentFile,
|
||||
boolean isDumb) {
|
||||
return ACTIVITY_GROUP
|
||||
.startedAsync(project, () -> ReadAction.nonBlocking(
|
||||
() -> buildContext(project, factory, executor, runConfiguration, isRerun, isRunningCurrentFile)
|
||||
() -> buildContext(project, factory, executor, runConfiguration, isRerun, isRunningCurrentFile, isDumb)
|
||||
)
|
||||
.expireWith(project)
|
||||
.submit(NonUrgentExecutor.getInstance()));
|
||||
@@ -94,10 +101,11 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration,
|
||||
boolean isRerun,
|
||||
boolean isRunningCurrentFile) {
|
||||
boolean isRunningCurrentFile,
|
||||
boolean isDumb) {
|
||||
return ACTIVITY_GROUP
|
||||
.startedAsyncWithParent(project, parentActivity, () -> ReadAction.nonBlocking(
|
||||
() -> buildContext(project, factory, executor, runConfiguration, isRerun, isRunningCurrentFile)
|
||||
() -> buildContext(project, factory, executor, runConfiguration, isRerun, isRunningCurrentFile, isDumb)
|
||||
)
|
||||
.expireWith(project)
|
||||
.submit(NonUrgentExecutor.getInstance()));
|
||||
@@ -108,13 +116,15 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
|
||||
@NotNull Executor executor,
|
||||
@Nullable RunConfiguration runConfiguration,
|
||||
boolean isRerun,
|
||||
boolean isRunningCurrentFile) {
|
||||
final ConfigurationType configurationType = factory.getType();
|
||||
List<EventPair<?>> eventPairs = createFeatureUsageData(configurationType, factory);
|
||||
boolean isRunningCurrentFile,
|
||||
boolean isDumb) {
|
||||
List<EventPair<?>> eventPairs = createFeatureUsageData(factory.getType(), factory);
|
||||
ExecutorGroup<?> group = ExecutorGroup.getGroupIfProxy(executor);
|
||||
eventPairs.add(EXECUTOR.with(group != null ? group.getId() : executor.getId()));
|
||||
eventPairs.add(IS_RERUN.with(isRerun));
|
||||
eventPairs.add(IS_RUNNING_CURRENT_FILE.with(isRunningCurrentFile));
|
||||
eventPairs.add(IS_DUMB_MODE.with(isDumb));
|
||||
|
||||
if (runConfiguration instanceof FusAwareRunConfiguration) {
|
||||
List<EventPair<?>> additionalData = ((FusAwareRunConfiguration)runConfiguration).getAdditionalUsageData();
|
||||
ObjectEventData objectEventData = new ObjectEventData(additionalData);
|
||||
@@ -163,7 +173,7 @@ public final class RunConfigurationUsageTriggerCollector extends CounterUsagesCo
|
||||
|
||||
@Override
|
||||
protected @NotNull ValidationResultType doValidate(@NotNull String data, @NotNull EventContext context) {
|
||||
for (Executor executor : Executor.EXECUTOR_EXTENSION_NAME.getExtensions()) {
|
||||
for (Executor executor : Executor.EXECUTOR_EXTENSION_NAME.getExtensionList()) {
|
||||
if (StringUtil.equals(executor.getId(), data)) {
|
||||
final PluginInfo info = PluginInfoDetectorKt.getPluginInfo(executor.getClass());
|
||||
return info.isSafeToReport() ? ValidationResultType.ACCEPTED : ValidationResultType.THIRD_PARTY;
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.openapi.wm.ToolWindowId
|
||||
import com.intellij.execution.multilaunch.execution.ExecutionMode
|
||||
import com.intellij.execution.multilaunch.execution.ExecutionEngine
|
||||
import com.intellij.execution.multilaunch.execution.ExecutionSessionManager
|
||||
import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.rd.util.lifetime
|
||||
import com.jetbrains.rd.util.lifetime.isAlive
|
||||
|
||||
@@ -20,10 +21,11 @@ class MultiLaunchProfileState(
|
||||
private val project: Project
|
||||
) : RunProfileState {
|
||||
override fun execute(executor: Executor?, runner: ProgramRunner<*>): ExecutionResult? {
|
||||
val isDumb = DumbService.isDumb(project)
|
||||
val factory = configuration.factory ?: throw CantRunException("factory is null")
|
||||
executor ?: throw CantRunException("executor is null")
|
||||
project.lifetime.launchBackground {
|
||||
val activity = RunConfigurationUsageTriggerCollector.trigger(project, factory, executor, configuration, checkRunning(), false)
|
||||
val activity = RunConfigurationUsageTriggerCollector.trigger(project, factory, executor, configuration, checkRunning(), false, isDumb)
|
||||
ExecutionEngine.getInstance(project).execute(configuration, getExecutionMode(executor), activity)
|
||||
RunConfigurationUsageTriggerCollector.logProcessFinished(activity, RunConfigurationUsageTriggerCollector.RunConfigurationFinishType.UNKNOWN)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user