Skip to content

Commit 69f9e39

Browse files
committed
updated decorators
1 parent 9fe0489 commit 69f9e39

File tree

4 files changed

+71
-32
lines changed

4 files changed

+71
-32
lines changed

src/analyticsCodeLens.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as vscode from 'vscode';
2-
import { Settings } from './settings';
3-
import { DocumentInfo, DocumentInfoProvider, MethodInfo } from './services/documentInfoProvider';
4-
import { CodeAnalyticsView } from './views/codeAnalytics/codeAnalyticsView';
5-
import { WorkspaceState } from './state';
6-
import { CodeObjectInsight, InsightImportance } from './views/codeAnalytics/InsightListView/IInsightListViewItemsCreator';
7-
import { CodeObjectLocationInfo } from './services/languages/extractors';
82
import { UsageStatusResults } from './services/analyticsProvider';
93
import { CodeInspector } from './services/codeInspector';
4+
import { DocumentInfo, DocumentInfoProvider, MethodInfo } from './services/documentInfoProvider';
5+
import { CodeObjectLocationInfo } from './services/languages/extractors';
106
import { Token } from './services/languages/tokens';
7+
import { Settings } from './settings';
8+
import { WorkspaceState } from './state';
9+
import { CodeAnalyticsView } from './views/codeAnalytics/codeAnalyticsView';
10+
import { CodeObjectInsight, InsightImportance } from './views/codeAnalytics/InsightListView/IInsightListViewItemsCreator';
1111

1212
export interface CodeLensData{
1313

@@ -365,8 +365,8 @@ class CodelensProvider implements vscode.CodeLensProvider<vscode.CodeLens>
365365

366366
}
367367

368-
const funcLenses = await this.getCodeLensesForFunctions(document,documentInfo,token);
369-
codelens.push(...funcLenses);
368+
//const funcLenses = await this.getCodeLensesForFunctions(document,documentInfo,token);
369+
// codelens.push(...funcLenses);
370370

371371
return codelens;
372372
}

src/extension.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { WorkspaceState } from "./state";
2121
import { CodeAnalyticsView } from "./views/codeAnalytics/codeAnalyticsView";
2222
import { ErrorsLineDecorator } from "./views/codeAnalytics/decorators/errorsLineDecorator";
2323
import { HotspotMarkerDecorator } from "./views/codeAnalytics/decorators/hotspotMarkerDecorator";
24+
import { PerformanceDecorator } from "./views/codeAnalytics/decorators/performanceDecorator";
2425
import { EnvSelectStatusBar } from "./views/codeAnalytics/StatusBar/envSelectStatusBar";
2526
import { InsightsStatusBar } from "./views/codeAnalytics/StatusBar/insightsStatusBar";
2627
import { RecentActivityViewProvider } from "./views/RecentActivity/RecentActivityViewProvider";
@@ -58,7 +59,7 @@ export async function activate(context: vscode.ExtensionContext) {
5859
const editorHelper = new EditorHelper(sourceControl, documentInfoProvider);
5960
const codeLensProvider = new AnalyticsCodeLens(
6061
documentInfoProvider,
61-
workspaceState
62+
workspaceState, codeInspector
6263
);
6364
const spanLinkResolver = new SpanLinkResolver(
6465
symbolProvider,
@@ -85,7 +86,7 @@ export async function activate(context: vscode.ExtensionContext) {
8586
context.subscriptions.push(codeLensProvider);
8687
//context.subscriptions.push(new ContextView(analyticsProvider, context.extensionUri));
8788
context.subscriptions.push(
88-
new MethodCallErrorTooltip(documentInfoProvider, codeInspector)
89+
new MethodCallErrorTooltip(documentInfoProvider, codeInspector,workspaceState)
8990
);
9091
context.subscriptions.push(sourceControl);
9192
context.subscriptions.push(documentInfoProvider);
@@ -118,6 +119,8 @@ export async function activate(context: vscode.ExtensionContext) {
118119
)
119120
);
120121
context.subscriptions.push(new ErrorsLineDecorator(documentInfoProvider));
122+
context.subscriptions.push(new PerformanceDecorator(documentInfoProvider,workspaceState,codeInspector));
123+
121124
context.subscriptions.push(
122125
new HotspotMarkerDecorator(documentInfoProvider)
123126
);

src/views/codeAnalytics/decorators/performanceDecorator.ts

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { nextTick } from 'process';
21
import * as vscode from 'vscode';
32
import { CodeInspector } from '../../../services/codeInspector';
43
import { DocumentInfo, DocumentInfoProvider, LineInfo, MethodInfo } from '../../../services/documentInfoProvider';
@@ -42,7 +41,7 @@ export class PerformanceDecorator implements vscode.Disposable
4241
this._disposables.push(vscode.commands.registerCommand(PerformanceDecorator.Commands.Hide, this.onHide.bind(this)));
4342
}
4443

45-
private getDisplayDuration(totalDuration : number):string{
44+
private getDisplayDuration(totalDuration : number):string{
4645

4746
let rawValue = (totalDuration / 1000000);
4847
let unit = "ms";
@@ -71,16 +70,35 @@ private getTotalDurationFromInsights(docInfo:DocumentInfo, method:MethodInfo) :
7170
return;
7271
}
7372

74-
const totalDuration = percentileInfo.filter(x=>x.percentile==0.5).map(x=>x.currentDuration.raw)
73+
const p50 = percentileInfo.filter(x=>x.percentile==0.5).map(x=>x.currentDuration.raw)
7574
.reduce((acc, val)=>acc + val,0);
7675

77-
if (totalDuration===0){
76+
if (p50===0){
7877
return;
7978
}
8079

81-
return totalDuration;
80+
return p50;
8281
}
8382

83+
private getPerformanceIssues(docInfo:DocumentInfo, method:MethodInfo) : string{
84+
85+
const insights = docInfo.insights.forMethod(method,this._workspaceState.environment);
86+
87+
if (insights.length==0){
88+
return "";
89+
}
90+
const criticcalInsights = insights.filter(x=>x.importance<4)
91+
.flatMap(x=>x.decorators).map(x=>x.title).join(" | ");
92+
93+
if (!criticcalInsights){
94+
return "";
95+
}
96+
97+
98+
return criticcalInsights;
99+
}
100+
101+
84102
private async discoverIndirectDurationRecursive( document: vscode.TextDocument,
85103
docInfo:DocumentInfo,
86104
methodInfo: MethodInfo,
@@ -152,6 +170,8 @@ private getTotalDurationFromInsights(docInfo:DocumentInfo, method:MethodInfo) :
152170

153171
let totalDuration : undefined | number = undefined;
154172

173+
let issues: string = "";
174+
155175
if (func.text === methodInfo.name && func.range === methodInfo.nameRange){
156176
totalDuration= this.getTotalDurationFromInsights(documentInfo,methodInfo);
157177
}
@@ -182,6 +202,7 @@ private getTotalDurationFromInsights(docInfo:DocumentInfo, method:MethodInfo) :
182202
continue;
183203
}
184204
totalDuration = this.getTotalDurationFromInsights(remoteDoc, remoteMethodInfo);
205+
issues = this.getPerformanceIssues(remoteDoc, remoteMethodInfo);
185206

186207
if (!totalDuration){
187208

@@ -214,7 +235,9 @@ private getTotalDurationFromInsights(docInfo:DocumentInfo, method:MethodInfo) :
214235

215236
const textLine = document.lineAt(func.range.start.line);
216237

217-
this.addPerformanceDecorator(totalDuration, decorators, new vscode.Range(textLine.range.end, textLine.range.end));
238+
issues
239+
240+
this.addPerformanceDecorator(totalDuration, decorators, new vscode.Range(textLine.range.end, textLine.range.end),issues);
218241

219242
}
220243

@@ -268,14 +291,21 @@ private getTotalDurationFromInsights(docInfo:DocumentInfo, method:MethodInfo) :
268291
//editor.setDecorations(this._textDecorationType, textDecorationOptions);
269292
}
270293

271-
private addPerformanceDecorator(totalDuration: number | undefined, decorators: vscode.DecorationOptions[], range: vscode.Range) {
294+
private addPerformanceDecorator(totalDuration: number | undefined, decorators: vscode.DecorationOptions[], range: vscode.Range,issues:string) {
272295
if (totalDuration) {
296+
let color = 'gray';
297+
if (issues){
298+
299+
color='orange';
300+
}
301+
const duration = this.getDisplayDuration(totalDuration);
273302
decorators.push({
274303
hoverMessage: "",
275304
range: range,
276305
renderOptions: {
277306
after: {
278-
contentText: this.getDisplayDuration(totalDuration)
307+
contentText: `${issues} ${duration}`,
308+
color: color
279309
}
280310
}
281311
});

src/views/codeAnalytics/insightsViewTab.ts

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
import * as vscode from "vscode";
22
import {
33
AnalyticsProvider,
4-
UsageStatusResults,
4+
UsageStatusResults
55
} from "../../services/analyticsProvider";
6-
import { UiMessage } from "../../views-ui/codeAnalytics/contracts";
7-
import { WebviewChannel, WebViewUris } from "../webViewUtils";
86
import { CodeObjectInfo } from "../../services/codeObject";
9-
import { HtmlHelper, ICodeAnalyticsViewTab } from "./common";
10-
import { Logger } from "../../services/logger";
11-
import { CodeObjectInsight, IInsightListViewItemsCreator } from "./InsightListView/IInsightListViewItemsCreator";
12-
import { ListViewRender } from "../ListView/ListViewRender";
7+
import { ScanningStatus } from "../../services/DocumentInfoCache";
138
import { DocumentInfoProvider } from "../../services/documentInfoProvider";
14-
import { ICodeObjectScopeGroupCreator } from "./CodeObjectGroups/ICodeObjectScopeGroupCreator";
15-
import { CodeObjectGroupDiscovery } from "./CodeObjectGroups/CodeObjectGroupDiscovery";
9+
import { Logger } from "../../services/logger";
10+
import { WorkspaceState } from "../../state";
11+
import { UiMessage } from "../../views-ui/codeAnalytics/contracts";
1612
import { EmptyGroupItemTemplate } from "../ListView/EmptyGroupItemTemplate";
1713
import { InsightItemGroupRendererFactory } from "../ListView/IListViewItem";
18-
import { CodeObjectGroupEnvironments } from "./CodeObjectGroups/CodeObjectGroupEnvUsage";
19-
import { NoCodeObjectMessage } from "./AdminInsights/noCodeObjectMessage";
14+
import { ListViewRender } from "../ListView/ListViewRender";
2015
import { HandleDigmaBackendExceptions } from "../utils/handleDigmaBackendExceptions";
21-
import { WorkspaceState } from "../../state";
22-
import { NoEnvironmentSelectedMessage } from "./AdminInsights/noEnvironmentSelectedMessage";
16+
import { WebviewChannel, WebViewUris } from "../webViewUtils";
2317
import { DuplicateSpanInsight } from "./AdminInsights/adminInsights";
24-
import { ScanningStatus } from "../../services/DocumentInfoCache";
18+
import { NoCodeObjectMessage } from "./AdminInsights/noCodeObjectMessage";
19+
import { NoEnvironmentSelectedMessage } from "./AdminInsights/noEnvironmentSelectedMessage";
20+
import { CodeObjectGroupDiscovery } from "./CodeObjectGroups/CodeObjectGroupDiscovery";
21+
import { CodeObjectGroupEnvironments } from "./CodeObjectGroups/CodeObjectGroupEnvUsage";
22+
import { ICodeObjectScopeGroupCreator } from "./CodeObjectGroups/ICodeObjectScopeGroupCreator";
23+
import { HtmlHelper, ICodeAnalyticsViewTab } from "./common";
24+
import { PerformanceDecorator } from "./decorators/performanceDecorator";
25+
import { CodeObjectInsight, IInsightListViewItemsCreator } from "./InsightListView/IInsightListViewItemsCreator";
2526

2627

2728

@@ -173,6 +174,8 @@ export class InsightsViewTab implements ICodeAnalyticsViewTab
173174
this.refreshListViewRequested(codeObject);
174175

175176
}
177+
vscode.commands.executeCommand(PerformanceDecorator.Commands.Show);
178+
176179
}
177180

178181
public onUpdated(codeObject: CodeObjectInfo): void {
@@ -183,6 +186,9 @@ export class InsightsViewTab implements ICodeAnalyticsViewTab
183186
}
184187

185188
public onDeactivate(): void {
189+
190+
vscode.commands.executeCommand(PerformanceDecorator.Commands.Hide);
191+
186192
}
187193

188194
private refreshInitializationStatus(status: ScanningStatus) {

0 commit comments

Comments
 (0)