mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
FUS: report run-configurations defined in listed plugins
This commit is contained in:
@@ -128,16 +128,7 @@ class ExecutionManagerKtImpl(project: Project) : ExecutionManagerImpl(project) {
|
||||
private fun triggerUsage(environment: ExecutionEnvironment) {
|
||||
val runConfiguration = environment.runnerAndConfigurationSettings?.configuration ?: return
|
||||
val configurationFactory = runConfiguration.factory ?: return
|
||||
val configurationType = configurationFactory.type
|
||||
if (configurationType is UnknownConfigurationType) return
|
||||
|
||||
var key = configurationType.id
|
||||
if (configurationType.configurationFactories.size > 1) {
|
||||
key += "." + configurationFactory.id
|
||||
}
|
||||
|
||||
FUSProjectUsageTrigger.getInstance(environment.project).trigger(RunConfigurationUsageTriggerCollector::class.java, key,
|
||||
FUSUsageContext.create(environment.executor.id))
|
||||
RunConfigurationUsageTriggerCollector.trigger(environment.project, configurationFactory, environment.executor)
|
||||
}
|
||||
|
||||
private class ProcessExecutionListener(private val project: Project,
|
||||
|
||||
+32
-15
@@ -10,10 +10,14 @@ import com.intellij.execution.configurations.UnknownConfigurationType;
|
||||
import com.intellij.internal.statistic.beans.UsageDescriptor;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector;
|
||||
import com.intellij.internal.statistic.utils.PluginType;
|
||||
import com.intellij.internal.statistic.utils.StatisticsUtilKt;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import gnu.trove.TObjectIntHashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
@@ -40,21 +44,15 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
continue;
|
||||
}
|
||||
|
||||
final ConfigurationType configurationType = configurationFactory.getType();
|
||||
if (configurationType instanceof UnknownConfigurationType) {
|
||||
continue;
|
||||
}
|
||||
final StringBuilder keyBuilder = new StringBuilder();
|
||||
keyBuilder.append(configurationType.getId());
|
||||
if (configurationType.getConfigurationFactories().length > 1) {
|
||||
keyBuilder.append(".").append(configurationFactory.getId());
|
||||
}
|
||||
final Template template = new Template(keyBuilder.toString(), createContext(settings, runConfiguration));
|
||||
if (templates.containsKey(template)) {
|
||||
templates.increment(template);
|
||||
}
|
||||
else {
|
||||
templates.put(template, 1);
|
||||
final String key = toReportedId(configurationFactory);
|
||||
if (StringUtil.isNotEmpty(key)) {
|
||||
final Template template = new Template(key, createContext(settings, runConfiguration));
|
||||
if (templates.containsKey(template)) {
|
||||
templates.increment(template);
|
||||
}
|
||||
else {
|
||||
templates.put(template, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,6 +63,25 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
return result;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String toReportedId(@NotNull ConfigurationFactory factory) {
|
||||
final ConfigurationType configurationType = factory.getType();
|
||||
if (configurationType instanceof UnknownConfigurationType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final PluginType type = StatisticsUtilKt.getPluginType(configurationType.getClass());
|
||||
if (!type.isSafeToReport()) {
|
||||
return null;
|
||||
}
|
||||
final StringBuilder keyBuilder = new StringBuilder();
|
||||
keyBuilder.append(configurationType.getId());
|
||||
if (configurationType.getConfigurationFactories().length > 1) {
|
||||
keyBuilder.append(".").append(factory.getId());
|
||||
}
|
||||
return keyBuilder.toString();
|
||||
}
|
||||
|
||||
private static FUSUsageContext createContext(@NotNull RunnerAndConfigurationSettings settings,
|
||||
@NotNull RunConfiguration runConfiguration) {
|
||||
return FUSUsageContext.create(
|
||||
|
||||
+19
@@ -1,13 +1,32 @@
|
||||
// Copyright 2000-2018 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.execution.Executor;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSProjectUsageTrigger;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsageTriggerCollector;
|
||||
import com.intellij.internal.statistic.utils.PluginType;
|
||||
import com.intellij.internal.statistic.utils.StatisticsUtilKt;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class RunConfigurationUsageTriggerCollector extends ProjectUsageTriggerCollector {
|
||||
private static final String UNKNOWN = "UNKNOWN";
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.run.configuration.start";
|
||||
}
|
||||
|
||||
public static void trigger(@NotNull Project project, @NotNull ConfigurationFactory factory, @NotNull Executor executor) {
|
||||
final String key = AbstractRunConfigurationTypeUsagesCollector.toReportedId(factory);
|
||||
if (StringUtil.isNotEmpty(key)) {
|
||||
final PluginType type = StatisticsUtilKt.getPluginType(executor.getClass());
|
||||
final FUSUsageContext context = FUSUsageContext.create(type.isSafeToReport() ? executor.getId() : UNKNOWN);
|
||||
FUSProjectUsageTrigger.getInstance(project).trigger(RunConfigurationUsageTriggerCollector.class, key, context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user