Change FUS data format for New Project Wizards collector

This commit is contained in:
Anton Yalyshev
2020-03-04 16:28:59 +03:00
parent e8dff3609b
commit 47bb73d90b
7 changed files with 69 additions and 43 deletions
@@ -17,7 +17,7 @@ enum class FUSEventGroups(groupIdSuffix: String, val events: Set<String> = setOf
GradleTarget("gradle.target", gradleTargetEvents),
Refactoring("ide.action.refactoring", refactoringEvents),
NewFileTemplate("ide.newFileTempl", newFileTemplateEvents),
NPWizards("ide.npwizards", NPWizardsEvents),
NPWizards("ide.npwizards"),
Debug("ide.debugger"),
J2K("ide.j2k"),
Editor("ide.editor"),
@@ -94,28 +94,4 @@ val newFileTemplateEvents = setOf(
"Kotlin Enum",
"Kotlin Scratch",
"Kotlin Script"
)
val NPWizardsEvents = setOf(
"KotlinModuleBuilder: JVM (JVM_1_6)",
"KotlinModuleBuilder: JVM (JVM_1_8)",
"KotlinModuleBuilder: JVM (JVM_9)",
"KotlinModuleBuilder: JVM (JVM_10)",
"KotlinModuleBuilder: JVM (JVM_11)",
"KotlinModuleBuilder: JVM (JVM_12)",
"KotlinModuleBuilder: JS",
"KotlinGradleNativeMultiplatformModuleBuilder",
"KotlinGradleSharedMultiplatformModuleBuilder",
"KotlinGradleWebMultiplatformModuleBuilder",
"KotlinGradleMobileMultiplatformModuleBuilder",
"KotlinGradleMobileSharedMultiplatformModuleBuilder",
"KotlinJavaFrameworkSupportProvider",
"GradleKotlinJavaFrameworkSupportProvider",
"GradleKotlinJSFrameworkSupportProvider",
"GradleKotlinJSBrowserFrameworkSupportProvider",
"GradleKotlinJSNodeFrameworkSupportProvider",
"GradleKotlinMPPFrameworkSupportProvider",
"KotlinDslGradleKotlinJavaFrameworkSupportProvider",
"KotlinDslGradleKotlinJSFrameworkSupportProvider",
"KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider",
"KotlinDslGradleKotlinJSNodeFrameworkSupportProvider"
)
@@ -17,12 +17,7 @@ open class KotlinFUSLogger {
private val logger = FUCounterUsageLogger.getInstance()
fun log(group: FUSEventGroups, event: String) {
if (group.events.contains(event) || group.events.isEmpty()) {
logger.logEvent(group.GROUP_ID, event, context)
} else {
logger.logEvent(group.GROUP_ID, "unknown", context)
}
logger.logEvent(group.GROUP_ID, event, context)
}
fun log(group: FUSEventGroups, event: String, eventData: Map<String, String>) {
@@ -0,0 +1,59 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.statistics
object NewProjectWizardsFUSCollector {
data class WizardDescription(val name: String, val group: String, val isKotlinDsl: Boolean?)
private val classToNameMap = mapOf(
"KotlinModuleBuilder__JVM_(JVM_1_6)" to "JVM | IDEA",
"KotlinModuleBuilder__JS" to "JS | IDEA",
"KotlinGradleNativeMultiplatformModuleBuilder" to "Native | Gradle",
"KotlinGradleSharedMultiplatformModuleBuilder" to "Multiplatform Library | Gradle",
"KotlinGradleWebMultiplatformModuleBuilder" to "JS Client and JVM Server | Gradle",
"KotlinGradleMobileMultiplatformModuleBuilder" to "Mobile Android/iOS | Gradle",
"KotlinGradleMobileSharedMultiplatformModuleBuilder" to "Mobile Shared Library | Gradle",
"KotlinJavaFrameworkSupportProvider" to "Kotlin/JVM",
"GradleKotlinJavaFrameworkSupportProvider" to "Kotlin/JVM",
"GradleKotlinJSFrameworkSupportProvider" to "Kotlin/JS",
"GradleKotlinJSBrowserFrameworkSupportProvider" to "Kotlin/JS for browser",
"GradleKotlinJSNodeFrameworkSupportProvider" to "Kotlin/JS for Node.js",
"GradleKotlinMPPFrameworkSupportProvider" to "Kotlin/Multiplatform_aggregated",
"GradleKotlinMPPSourceSetsFrameworkSupportProvider" to "Kotlin/Multiplatform",
"KotlinDslGradleKotlinJavaFrameworkSupportProvider" to "Kotlin/JVM",
"KotlinDslGradleKotlinJSBrowserFrameworkSupportProvider" to "Kotlin/JS for browser",
"KotlinDslGradleKotlinJSNodeFrameworkSupportProvider" to "Kotlin/JS for Node.js",
"KotlinDslGradleKotlinMPPFrameworkSupportProvider" to "Kotlin/Multiplatform"
)
private fun parseWizardClass(className: String): WizardDescription {
val wizardName = classToNameMap[className] ?: "unknown"
val wizardGroup = if (wizardName == "unknown") "unknown"
else if (className.startsWith("KotlinJava")) "Java"
else if (className.startsWith("Gradle") || className.startsWith("KotlinDslGradle")) "Gradle"
else "Kotlin"
val isBasedOnKotlinDSL = if (wizardName != "unknown") className.startsWith("KotlinDsl")
else null
return WizardDescription(wizardName, wizardGroup, isBasedOnKotlinDSL)
}
fun log(wizardClassName: String) {
val wizardDescription = parseWizardClass(wizardClassName)
val contextData = mapOf(
"name" to wizardDescription.name,
"group" to wizardDescription.group,
"isKotlinDsl" to wizardDescription.isKotlinDsl.toString()
)
KotlinFUSLogger.log(FUSEventGroups.NPWizards, "Finished", contextData)
}
}
@@ -32,8 +32,7 @@ import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import org.jetbrains.kotlin.idea.util.isSnapshot
import org.jetbrains.kotlin.idea.versions.*
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
@@ -155,7 +154,7 @@ abstract class GradleKotlinFrameworkSupportProvider(
ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE)
GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING)
}
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName)
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName)
}
protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder<out PsiFile>, specifyPluginVersionIfNeeded: Boolean) {}
@@ -31,8 +31,7 @@ import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Comp
import org.jetbrains.kotlin.idea.configuration.KotlinBuildScriptManipulator.Companion.getKotlinModuleDependencySnippet
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import org.jetbrains.kotlin.idea.util.isSnapshot
import org.jetbrains.kotlin.idea.versions.*
import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder
@@ -107,7 +106,7 @@ abstract class KotlinDslGradleKotlinFrameworkSupportProvider(
GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING)
}
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName)
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName)
}
protected abstract fun getOldSyntaxPluginDefinition(): String
@@ -21,8 +21,7 @@ import org.jetbrains.kotlin.idea.configuration.BuildSystemType
import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import javax.swing.JComponent
class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() {
@@ -58,7 +57,7 @@ class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() {
if (isNewProject) {
ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE)
}
KotlinFUSLogger.log(FUSEventGroups.NPWizards, "KotlinJavaFrameworkSupportProvider")
NewProjectWizardsFUSCollector.log("KotlinJavaFrameworkSupportProvider")
}
override fun onFrameworkSelectionChanged(selected: Boolean) {
@@ -13,8 +13,7 @@ import com.intellij.openapi.projectRoots.SdkTypeId
import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.jvm.isJvm
import javax.swing.Icon
@@ -46,7 +45,7 @@ class KotlinModuleBuilder(
}
override fun setupRootModel(rootModel: ModifiableRootModel) {
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName + ": ${this.targetPlatform}")
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName + ": ${this.targetPlatform}")
super.setupRootModel(rootModel)
if (!targetPlatform.isJvm()) {
migrateNonJvmSourceFolders(rootModel)