diff --git a/platform/lang-impl/src/com/intellij/execution/impl/statistics/AbstractRunConfigurationTypeUsagesCollector.java b/platform/lang-impl/src/com/intellij/execution/impl/statistics/AbstractRunConfigurationTypeUsagesCollector.java index fd3501553a77..93515eeda347 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/statistics/AbstractRunConfigurationTypeUsagesCollector.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/statistics/AbstractRunConfigurationTypeUsagesCollector.java @@ -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); } } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationTypeUsagesCollector.java b/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationTypeUsagesCollector.java index 9e79024d533c..eef81733b231 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationTypeUsagesCollector.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationTypeUsagesCollector.java @@ -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 diff --git a/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationUsageTriggerCollector.java b/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationUsageTriggerCollector.java index 48be73c2c892..53e1ad89f5ff 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationUsageTriggerCollector.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/statistics/RunConfigurationUsageTriggerCollector.java @@ -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); } } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/statistics/TemporaryRunConfigurationTypeUsagesCollector.java b/platform/lang-impl/src/com/intellij/execution/impl/statistics/TemporaryRunConfigurationTypeUsagesCollector.java index 25b3e008f2af..82efbba0f496 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/statistics/TemporaryRunConfigurationTypeUsagesCollector.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/statistics/TemporaryRunConfigurationTypeUsagesCollector.java @@ -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 diff --git a/platform/lang-impl/testSources/com/intellij/execution/impl/statistics/RunConfigurationUsageCollectorTest.java b/platform/lang-impl/testSources/com/intellij/execution/impl/statistics/RunConfigurationUsageCollectorTest.java index 7eef1e3405c9..3a21a3a82dee 100644 --- a/platform/lang-impl/testSources/com/intellij/execution/impl/statistics/RunConfigurationUsageCollectorTest.java +++ b/platform/lang-impl/testSources/com/intellij/execution/impl/statistics/RunConfigurationUsageCollectorTest.java @@ -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