Implement statistics for the new API for intellij 191

This commit is contained in:
Vadim Brilyantov
2019-01-30 17:07:05 +03:00
parent 495030ad9b
commit 032a784d0b
22 changed files with 95 additions and 158 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.configuration package org.jetbrains.kotlin.idea.configuration
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.externalSystem.model.DataNode import com.intellij.openapi.externalSystem.model.DataNode
import com.intellij.openapi.externalSystem.model.ProjectKeys import com.intellij.openapi.externalSystem.model.ProjectKeys
import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType
@@ -36,8 +37,9 @@ import org.jetbrains.kotlin.idea.inspections.gradle.getDependencyModules
import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty
import org.jetbrains.kotlin.idea.util.DataNodeUserDataProperty import org.jetbrains.kotlin.idea.util.DataNodeUserDataProperty
import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty
import org.jetbrains.kotlin.idea.util.PsiPrecedences
import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import org.jetbrains.kotlin.statistics.KotlinTargetTrigger
import org.jetbrains.plugins.gradle.model.ExternalProjectDependency import org.jetbrains.plugins.gradle.model.ExternalProjectDependency
import org.jetbrains.plugins.gradle.model.ExternalSourceSet import org.jetbrains.plugins.gradle.model.ExternalSourceSet
import org.jetbrains.plugins.gradle.model.FileCollectionDependency import org.jetbrains.plugins.gradle.model.FileCollectionDependency
@@ -47,8 +49,6 @@ import org.jetbrains.plugins.gradle.service.project.GradleProjectResolver
import java.io.File import java.io.File
import java.util.* import java.util.*
import kotlin.collections.HashMap import kotlin.collections.HashMap
import com.intellij.openapi.diagnostic.Logger
import org.jetbrains.kotlin.idea.util.PsiPrecedences
var DataNode<ModuleData>.isResolved var DataNode<ModuleData>.isResolved
by NotNullableCopyableDataNodeUserDataProperty(Key.create<Boolean>("IS_RESOLVED"), false) by NotNullableCopyableDataNodeUserDataProperty(Key.create<Boolean>("IS_RESOLVED"), false)
@@ -200,7 +200,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
if (mppModel != null) { if (mppModel != null) {
mppModel.targets.filterNot { it.name == "metadata" }.forEach { target -> mppModel.targets.filterNot { it.name == "metadata" }.forEach { target ->
KotlinStatisticsTrigger.trigger( KotlinStatisticsTrigger.trigger(
KotlinTargetTrigger::class.java, KotlinEventTrigger.KotlinGradleTargetTrigger,
"MPP.${target.platform.id + (target.presetName?.let { ".$it"} ?: "")}" "MPP.${target.platform.id + (target.presetName?.let { ".$it"} ?: "")}"
) )
} }
@@ -224,7 +224,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
ideModule.platformPluginId = gradleModel.platformPluginId ideModule.platformPluginId = gradleModel.platformPluginId
KotlinStatisticsTrigger.trigger( KotlinStatisticsTrigger.trigger(
KotlinTargetTrigger::class.java, KotlinEventTrigger.KotlinGradleTargetTrigger,
gradleModel.kotlinTarget ?: "unknown" gradleModel.kotlinTarget ?: "unknown"
) )
@@ -9,13 +9,13 @@ import com.intellij.ide.scratch.ScratchFileCreationHelper
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.parsing.KotlinParserDefinition import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.statistics.KotlinIdeNewFileTemplateTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class KtScratchFileCreationHelper: ScratchFileCreationHelper() { class KtScratchFileCreationHelper: ScratchFileCreationHelper() {
override fun prepareText(project: Project, context: Context, dataContext: DataContext): Boolean { override fun prepareText(project: Project, context: Context, dataContext: DataContext): Boolean {
KotlinStatisticsTrigger.trigger(KotlinIdeNewFileTemplateTrigger::class.java, "Kotlin Scratch") KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeNewFileTemplateTrigger, "Kotlin Scratch")
context.fileExtension = KotlinParserDefinition.STD_SCRIPT_SUFFIX context.fileExtension = KotlinParserDefinition.STD_SCRIPT_SUFFIX
-7
View File
@@ -72,11 +72,4 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<nonBlockingContextChecker implementation="org.jetbrains.kotlin.idea.inspections.blockingCallsDetection.CoroutineNonBlockingContextChecker"/> <nonBlockingContextChecker implementation="org.jetbrains.kotlin.idea.inspections.blockingCallsDetection.CoroutineNonBlockingContextChecker"/>
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij">
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinMavenTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinJPSTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeNewFileTemplateTrigger"/>
</extensions>
</idea-plugin> </idea-plugin>
+9
View File
@@ -71,4 +71,13 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<extensions defaultExtensionNs="com.intellij.codeInsight"> <extensions defaultExtensionNs="com.intellij.codeInsight">
<nonBlockingContextChecker implementation="org.jetbrains.kotlin.idea.inspections.blockingCallsDetection.CoroutineNonBlockingContextChecker"/> <nonBlockingContextChecker implementation="org.jetbrains.kotlin.idea.inspections.blockingCallsDetection.CoroutineNonBlockingContextChecker"/>
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij">
<statistics.counterUsagesCollector group_id="kotlin.gradle.target" version="1"/>
<statistics.counterUsagesCollector group_id="kotlin.maven.target" version="1"/>
<statistics.counterUsagesCollector group_id="kotlin.jps.target" version="1"/>
<statistics.counterUsagesCollector group_id="kotlin.gradle.library" version="1"/>
<statistics.counterUsagesCollector group_id="kotlin.ide.action.refactoring" version="1"/>
<statistics.counterUsagesCollector group_id="kotlin.ide.newFileTempl" version="1"/>
</extensions>
</idea-plugin> </idea-plugin>
-8
View File
@@ -71,12 +71,4 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<extensions defaultExtensionNs="com.intellij.jvm"> <extensions defaultExtensionNs="com.intellij.jvm">
<declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/> <declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/>
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij">
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinMavenTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinJPSTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeNewFileTemplateTrigger"/>
</extensions>
</idea-plugin> </idea-plugin>
-8
View File
@@ -71,12 +71,4 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
<extensions defaultExtensionNs="com.intellij.jvm"> <extensions defaultExtensionNs="com.intellij.jvm">
<declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/> <declarationSearcher language="kotlin" implementationClass="org.jetbrains.kotlin.idea.jvm.KotlinDeclarationSearcher"/>
</extensions> </extensions>
<extensions defaultExtensionNs="com.intellij">
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinMavenTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinJPSTargetTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger"/>
<statistics.applicationUsagesCollector implementation="org.jetbrains.kotlin.statistics.KotlinIdeNewFileTemplateTrigger"/>
</extensions>
</idea-plugin> </idea-plugin>
@@ -47,8 +47,8 @@ import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import org.jetbrains.kotlin.statistics.KotlinIdeNewFileTemplateTrigger
import java.util.* import java.util.*
class NewKotlinFileAction : CreateFileFromTemplateAction( class NewKotlinFileAction : CreateFileFromTemplateAction(
@@ -194,7 +194,7 @@ class NewKotlinFileAction : CreateFileFromTemplateAction(
private val FQNAME_SEPARATORS = charArrayOf('/', '\\', '.') private val FQNAME_SEPARATORS = charArrayOf('/', '\\', '.')
fun createFileFromTemplateWithStat(name: String, template: FileTemplate, dir: PsiDirectory): PsiFile? { fun createFileFromTemplateWithStat(name: String, template: FileTemplate, dir: PsiDirectory): PsiFile? {
KotlinStatisticsTrigger.trigger(KotlinIdeNewFileTemplateTrigger::class.java, template.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeNewFileTemplateTrigger, template.name)
return createFileFromTemplate(name, template, dir) return createFileFromTemplate(name, template, dir)
} }
@@ -15,8 +15,7 @@ import org.jetbrains.kotlin.platform.impl.isCommon
import org.jetbrains.kotlin.platform.impl.isJavaScript import org.jetbrains.kotlin.platform.impl.isJavaScript
import org.jetbrains.kotlin.platform.impl.isJvm import org.jetbrains.kotlin.platform.impl.isJvm
import org.jetbrains.kotlin.platform.impl.isKotlinNative import org.jetbrains.kotlin.platform.impl.isKotlinNative
import org.jetbrains.kotlin.statistics.KotlinJPSTargetTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinMavenTargetTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class TargetRetrieveActivity : StartupActivity { class TargetRetrieveActivity : StartupActivity {
@@ -34,12 +33,12 @@ class TargetRetrieveActivity : StartupActivity {
when { when {
buildSystem == BuildSystemType.JPS -> buildSystem == BuildSystemType.JPS ->
KotlinStatisticsTrigger.trigger( KotlinStatisticsTrigger.trigger(
KotlinJPSTargetTrigger::class.java, KotlinEventTrigger.KotlinJPSTargetTrigger,
platform platform
) )
buildSystem.toString().toLowerCase().contains("maven") -> buildSystem.toString().toLowerCase().contains("maven") ->
KotlinStatisticsTrigger.trigger( KotlinStatisticsTrigger.trigger(
KotlinMavenTargetTrigger::class.java, KotlinEventTrigger.KotlinMavenTargetTrigger,
platform platform
) )
} }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.pullUp package org.jetbrains.kotlin.idea.refactoring.pullUp
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
@@ -31,8 +30,8 @@ import com.intellij.refactoring.util.CommonRefactoringUtil
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.refactoring.canRefactor
import org.jetbrains.kotlin.idea.refactoring.AbstractPullPushMembersHandler import org.jetbrains.kotlin.idea.refactoring.AbstractPullPushMembersHandler
import org.jetbrains.kotlin.idea.refactoring.canRefactor
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfoStorage import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfoStorage
import org.jetbrains.kotlin.idea.refactoring.memberInfo.qualifiedClassNameForRendering import org.jetbrains.kotlin.idea.refactoring.memberInfo.qualifiedClassNameForRendering
@@ -40,7 +39,8 @@ import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import org.jetbrains.kotlin.types.typeUtil.supertypes import org.jetbrains.kotlin.types.typeUtil.supertypes
class KotlinPullUpHandler : AbstractPullPushMembersHandler( class KotlinPullUpHandler : AbstractPullPushMembersHandler(
@@ -118,12 +118,12 @@ class KotlinPullUpHandler : AbstractPullPushMembersHandler(
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) {
super.invoke(project, elements, dataContext) super.invoke(project, elements, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) {
super.invoke(project, editor, file, dataContext) super.invoke(project, editor, file, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
} }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.pushDown package org.jetbrains.kotlin.idea.refactoring.pushDown
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
@@ -37,7 +36,8 @@ import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtParameter import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
val PUSH_MEMBERS_DOWN = "Push Members Down" val PUSH_MEMBERS_DOWN = "Push Members Down"
@@ -91,11 +91,11 @@ class KotlinPushDownHandler : AbstractPullPushMembersHandler(
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) {
super.invoke(project, elements, dataContext) super.invoke(project, elements, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) {
super.invoke(project, editor, file, dataContext) super.invoke(project, editor, file, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
} }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.command.impl.StartMarkAction import com.intellij.openapi.command.impl.StartMarkAction
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
@@ -33,7 +32,8 @@ import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.psi.KtPsiUtil import org.jetbrains.kotlin.psi.KtPsiUtil
import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class JavaMemberByKotlinReferenceInplaceRenameHandler : MemberInplaceRenameHandler() { class JavaMemberByKotlinReferenceInplaceRenameHandler : MemberInplaceRenameHandler() {
class Renamer( class Renamer(
@@ -61,12 +61,12 @@ class JavaMemberByKotlinReferenceInplaceRenameHandler : MemberInplaceRenameHandl
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext) {
super.invoke(project, elements, dataContext) super.invoke(project, elements, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
override fun invoke(project: Project, editor: Editor?, file: PsiFile?, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor?, file: PsiFile?, dataContext: DataContext?) {
super.invoke(project, editor, file, dataContext) super.invoke(project, editor, file, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
@@ -15,7 +14,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference
import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
import org.jetbrains.kotlin.utils.ifEmpty import org.jetbrains.kotlin.utils.ifEmpty
@@ -28,7 +28,7 @@ class KotlinAwareJavaGetterRenameProcessor : RenameJavaMethodProcessor() {
val propertyName = SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(Name.identifier(getter.name)) ?: return getterReferences val propertyName = SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(Name.identifier(getter.name)) ?: return getterReferences
val setterName = JvmAbi.setterName(propertyName.asString()) val setterName = JvmAbi.setterName(propertyName.asString())
val containingClass = getter.containingClass ?: return getterReferences val containingClass = getter.containingClass ?: return getterReferences
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
val setterReferences = containingClass val setterReferences = containingClass
.findMethodsByName(setterName, true) .findMethodsByName(setterName, true)
.filter { it.parameters.size == 1 && it.returnType == PsiType.VOID } .filter { it.parameters.size == 1 && it.returnType == PsiType.VOID }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
@@ -25,18 +24,19 @@ import com.intellij.psi.PsiFile
import com.intellij.refactoring.rename.DirectoryAsPackageRenameHandler import com.intellij.refactoring.rename.DirectoryAsPackageRenameHandler
import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.psi.psiUtil.isIdentifier
import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class KotlinDirectoryAsPackageRenameHandler : DirectoryAsPackageRenameHandler() { class KotlinDirectoryAsPackageRenameHandler : DirectoryAsPackageRenameHandler() {
override fun isIdentifier(name: String, project: Project): Boolean = name.quoteIfNeeded().isIdentifier() override fun isIdentifier(name: String, project: Project): Boolean = name.quoteIfNeeded().isIdentifier()
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) {
super.invoke(project, elements, dataContext) super.invoke(project, elements, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this.javaClass.simpleName) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this.javaClass.simpleName)
} }
override fun invoke(project: Project, editor: Editor?, file: PsiFile?, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor?, file: PsiFile?, dataContext: DataContext?) {
super.invoke(project, editor, file, dataContext) super.invoke(project, editor, file, dataContext)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this.javaClass.simpleName) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this.javaClass.simpleName)
} }
} }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.fileTypes.FileTypeManager import com.intellij.openapi.fileTypes.FileTypeManager
import com.intellij.openapi.module.ModuleUtilCore import com.intellij.openapi.module.ModuleUtilCore
import com.intellij.psi.JavaPsiFacade import com.intellij.psi.JavaPsiFacade
@@ -31,7 +30,8 @@ import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class RenameKotlinFileProcessor : RenamePsiFileProcessor() { class RenameKotlinFileProcessor : RenamePsiFileProcessor() {
class FileRenamingPsiClassWrapper( class FileRenamingPsiClassWrapper(
@@ -69,7 +69,7 @@ class RenameKotlinFileProcessor : RenamePsiFileProcessor() {
override fun findReferences(element: PsiElement): MutableCollection<PsiReference> { override fun findReferences(element: PsiElement): MutableCollection<PsiReference> {
return super.findReferences(element).also { return super.findReferences(element).also {
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
} }
} }
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class RenameKotlinFileProcessor : RenamePsiFileProcessor() { class RenameKotlinFileProcessor : RenamePsiFileProcessor() {
@@ -68,7 +68,7 @@ class RenameKotlinFileProcessor : RenamePsiFileProcessor() {
} }
override fun findReferences(element: PsiElement): MutableCollection<PsiReference> { override fun findReferences(element: PsiElement): MutableCollection<PsiReference> {
return super.findReferences(element).also { return super.findReferences(element).also {
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
} }
} }
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
@@ -47,7 +46,8 @@ import org.jetbrains.kotlin.psi.psiUtil.isIdentifier
import org.jetbrains.kotlin.psi.psiUtil.parents import org.jetbrains.kotlin.psi.psiUtil.parents
import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded
import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import java.util.ArrayList import java.util.ArrayList
import kotlin.collections.* import kotlin.collections.*
@@ -69,7 +69,7 @@ abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() {
override fun canProcessElement(element: PsiElement): Boolean = element is KtNamedDeclaration override fun canProcessElement(element: PsiElement): Boolean = element is KtNamedDeclaration
override fun findReferences(element: PsiElement): Collection<PsiReference> { override fun findReferences(element: PsiElement): Collection<PsiReference> {
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this.javaClass.simpleName) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this.javaClass.simpleName)
val searchParameters = KotlinReferencesSearchParameters( val searchParameters = KotlinReferencesSearchParameters(
element, element,
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.idea.refactoring.rename package org.jetbrains.kotlin.idea.refactoring.rename
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
@@ -17,7 +16,8 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.resolve.calls.tower.isSynthesized import org.jetbrains.kotlin.resolve.calls.tower.isSynthesized
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
import org.jetbrains.kotlin.statistics.KotlinStatisticsTrigger
class RenameSyntheticDeclarationByReferenceHandler : RenameHandler { class RenameSyntheticDeclarationByReferenceHandler : RenameHandler {
override fun isAvailableOnDataContext(dataContext: DataContext): Boolean { override fun isAvailableOnDataContext(dataContext: DataContext): Boolean {
@@ -31,7 +31,7 @@ class RenameSyntheticDeclarationByReferenceHandler : RenameHandler {
override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) {
CodeInsightUtils.showErrorHint(project, editor, "Rename is not applicable to synthetic declaration", "Rename", null) CodeInsightUtils.showErrorHint(project, editor, "Rename is not applicable to synthetic declaration", "Rename", null)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) {
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
import org.jetbrains.kotlin.psi.KtSimpleNameExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression
import org.jetbrains.kotlin.resolve.calls.tower.isSynthesized import org.jetbrains.kotlin.resolve.calls.tower.isSynthesized
import org.jetbrains.kotlin.statistics.KotlinIdeRefactoringTrigger import org.jetbrains.kotlin.statistics.KotlinEventTrigger
class RenameSyntheticDeclarationByReferenceHandler : RenameHandler { class RenameSyntheticDeclarationByReferenceHandler : RenameHandler {
override fun isAvailableOnDataContext(dataContext: DataContext?): Boolean { override fun isAvailableOnDataContext(dataContext: DataContext?): Boolean {
@@ -32,7 +32,7 @@ class RenameSyntheticDeclarationByReferenceHandler : RenameHandler {
override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) { override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) {
CodeInsightUtils.showErrorHint(project, editor, "Rename is not applicable to synthetic declaration", "Rename", null) CodeInsightUtils.showErrorHint(project, editor, "Rename is not applicable to synthetic declaration", "Rename", null)
KotlinStatisticsTrigger.trigger(KotlinIdeRefactoringTrigger::class.java, this::class.java.name) KotlinStatisticsTrigger.trigger(KotlinEventTrigger.KotlinIdeRefactoringTrigger, this::class.java.name)
} }
override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) { override fun invoke(project: Project, elements: Array<out PsiElement>, dataContext: DataContext?) {
@@ -0,0 +1,19 @@
/*
* Copyright 2010-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/LICENSE.txt file.
*/
package org.jetbrains.kotlin.statistics
// Note: along with adding a trigger to this enum you sould also add its GROUP_ID to plugin.xml and get it whitelisted
// (see https://confluence.jetbrains.com/display/FUS/IntelliJ+Reporting+API).
enum class KotlinEventTrigger(groupIdSufix: String) {
KotlinGradleTargetTrigger("gradle.target"),
KotlinMavenTargetTrigger("maven.target"),
KotlinJPSTargetTrigger("jps.target"),
KotlinProjectLibraryUsageTrigger("gradle.library"),
KotlinIdeRefactoringTrigger("ide.action.refactoring"),
KotlinIdeNewFileTemplateTrigger("ide.newFileTempl");
val GROUP_ID: String = "kotlin.$groupIdSufix"
}
@@ -5,43 +5,10 @@
package org.jetbrains.kotlin.statistics package org.jetbrains.kotlin.statistics
import com.intellij.ide.plugins.PluginManager open class KotlinStatisticsTrigger {
import com.intellij.internal.statistic.service.fus.collectors.ApplicationUsageTriggerCollector
import com.intellij.internal.statistic.service.fus.collectors.FUSApplicationUsageTrigger
import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext
import com.intellij.openapi.extensions.PluginId
open class KotlinStatisticsTrigger(private val groupIdSufix: String) : ApplicationUsageTriggerCollector() {
override fun getGroupId() = "statistics.kotlin.$groupIdSufix"
companion object { companion object {
public fun trigger(clazz: Class<out KotlinStatisticsTrigger>, event: String) { public fun trigger(trigger: KotlinEventTrigger, event: String) {
val plugin = PluginManager.getPlugin(PluginId.getId("org.jetbrains.kotlin")) // Not whitelisted for 183
val version = plugin?.version ?: "undefined"
FUSApplicationUsageTrigger.getInstance().trigger(clazz, event, FUSUsageContext.create(version))
} }
} }
} }
open class KotlinIdeStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("ide.$groupIdSufix")
open class KotlinGradlePluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("gradle.$groupIdSufix")
open class KotlinMavenPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("maven.$groupIdSufix")
open class KotlinJPSPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("jps.$groupIdSufix")
class KotlinVersionTrigger : KotlinGradlePluginStatisticsTrigger("kotlin_version")
class KotlinTargetTrigger : KotlinGradlePluginStatisticsTrigger("target")
class KotlinMavenTargetTrigger : KotlinMavenPluginStatisticsTrigger("target")
class KotlinJPSTargetTrigger : KotlinJPSPluginStatisticsTrigger("target")
class KotlinProjectLibraryUsageTrigger : KotlinGradlePluginStatisticsTrigger("library")
open class KotlinIdeActionTrigger(groupIdSufix: String? = null) : KotlinIdeStatisticsTrigger("action" + (if (groupIdSufix != null) ".$groupIdSufix" else ""))
class KotlinIdeRefactoringTrigger : KotlinIdeActionTrigger("refactoring")
class KotlinIdeNewFileTemplateTrigger : KotlinIdeStatisticsTrigger("newFileTempl")
@@ -5,32 +5,10 @@
package org.jetbrains.kotlin.statistics package org.jetbrains.kotlin.statistics
open class KotlinStatisticsTrigger(private val groupIdSufix: String) { open class KotlinStatisticsTrigger {
companion object { companion object {
public fun trigger(clazz: Class<out KotlinStatisticsTrigger>, event: String) { public fun trigger(trigger: KotlinEventTrigger, event: String) {
// FUS is not working for 182 // Not whitelisted for 182
} }
} }
} }
open class KotlinIdeStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("ide.$groupIdSufix")
open class KotlinGradlePluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("gradle.$groupIdSufix")
open class KotlinMavenPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("maven.$groupIdSufix")
open class KotlinJPSPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("jps.$groupIdSufix")
class KotlinVersionTrigger : KotlinGradlePluginStatisticsTrigger("kotlin_version")
class KotlinTargetTrigger : KotlinGradlePluginStatisticsTrigger("target")
class KotlinMavenTargetTrigger : KotlinMavenPluginStatisticsTrigger("target")
class KotlinJPSTargetTrigger : KotlinJPSPluginStatisticsTrigger("target")
class KotlinProjectLibraryUsageTrigger : KotlinGradlePluginStatisticsTrigger("library")
open class KotlinIdeActionTrigger(groupIdSufix: String? = null) : KotlinIdeStatisticsTrigger("action" + (if (groupIdSufix != null) ".$groupIdSufix" else ""))
class KotlinIdeRefactoringTrigger : KotlinIdeActionTrigger("refactoring")
class KotlinIdeNewFileTemplateTrigger : KotlinIdeStatisticsTrigger("newFileTempl")
@@ -5,32 +5,20 @@
package org.jetbrains.kotlin.statistics package org.jetbrains.kotlin.statistics
open class KotlinStatisticsTrigger(private val groupIdSufix: String) { import com.intellij.internal.statistic.service.fus.collectors.FUCounterUsageLogger;
import com.intellij.internal.statistic.eventLog.FeatureUsageData;
import com.intellij.ide.plugins.PluginManager
import com.intellij.openapi.extensions.PluginId
import com.intellij.internal.statistic.service.fus.collectors.FUSUsageContext
open class KotlinStatisticsTrigger {
companion object { companion object {
public fun trigger(clazz: Class<out KotlinStatisticsTrigger>, event: String) { private val VERSION = PluginManager.getPlugin(PluginId.getId("org.jetbrains.kotlin"))?.version ?: "undefined"
// FUS is not working for 182
public fun trigger(trigger: KotlinEventTrigger, event: String) {
val context = FeatureUsageData().addFeatureContext(FUSUsageContext.create(VERSION));
FUCounterUsageLogger.getInstance().logEvent(trigger.GROUP_ID, key, data);
} }
} }
} }
open class KotlinIdeStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("ide.$groupIdSufix")
open class KotlinGradlePluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("gradle.$groupIdSufix")
open class KotlinMavenPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("maven.$groupIdSufix")
open class KotlinJPSPluginStatisticsTrigger(groupIdSufix: String) : KotlinStatisticsTrigger("jps.$groupIdSufix")
class KotlinVersionTrigger : KotlinGradlePluginStatisticsTrigger("kotlin_version")
class KotlinTargetTrigger : KotlinGradlePluginStatisticsTrigger("target")
class KotlinMavenTargetTrigger : KotlinMavenPluginStatisticsTrigger("target")
class KotlinJPSTargetTrigger : KotlinJPSPluginStatisticsTrigger("target")
class KotlinProjectLibraryUsageTrigger : KotlinGradlePluginStatisticsTrigger("library")
open class KotlinIdeActionTrigger(groupIdSufix: String? = null) : KotlinIdeStatisticsTrigger("action" + (if (groupIdSufix != null) ".$groupIdSufix" else ""))
class KotlinIdeRefactoringTrigger : KotlinIdeActionTrigger("refactoring")
class KotlinIdeNewFileTemplateTrigger : KotlinIdeStatisticsTrigger("newFileTempl")