add telemetry to send usage data (#45)

* periodically query usage data

* add back license

* increase usage data query interval to 60s

* query usage data when terminating debug session
This commit is contained in:
Yan Zhang 2017-09-25 16:48:07 +08:00 committed by GitHub
parent 5397cb6921
commit 6df82bca9c
3 changed files with 49 additions and 16 deletions

View File

@ -5,6 +5,7 @@
"version": "0.1.0",
"publisher": "vscjava",
"preview": true,
"aiKey": "67d4461e-ccba-418e-8082-1bd0acfe8516",
"icon": "logo.png",
"keywords": [
"java",
@ -13,7 +14,7 @@
"debugger"
],
"engines": {
"vscode": "^1.14.0"
"vscode": "^1.15.0"
},
"categories": [
"Debuggers"
@ -199,5 +200,8 @@
"tslint": "^5.7.0",
"typescript": "^2.0.3",
"vscode": "^1.1.5"
},
"dependencies": {
"vscode-extension-telemetry": "0.0.8"
}
}

View File

@ -1,14 +1,16 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
export const VSCODE_STARTDEBUG = "vscode.startDebug";
export const VSCODE_ADD_DEBUGCONFIGURATION = "debug.addConfiguration";
export const JAVA_START_DEBUGSESSION = "vscode.java.startDebugSession";
export const JAVA_RESOLVE_CLASSPATH = "vscode.java.resolveClasspath";
export const JAVA_BUILD_WORKSPACE = "vscode.java.buildWorkspace";
export const JAVA_EXECUTE_WORKSPACE_COMMAND = "java.execute.workspaceCommand";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
export const VSCODE_STARTDEBUG = "vscode.startDebug";
export const VSCODE_ADD_DEBUGCONFIGURATION = "debug.addConfiguration";
export const JAVA_START_DEBUGSESSION = "vscode.java.startDebugSession";
export const JAVA_RESOLVE_CLASSPATH = "vscode.java.resolveClasspath";
export const JAVA_BUILD_WORKSPACE = "vscode.java.buildWorkspace";
export const JAVA_EXECUTE_WORKSPACE_COMMAND = "java.execute.workspaceCommand";
export const JAVA_FETCH_USAGE_DATA = "vscode.java.fetchUsageData";

View File

@ -4,6 +4,7 @@
import * as path from "path";
import * as vscode from "vscode";
import * as commands from "./commands";
import TelemetryReporter from "vscode-extension-telemetry";
const status: any = {};
@ -61,6 +62,28 @@ export function activate(context: vscode.ExtensionContext) {
}
}
});
// Telemetry.
const extensionPackage = require(context.asAbsolutePath("./package.json"));
if (extensionPackage) {
const packageInfo = {
name: extensionPackage.name,
version: extensionPackage.version,
aiKey: extensionPackage.aiKey,
};
if (packageInfo.aiKey) {
const reporter = new TelemetryReporter(packageInfo.name, packageInfo.version, packageInfo.aiKey);
vscode.debug.onDidTerminateDebugSession(() => {
fetchUsageData().then(ret => {
if (Array.isArray(ret) && ret.length) {
ret.forEach(entry => {
reporter.sendTelemetryEvent("usageData", entry, {});
});
}
});
});
}
}
}
// this method is called when your extension is deactivated
@ -75,6 +98,10 @@ function resolveClasspath(mainClass, projectName) {
return executeJavaLanguageServerCommand(commands.JAVA_RESOLVE_CLASSPATH, mainClass, projectName);
}
function fetchUsageData() {
return executeJavaLanguageServerCommand(commands.JAVA_FETCH_USAGE_DATA);
}
function executeJavaLanguageServerCommand(...rest) {
return vscode.commands.executeCommand(commands.JAVA_EXECUTE_WORKSPACE_COMMAND, ...rest);
}
}