Skip to content

Commit e4a03f1

Browse files
committed
added support for detecting debug events
1 parent c94f1ca commit e4a03f1

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

src/extension.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { ErrorsLineDecorator } from './decorators/errorsLineDecorator';
1414
import { HotspotMarkerDecorator } from './decorators/hotspotMarkerDecorator';
1515
import { EditorHelper } from './services/EditorHelper';
1616
import { CodeInspector } from './services/codeInspector';
17+
import { VsCodeDebugInstrumentation } from './instrumentation/vscodeInstrumentation';
1718

1819
export async function activate(context: vscode.ExtensionContext)
1920
{
@@ -46,6 +47,7 @@ export async function activate(context: vscode.ExtensionContext)
4647
context.extensionUri, editorHelper));
4748
context.subscriptions.push(new ErrorsLineDecorator(documentInfoProvider));
4849
context.subscriptions.push(new HotspotMarkerDecorator(documentInfoProvider));
50+
context.subscriptions.push(new VsCodeDebugInstrumentation(analyticsProvider));
4951

5052
}
5153

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { NONAME } from 'dns';
2+
import * as vscode from 'vscode';
3+
import { Disposable } from 'vscode-languageclient';
4+
import { AnalyticsProvider } from '../services/analyticsProvider';
5+
6+
export class VsCodeDebugInstrumentation implements vscode.Disposable{
7+
8+
private eventRegistration : Disposable;
9+
10+
constructor(private _analyticsProvider: AnalyticsProvider){
11+
12+
this.eventRegistration = vscode.debug.registerDebugAdapterTrackerFactory('*', {
13+
createDebugAdapterTracker(session: vscode.DebugSession) {
14+
return {
15+
onWillReceiveMessage: m => {
16+
},
17+
onDidSendMessage:
18+
m => {
19+
if (m.event ==='continued'){
20+
console.log('continued');
21+
_analyticsProvider.sendInsturmentationEvent(1);
22+
}
23+
if (m.event==='stopped'){
24+
_analyticsProvider.sendInsturmentationEvent(0);
25+
}
26+
}
27+
};
28+
}
29+
});
30+
31+
}
32+
dispose() {
33+
if (this.eventRegistration){
34+
this.eventRegistration.dispose();
35+
}
36+
}
37+
38+
39+
}
40+
41+

src/services/analyticsProvider.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { Logger } from "./logger";
66
import { Dictionary, momentJsDateParser } from "./utils";
77
import moment = require("moment");
88
import { integer } from "vscode-languageclient";
9+
import * as os from 'os';
10+
911

1012
export enum Impact
1113
{
@@ -349,6 +351,25 @@ export class AnalyticsProvider
349351
}
350352
return;
351353
}
354+
355+
public async sendInsturmentationEvent(event:integer): Promise<undefined>
356+
{
357+
try
358+
{
359+
const timestamp = Date.now().toString();
360+
const response = await this.send<undefined>(
361+
'POST',
362+
`/CodeAnalytics/instrumentation/event`,
363+
undefined,
364+
{event: event.toString(), machineName: os.hostname(),timestamp:timestamp });
365+
366+
return response;
367+
}
368+
catch(error){
369+
Logger.error('Failed to get error flow', error);
370+
}
371+
return;
372+
}
352373

353374

354375
private async send<TResponse>(method: string, relativePath: string, queryParams?: Dictionary<string, any>, body?: any): Promise<TResponse>

src/views/codeAnalytics/codeAnalyticsView.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ class CodeAnalyticsViewProvider implements vscode.WebviewViewProvider,vscode.Dis
131131
listViewItemsCreator.add("HighUsage", new HighUsageListViewItemsCreator(usageTemplate));
132132
listViewItemsCreator.add("SlowEndpoint", new SlowEndpointListViewItemsCreator(this._webViewUris));
133133

134-
135-
136134
const tabsList = [
137135
new InsightsViewTab(this._channel, this._analyticsProvider,this._webViewUris,listViewItemsCreator, _documentInfoProvider),
138136
new ErrorsViewTab(this._channel, this._analyticsProvider, this._documentInfoProvider, editorHelper, errorFlowParamDecorator, this._overlay, this._webviewViewProvider),

0 commit comments

Comments
 (0)