diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/LangCustomRuleValidator.java b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/LangCustomRuleValidator.java new file mode 100644 index 000000000000..457f64775bb3 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/LangCustomRuleValidator.java @@ -0,0 +1,27 @@ +// Copyright 2000-2019 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.internal.statistic.collectors.fus; + +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.CustomUtilsWhiteListRule; +import com.intellij.internal.statistic.utils.PluginInfoDetectorKt; +import com.intellij.lang.Language; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class LangCustomRuleValidator extends CustomUtilsWhiteListRule { + @Override + public boolean acceptRuleId(@Nullable String ruleId) { + return "lang".equals(ruleId); + } + + @NotNull + @Override + protected ValidationResultType doValidate(@NotNull String data, @NotNull EventContext context) { + if (data.equals("third.party")) return ValidationResultType.ACCEPTED; + + final Language language = Language.findLanguageByID(data); + return language != null && PluginInfoDetectorKt.getPluginInfo(language.getClass()).isSafeToReport() ? + ValidationResultType.ACCEPTED : ValidationResultType.REJECTED; + } +} diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/PluginIdRuleValidator.java b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/PluginIdRuleValidator.java new file mode 100644 index 000000000000..c9d4d659bd87 --- /dev/null +++ b/platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/PluginIdRuleValidator.java @@ -0,0 +1,21 @@ +// Copyright 2000-2019 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.internal.statistic.collectors.fus; + +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.CustomUtilsWhiteListRule; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class PluginIdRuleValidator extends CustomUtilsWhiteListRule { + @Override + public boolean acceptRuleId(@Nullable String ruleId) { + return "plugin".equals(ruleId); + } + + @NotNull + @Override + protected ValidationResultType doValidate(@NotNull String data, @NotNull EventContext context) { + return isPluginFromPluginRepository(data) ? ValidationResultType.ACCEPTED : ValidationResultType.REJECTED; + } +} diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/eventLog/validator/rules/impl/CustomUtilsWhiteListRule.java b/platform/platform-impl/src/com/intellij/internal/statistic/eventLog/validator/rules/impl/CustomUtilsWhiteListRule.java index 72897df47ba5..20a7dbe0167d 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/eventLog/validator/rules/impl/CustomUtilsWhiteListRule.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/eventLog/validator/rules/impl/CustomUtilsWhiteListRule.java @@ -21,12 +21,19 @@ public abstract class CustomUtilsWhiteListRule extends PerformanceCareRule imple protected static ValidationResultType acceptWhenReportedByJetbrainsPlugin(@NotNull EventContext context) { if ("PLATFORM".equals(context.eventData.get("plugin_type"))) return ValidationResultType.ACCEPTED; Object plugin = context.eventData.get("plugin"); - if (plugin != null) { - PluginId pluginId = PluginId.findId(plugin.toString()); - if (pluginId != null && PluginInfoDetectorKt.getPluginInfoById(pluginId).isDevelopedByJetBrains()) { - return ValidationResultType.ACCEPTED; - } + if (plugin != null && isPluginDevelopedByJB(plugin.toString())) { + return ValidationResultType.ACCEPTED; } return ValidationResultType.REJECTED; } + + protected static boolean isPluginDevelopedByJB(@NotNull String plugin) { + final PluginId pluginId = PluginId.findId(plugin); + return pluginId != null && PluginInfoDetectorKt.getPluginInfoById(pluginId).isDevelopedByJetBrains(); + } + + protected static boolean isPluginFromPluginRepository(@NotNull String plugin) { + final PluginId pluginId = PluginId.findId(plugin); + return pluginId != null && PluginInfoDetectorKt.getPluginInfoById(pluginId).isSafeToReport(); + } } diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 500436d8cae9..96ee6690c564 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -922,6 +922,8 @@ + +