From 1d7dcf36337bc69a6c57d5695d34112ccbc5b4e7 Mon Sep 17 00:00:00 2001 From: Anton Yalyshev Date: Tue, 21 Jan 2020 18:04:15 +0300 Subject: [PATCH] Add Formatter settings tracking to FUS --- idea/resources/META-INF/plugin.xml | 1 + idea/resources/META-INF/plugin.xml.191 | 1 + idea/resources/META-INF/plugin.xml.192 | 1 + .../KotlinFormatterUsageCollector.kt | 30 +++++++++---------- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/idea/resources/META-INF/plugin.xml b/idea/resources/META-INF/plugin.xml index 6803208694b..138d2b046f5 100644 --- a/idea/resources/META-INF/plugin.xml +++ b/idea/resources/META-INF/plugin.xml @@ -79,6 +79,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/resources/META-INF/plugin.xml.191 b/idea/resources/META-INF/plugin.xml.191 index 54e2d468583..e17d04b65a2 100644 --- a/idea/resources/META-INF/plugin.xml.191 +++ b/idea/resources/META-INF/plugin.xml.191 @@ -79,6 +79,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/resources/META-INF/plugin.xml.192 b/idea/resources/META-INF/plugin.xml.192 index c39c0bf94fe..51a54214aeb 100644 --- a/idea/resources/META-INF/plugin.xml.192 +++ b/idea/resources/META-INF/plugin.xml.192 @@ -79,6 +79,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt index 435ed2bbdbc..b7cf268f3e4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt +++ b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt @@ -6,38 +6,38 @@ package org.jetbrains.kotlin.idea.formatter import com.intellij.application.options.CodeStyle -import com.intellij.internal.statistic.beans.UsageDescriptor -import com.intellij.internal.statistic.utils.getEnumUsage +import com.intellij.internal.statistic.beans.MetricEvent +import com.intellij.internal.statistic.beans.newMetric +import com.intellij.internal.statistic.eventLog.FeatureUsageData +import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector import com.intellij.openapi.project.Project import com.intellij.psi.codeStyle.CodeStyleSettingsManager import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings import org.jetbrains.kotlin.idea.formatter.KotlinFormatterUsageCollector.KotlinFormatterKind.* import org.jetbrains.kotlin.idea.util.isDefaultOfficialCodeStyle -//todo: convert to FUS? -class KotlinFormatterUsageCollector { - fun getProjectUsages(project: Project): Set { +class KotlinFormatterUsageCollector : ProjectUsagesCollector() { + + override fun getGroupId() = "kotlin.ide.formatter" + override fun getVersion(): Int = 1 + + override fun getMetrics(project: Project): Set { val usedFormatter = getKotlinFormatterKind(project) val settings = CodeStyle.getSettings(project) val kotlinCommonSettings = settings.kotlinCommonSettings val kotlinCustomSettings = settings.kotlinCustomSettings + val data = FeatureUsageData() + .addData("kind", usedFormatter.name) + .addData("defaults", kotlinCustomSettings.CODE_STYLE_DEFAULTS ?: kotlinCommonSettings.CODE_STYLE_DEFAULTS) + return setOf( - getEnumUsage("kotlin.formatter.kind", usedFormatter), - getEnumStringPropertyUsage( - "kotlin.formatter.defaults", - kotlinCustomSettings.CODE_STYLE_DEFAULTS ?: kotlinCommonSettings.CODE_STYLE_DEFAULTS - ) + newMetric("settings", data) ) } - private fun getEnumStringPropertyUsage(key: String, value: String?): UsageDescriptor { - return UsageDescriptor(key + "." + value.toString().toLowerCase(java.util.Locale.ENGLISH), 1) - } - companion object { - private const val GROUP_ID = "kotlin.formatter" private val KOTLIN_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings .also { KotlinStyleGuideCodeStyle.applyToCommonSettings(it) }