Improve wizards names composition for FUS reporter

This commit is contained in:
Anton Yalyshev
2020-03-13 17:27:34 +03:00
parent 47bb73d90b
commit e863d81f30
7 changed files with 13 additions and 57 deletions
@@ -6,54 +6,11 @@
package org.jetbrains.kotlin.idea.statistics package org.jetbrains.kotlin.idea.statistics
object NewProjectWizardsFUSCollector { object NewProjectWizardsFUSCollector {
data class WizardDescription(val name: String, val group: String, val isKotlinDsl: Boolean?) fun log(name: String, group: String, 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( val contextData = mapOf(
"name" to wizardDescription.name, "name" to name,
"group" to wizardDescription.group, "group" to group,
"isKotlinDsl" to wizardDescription.isKotlinDsl.toString() "isKotlinDsl" to isKotlinDsl.toString()
) )
KotlinFUSLogger.log(FUSEventGroups.NPWizards, "Finished", contextData)
} }
} }
@@ -154,7 +154,7 @@ abstract class GradleKotlinFrameworkSupportProvider(
ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE)
GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING) GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING)
} }
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName) NewProjectWizardsFUSCollector.log(this.presentableName, "Gradle", false)
} }
protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder<out PsiFile>, specifyPluginVersionIfNeeded: Boolean) {} protected open fun updateSettingsScript(settingsBuilder: SettingsScriptBuilder<out PsiFile>, specifyPluginVersionIfNeeded: Boolean) {}
@@ -331,6 +331,7 @@ open class GradleKotlinMPPSourceSetsFrameworkSupportProvider : GradleKotlinMPPFr
explicitPluginVersion: String? explicitPluginVersion: String?
) { ) {
super.addSupport(buildScriptData, module, sdk, specifyPluginVersionIfNeeded, explicitPluginVersion) super.addSupport(buildScriptData, module, sdk, specifyPluginVersionIfNeeded, explicitPluginVersion)
NewProjectWizardsFUSCollector.log(this.presentableName + " as framework", "Gradle", false)
buildScriptData.addOther( buildScriptData.addOther(
"""kotlin { """kotlin {
@@ -106,7 +106,7 @@ abstract class KotlinDslGradleKotlinFrameworkSupportProvider(
GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING) GradlePropertiesFileFacade.forProject(module.project).addCodeStyleProperty(KotlinStyleGuideCodeStyle.CODE_STYLE_SETTING)
} }
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName) NewProjectWizardsFUSCollector.log(this.presentableName, "Gradle", true)
} }
protected abstract fun getOldSyntaxPluginDefinition(): String protected abstract fun getOldSyntaxPluginDefinition(): String
@@ -25,8 +25,7 @@ import org.jetbrains.plugins.gradle.settings.DistributionType
import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.externalSystem.model.project.ProjectData
import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep import com.intellij.openapi.externalSystem.service.project.wizard.ExternalModuleSettingsStep
import com.intellij.openapi.roots.ui.configuration.ModulesProvider import com.intellij.openapi.roots.ui.configuration.ModulesProvider
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
import javax.swing.Icon import javax.swing.Icon
@@ -91,7 +90,7 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
override fun setupModule(module: Module) { override fun setupModule(module: Module) {
try { try {
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName) NewProjectWizardsFUSCollector.log(this.presentableName, "Kotlin", false)
module.gradleModuleBuilder = this module.gradleModuleBuilder = this
super.setupModule(module) super.setupModule(module)
@@ -26,8 +26,7 @@ import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder
import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl import org.jetbrains.plugins.gradle.service.settings.GradleProjectSettingsControl
import org.jetbrains.plugins.gradle.settings.DistributionType import org.jetbrains.plugins.gradle.settings.DistributionType
import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.externalSystem.model.project.ProjectData
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.NewProjectWizardsFUSCollector
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
import javax.swing.Icon import javax.swing.Icon
abstract class KotlinGradleAbstractMultiplatformModuleBuilder( abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
@@ -77,7 +76,7 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder(
override fun setupModule(module: Module) { override fun setupModule(module: Module) {
try { try {
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName) NewProjectWizardsFUSCollector.log(this.presentableName, "Kotlin", false)
module.gradleModuleBuilder = this module.gradleModuleBuilder = this
super.setupModule(module) super.setupModule(module)
@@ -57,7 +57,7 @@ class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() {
if (isNewProject) { if (isNewProject) {
ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE) ProjectCodeStyleImporter.apply(module.project, KotlinStyleGuideCodeStyle.INSTANCE)
} }
NewProjectWizardsFUSCollector.log("KotlinJavaFrameworkSupportProvider") NewProjectWizardsFUSCollector.log("Kotlin/JVM", "Java", false)
} }
override fun onFrameworkSelectionChanged(selected: Boolean) { override fun onFrameworkSelectionChanged(selected: Boolean) {
@@ -45,7 +45,7 @@ class KotlinModuleBuilder(
} }
override fun setupRootModel(rootModel: ModifiableRootModel) { override fun setupRootModel(rootModel: ModifiableRootModel) {
NewProjectWizardsFUSCollector.log(this.javaClass.simpleName + ": ${this.targetPlatform}") NewProjectWizardsFUSCollector.log(this.builderName, "Kotlin", false)
super.setupRootModel(rootModel) super.setupRootModel(rootModel)
if (!targetPlatform.isJvm()) { if (!targetPlatform.isJvm()) {
migrateNonJvmSourceFolders(rootModel) migrateNonJvmSourceFolders(rootModel)