| /*--------------------------------------------------------- |
| * Copyright (C) Microsoft Corporation. All rights reserved. |
| * Licensed under the MIT License. See License.txt in the project root for license information. |
| *--------------------------------------------------------*/ |
| |
| import vscode = require('vscode'); |
| import TelemetryReporter from 'vscode-extension-telemetry'; |
| |
| export const extensionId: string = 'ms-vscode.Go'; |
| const extension = vscode.extensions.getExtension(extensionId); |
| const extensionVersion: string = extension ? extension.packageJSON.version : ''; |
| const aiKey: string = 'AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217'; |
| |
| export function sendTelemetryEventForModulesUsage() { |
| /* __GDPR__ |
| "modules" : {} |
| */ |
| sendTelemetryEvent('modules'); |
| } |
| |
| export function sendTelemetryEventForAddImportCmd(arg: { importPath: string; from: string }) { |
| /* __GDPR__ |
| "addImportCmd" : { |
| "from" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } |
| } |
| */ |
| sendTelemetryEvent('addImportCmd', { from: (arg && arg.from) || 'cmd' }); |
| } |
| |
| export function sendTelemetryEventForGopkgs(timeTaken: number) { |
| /* __GDPR__ |
| "gopkgs" : { |
| "tool" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "timeTaken": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } |
| } |
| */ |
| sendTelemetryEvent('gopkgs', {}, { timeTaken }); |
| } |
| |
| export function sendTelemetryEventForFormatting(formatTool: string, timeTaken: number) { |
| /* __GDPR__ |
| "format" : { |
| "tool" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "timeTaken": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true } |
| } |
| */ |
| sendTelemetryEvent('format', { tool: formatTool }, { timeTaken }); |
| } |
| |
| export function sendTelemetryEventForDebugConfiguration(debugConfiguration: vscode.DebugConfiguration) { |
| /* __GDPR__ |
| "debugConfiguration" : { |
| "request" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "mode" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "useApiV<NUMBER>": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "apiVersion": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "stopOnEntry": { "classification": "SystemMetaData", "purpose": "FeatureInsight" } |
| } |
| */ |
| sendTelemetryEvent('debugConfiguration', { |
| request: debugConfiguration.request, |
| mode: debugConfiguration.mode, |
| useApiV1: debugConfiguration.useApiV1, |
| apiVersion: debugConfiguration.apiVersion, |
| stopOnEntry: debugConfiguration.stopOnEntry |
| }); |
| } |
| |
| export function sendTelemetryEventForConfig(goConfig: vscode.WorkspaceConfiguration) { |
| /* __GDPR__ |
| "goConfig" : { |
| "buildOnSave" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "buildFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "buildTags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "formatTool": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "formatFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "generateTestsFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "lintOnSave": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "lintFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "lintTool": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "vetOnSave": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "vetFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "testOnSave": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "testFlags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "coverOnSave": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "coverOnTestPackage": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "coverageDecorator": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "coverageOptions": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "gopath": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "goroot": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "inferGopath": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "toolsGopath": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "gocodeAutoBuild": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "gocodePackageLookupMode": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "useCodeSnippetsOnFunctionSuggest": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "useCodeSnippetsOnFunctionSuggestWithoutType": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "autocompleteUnimportedPackages": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "docsTool": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "useLanguageServer": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "languageServerExperimentalFeatures": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "includeImports": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "addTags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "removeTags": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "editorContextMenuCommands": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "liveErrors": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "codeLens": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }, |
| "alternateTools": { "classification": "CustomerContent", "purpose": "FeatureInsight" }, |
| "useGoProxyToCheckForToolUpdates": { "classification": "CustomerContent", "purpose": "FeatureInsight" } |
| } |
| */ |
| sendTelemetryEvent('goConfig', { |
| buildOnSave: goConfig['buildOnSave'] + '', |
| buildFlags: goConfig['buildFlags'], |
| buildTags: goConfig['buildTags'], |
| formatOnSave: goConfig['formatOnSave'] + '', |
| formatTool: goConfig['formatTool'], |
| formatFlags: goConfig['formatFlags'], |
| lintOnSave: goConfig['lintOnSave'] + '', |
| lintFlags: goConfig['lintFlags'], |
| lintTool: goConfig['lintTool'], |
| generateTestsFlags: goConfig['generateTestsFlags'], |
| vetOnSave: goConfig['vetOnSave'] + '', |
| vetFlags: goConfig['vetFlags'], |
| testOnSave: goConfig['testOnSave'] + '', |
| testFlags: goConfig['testFlags'], |
| coverOnSave: goConfig['coverOnSave'] + '', |
| coverOnTestPackage: goConfig['coverOnTestPackage'] + '', |
| coverageDecorator: goConfig['coverageDecorator'], |
| coverageOptions: goConfig['coverageOptions'], |
| gopath: goConfig['gopath'] ? 'set' : '', |
| goroot: goConfig['goroot'] ? 'set' : '', |
| inferGopath: goConfig['inferGopath'] + '', |
| toolsGopath: goConfig['toolsGopath'] ? 'set' : '', |
| gocodeAutoBuild: goConfig['gocodeAutoBuild'] + '', |
| gocodePackageLookupMode: goConfig['gocodePackageLookupMode'] + '', |
| useCodeSnippetsOnFunctionSuggest: goConfig['useCodeSnippetsOnFunctionSuggest'] + '', |
| useCodeSnippetsOnFunctionSuggestWithoutType: goConfig['useCodeSnippetsOnFunctionSuggestWithoutType'] + '', |
| autocompleteUnimportedPackages: goConfig['autocompleteUnimportedPackages'] + '', |
| docsTool: goConfig['docsTool'], |
| useLanguageServer: goConfig['useLanguageServer'] + '', |
| languageServerExperimentalFeatures: JSON.stringify(goConfig['languageServerExperimentalFeatures']), |
| includeImports: goConfig['gotoSymbol'] && goConfig['gotoSymbol']['includeImports'] + '', |
| addTags: JSON.stringify(goConfig['addTags']), |
| removeTags: JSON.stringify(goConfig['removeTags']), |
| editorContextMenuCommands: JSON.stringify(goConfig['editorContextMenuCommands']), |
| liveErrors: JSON.stringify(goConfig['liveErrors']), |
| codeLens: JSON.stringify(goConfig['enableCodeLens']), |
| alternateTools: JSON.stringify(goConfig['alternateTools']), |
| useGoProxyToCheckForToolUpdates: goConfig['useGoProxyToCheckForToolUpdates'] + '' |
| }); |
| } |
| |
| export function sendTelemetryEventForKillingProcess(msg: any, matches: any) { |
| /* __GDPR__ |
| "errorKillingProcess" : { |
| "message" : { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" }, |
| "stack": { "classification": "CallstackOrException", "purpose": "PerformanceAndHealth" } |
| } |
| */ |
| sendTelemetryEvent('errorKillingProcess', { message: msg, stack: matches }); |
| } |
| |
| export function sendTelemetryEventForGoVersion(goVersion: string) { |
| /* __GDPR__ |
| "getGoVersion" : { |
| "version" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" } |
| } |
| */ |
| sendTelemetryEvent('getGoVersion', { version: `${goVersion}` }); |
| } |
| |
| export function disposeTelemetryReporter(): Promise<any> { |
| if (telemtryReporter) { |
| return telemtryReporter.dispose(); |
| } |
| return Promise.resolve(null); |
| } |
| |
| let telemtryReporter: TelemetryReporter; |
| |
| function sendTelemetryEvent( |
| eventName: string, |
| properties?: { [key: string]: string }, |
| measures?: { [key: string]: number } |
| ): void { |
| if (!aiKey) { |
| return; // cannot enable telemetry |
| } |
| telemtryReporter = telemtryReporter |
| ? telemtryReporter |
| : new TelemetryReporter(extensionId, extensionVersion, aiKey); |
| telemtryReporter.sendTelemetryEvent(eventName, properties, measures); |
| } |