mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
FUS: report plugin id with run configuration
This commit is contained in:
+28
-25
@@ -8,10 +8,10 @@ import com.intellij.execution.configurations.ConfigurationType;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
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.eventLog.FeatureUsageData;
|
||||
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.internal.statistic.utils.PluginInfo;
|
||||
import com.intellij.internal.statistic.utils.PluginInfoDetectorKt;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -23,9 +23,9 @@ import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import static java.lang.String.valueOf;
|
||||
|
||||
public abstract class AbstractRunConfigurationTypeUsagesCollector extends ProjectUsagesCollector {
|
||||
private static final String DEFAULT_ID = "third.party";
|
||||
|
||||
protected abstract boolean isApplicable(@NotNull RunManager runManager, @NotNull RunnerAndConfigurationSettings settings);
|
||||
|
||||
@NotNull
|
||||
@@ -44,9 +44,10 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
continue;
|
||||
}
|
||||
|
||||
final String key = toReportedId(configurationFactory);
|
||||
final FeatureUsageData data = new FeatureUsageData();
|
||||
final String key = toReportedId(configurationFactory, data);
|
||||
if (StringUtil.isNotEmpty(key)) {
|
||||
final Template template = new Template(key, createContext(settings, runConfiguration));
|
||||
final Template template = new Template(key, addContext(data, settings, runConfiguration));
|
||||
if (templates.containsKey(template)) {
|
||||
templates.increment(template);
|
||||
}
|
||||
@@ -64,15 +65,17 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String toReportedId(@NotNull ConfigurationFactory factory) {
|
||||
public static String toReportedId(@NotNull ConfigurationFactory factory, @NotNull FeatureUsageData data) {
|
||||
final ConfigurationType configurationType = factory.getType();
|
||||
if (configurationType instanceof UnknownConfigurationType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final PluginType type = StatisticsUtilKt.getPluginType(configurationType.getClass());
|
||||
if (!type.isSafeToReport()) {
|
||||
return null;
|
||||
final PluginInfo info = PluginInfoDetectorKt.getPluginInfo(configurationType.getClass());
|
||||
data.addPluginInfo(info);
|
||||
|
||||
if (!info.isDevelopedByJetBrains()) {
|
||||
return DEFAULT_ID;
|
||||
}
|
||||
final StringBuilder keyBuilder = new StringBuilder();
|
||||
keyBuilder.append(configurationType.getId());
|
||||
@@ -82,27 +85,27 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
return keyBuilder.toString();
|
||||
}
|
||||
|
||||
private static FUSUsageContext createContext(@NotNull RunnerAndConfigurationSettings settings,
|
||||
@NotNull RunConfiguration runConfiguration) {
|
||||
return FUSUsageContext.create(
|
||||
valueOf(settings.isShared()),
|
||||
valueOf(settings.isEditBeforeRun()),
|
||||
valueOf(settings.isActivateToolWindowBeforeRun()),
|
||||
valueOf(runConfiguration.isAllowRunningInParallel())
|
||||
);
|
||||
private static FeatureUsageData addContext(@NotNull FeatureUsageData data,
|
||||
@NotNull RunnerAndConfigurationSettings settings,
|
||||
@NotNull RunConfiguration runConfiguration) {
|
||||
return data.
|
||||
addData("shared", settings.isShared()).
|
||||
addData("edit_before_run", settings.isEditBeforeRun()).
|
||||
addData("activate_before_run", settings.isActivateToolWindowBeforeRun()).
|
||||
addData("parallel", runConfiguration.isAllowRunningInParallel());
|
||||
}
|
||||
|
||||
private static class Template {
|
||||
private final String myKey;
|
||||
private final FUSUsageContext myContext;
|
||||
private final FeatureUsageData myData;
|
||||
|
||||
private Template(String key, FUSUsageContext context) {
|
||||
private Template(String key, FeatureUsageData data) {
|
||||
myKey = key;
|
||||
myContext = context;
|
||||
myData = data;
|
||||
}
|
||||
|
||||
private UsageDescriptor createUsageDescriptor(int count) {
|
||||
return new UsageDescriptor(myKey, count, myContext);
|
||||
return new UsageDescriptor(myKey, count, myData);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,12 +114,12 @@ public abstract class AbstractRunConfigurationTypeUsagesCollector extends Projec
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Template template = (Template)o;
|
||||
return Objects.equals(myKey, template.myKey) &&
|
||||
Objects.equals(myContext, template.myContext);
|
||||
Objects.equals(myData, template.myData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(myKey, myContext);
|
||||
return Objects.hash(myKey, myData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -19,14 +19,11 @@ import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Nikolay Matveev
|
||||
*/
|
||||
public class RunConfigurationTypeUsagesCollector extends AbstractRunConfigurationTypeUsagesCollector {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.run.configuration.type";
|
||||
return "run.configuration.type";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+11
-9
@@ -3,25 +3,27 @@ package com.intellij.execution.impl.statistics;
|
||||
|
||||
import com.intellij.execution.Executor;
|
||||
import com.intellij.execution.configurations.ConfigurationFactory;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageData;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageGroup;
|
||||
import com.intellij.internal.statistic.eventLog.FeatureUsageLogger;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext;
|
||||
import com.intellij.internal.statistic.utils.PluginType;
|
||||
import com.intellij.internal.statistic.utils.StatisticsUtilKt;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSCounterUsageLogger;
|
||||
import com.intellij.internal.statistic.utils.PluginInfo;
|
||||
import com.intellij.internal.statistic.utils.PluginInfoDetectorKt;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class RunConfigurationUsageTriggerCollector {
|
||||
private static final String UNKNOWN = "UNKNOWN";
|
||||
private static final FeatureUsageGroup GROUP = new FeatureUsageGroup("statistics.run.configuration.start",1);
|
||||
private static final FeatureUsageGroup GROUP = new FeatureUsageGroup("run.configuration.exec",1);
|
||||
|
||||
public static void trigger(@NotNull Project project, @NotNull ConfigurationFactory factory, @NotNull Executor executor) {
|
||||
final String key = AbstractRunConfigurationTypeUsagesCollector.toReportedId(factory);
|
||||
final FeatureUsageData data = new FeatureUsageData().addProject(project);
|
||||
final String key = AbstractRunConfigurationTypeUsagesCollector.toReportedId(factory, data);
|
||||
if (StringUtil.isNotEmpty(key)) {
|
||||
final PluginType type = StatisticsUtilKt.getPluginType(executor.getClass());
|
||||
final FUSUsageContext context = FUSUsageContext.create(type.isSafeToReport() ? executor.getId() : UNKNOWN);
|
||||
FeatureUsageLogger.INSTANCE.log(GROUP, key, StatisticsUtilKt.createData(project, context));
|
||||
final PluginInfo info = PluginInfoDetectorKt.getPluginInfo(executor.getClass());
|
||||
data.addData("executor", info.isSafeToReport() ? executor.getId() : UNKNOWN);
|
||||
|
||||
FUSCounterUsageLogger.logEvent(project, GROUP, key, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -19,14 +19,11 @@ import com.intellij.execution.RunManager;
|
||||
import com.intellij.execution.RunnerAndConfigurationSettings;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author Nikolay Matveev
|
||||
*/
|
||||
public class TemporaryRunConfigurationTypeUsagesCollector extends AbstractRunConfigurationTypeUsagesCollector {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.run.configuration.type.temp";
|
||||
return "run.configuration.type.temp";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-7
@@ -331,13 +331,12 @@ public class RunConfigurationUsageCollectorTest extends LightPlatformTestCase {
|
||||
|
||||
@NotNull
|
||||
private static FeatureUsageData create(boolean isShared, boolean isEditBeforeRun, boolean isActivate, boolean isParallel) {
|
||||
final FUSUsageContext context = FUSUsageContext.create(
|
||||
valueOf(isShared),
|
||||
valueOf(isEditBeforeRun),
|
||||
valueOf(isActivate),
|
||||
valueOf(isParallel)
|
||||
);
|
||||
return new FeatureUsageData().addFeatureContext(context);
|
||||
return new FeatureUsageData().
|
||||
addData("plugin_type", "PLATFORM").
|
||||
addData("edit_before_run", isEditBeforeRun).
|
||||
addData("activate_before_run", isActivate).
|
||||
addData("shared", isShared).
|
||||
addData("parallel", isParallel);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user