Skip to content

Commit 2c7811a

Browse files
Merge pull request #122 from DustinCampbell/server-telemetry
Add telemetry for OmniSharp server requests
2 parents 325a873 + 1e7d30a commit 2c7811a

File tree

3 files changed

+163
-64
lines changed

3 files changed

+163
-64
lines changed

src/coreclr-debug.ts

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ let _installLog: NodeJS.WritableStream;
1717
let _reporter: TelemetryReporter; // Telemetry reporter
1818
const _completionFileName: string = 'install.complete';
1919

20-
export function installCoreClrDebug(context: vscode.ExtensionContext) {
20+
export function installCoreClrDebug(context: vscode.ExtensionContext, reporter: TelemetryReporter) {
2121
_coreClrDebugDir = path.join(context.extensionPath, 'coreclr-debug');
2222
_debugAdapterDir = path.join(_coreClrDebugDir, 'debugAdapters');
2323

@@ -39,7 +39,7 @@ export function installCoreClrDebug(context: vscode.ExtensionContext) {
3939
return;
4040
}
4141

42-
initializeTelemetry(context);
42+
_reporter = reporter;
4343
_channel = vscode.window.createOutputChannel('coreclr-debug');
4444

4545
// Create our log file and override _channel.append to also outpu to the log
@@ -95,17 +95,6 @@ export function installCoreClrDebug(context: vscode.ExtensionContext) {
9595
});
9696
}
9797

98-
function initializeTelemetry(context: vscode.ExtensionContext) {
99-
// parse our own package.json into json
100-
const packageJson = JSON.parse(fs.readFileSync(path.join(context.extensionPath, 'package.json')).toString());
101-
102-
let extensionId = packageJson["publisher"] + "." + packageJson["name"];
103-
let extensionVersion = packageJson["version"];
104-
let aiKey = packageJson.contributes.debuggers[0]["aiKey"];
105-
106-
_reporter = new TelemetryReporter(extensionId, extensionVersion, aiKey);
107-
}
108-
10998
function logTelemetry(eventName: string, properties?: {[prop: string]: string}) {
11099
if (_reporter)
111100
{

src/omnisharpMain.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,23 @@ import reportStatus from './features/omnisharpStatus';
2525
import {installCoreClrDebug} from './coreclr-debug';
2626
import {promptToAddBuildTaskIfNecessary} from './tasks';
2727
import * as vscode from 'vscode';
28+
import TelemetryReporter from 'vscode-extension-telemetry';
2829

2930
export function activate(context: vscode.ExtensionContext): any {
31+
32+
const extensionId = 'ms-vscode.csharp';
33+
const extension = vscode.extensions.getExtension(extensionId);
34+
const extensionVersion = extension.packageJSON.version;
35+
const aiKey = extension.packageJSON.contributes.debuggers[0].aiKey;
36+
37+
const reporter = new TelemetryReporter(extensionId, extensionVersion, aiKey);
3038

3139
const _selector: vscode.DocumentSelector = {
3240
language: 'csharp',
3341
scheme: 'file' // only files from disk
3442
};
3543

36-
const server = new StdioOmnisharpServer();
44+
const server = new StdioOmnisharpServer(reporter);
3745
const advisor = new Advisor(server); // create before server is started
3846
const disposables: vscode.Disposable[] = [];
3947
const localDisposables: vscode.Disposable[] = [];
@@ -74,14 +82,15 @@ export function activate(context: vscode.ExtensionContext): any {
7482
// stop server on deactivate
7583
disposables.push(new vscode.Disposable(() => {
7684
advisor.dispose();
85+
server.reportAndClearTelemetry();
7786
server.stop();
7887
}));
7988

8089
// Check to see if there is a tasks.json with a "build" task and prompt the user to add it if missing.
8190
promptToAddBuildTaskIfNecessary();
8291

8392
// install coreclr-debug
84-
installCoreClrDebug(context);
93+
installCoreClrDebug(context, reporter);
8594

8695
context.subscriptions.push(...disposables);
8796
}

0 commit comments

Comments
 (0)