From f7b26dca7a06714846ecdf898930a4131a70c469 Mon Sep 17 00:00:00 2001 From: "Svetlana.Zemlyanskaya" Date: Tue, 21 May 2019 11:11:50 +0200 Subject: [PATCH] FUS: implement util validator for plugin id and lang (FUS-394, FUS-395) GitOrigin-RevId: 73915ac23a990c075a858bf88276f1a66f2d858e --- .../fus/LangCustomRuleValidator.java | 27 +++++++++++++++++++ .../collectors/fus/PluginIdRuleValidator.java | 21 +++++++++++++++ .../rules/impl/CustomUtilsWhiteListRule.java | 17 ++++++++---- .../src/META-INF/LangExtensions.xml | 2 ++ 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/LangCustomRuleValidator.java create mode 100644 platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/PluginIdRuleValidator.java 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 @@ + +