Skip to content

Commit 0a044e1

Browse files
chore: enforce -Error suffix on sendTelemetryError event names (#1941)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 68ef665 commit 0a044e1

6 files changed

Lines changed: 19 additions & 8 deletions

File tree

.eslintrc.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,17 @@
1717
"curly": "warn",
1818
"eqeqeq": "warn",
1919
"no-throw-literal": "warn",
20-
"indent": "off"
20+
"indent": "off",
21+
"no-restricted-syntax": [
22+
"error",
23+
{
24+
"selector": "CallExpression[callee.property.name='sendTelemetryError'][arguments.0.type='Literal'][arguments.0.value!=/Error$/]",
25+
"message": "First argument to sendTelemetryError must be an event name ending in 'Error' (project convention — e.g. 'compileNodePythonError', 'extensionActivationError'). Rename the event or use a TelemetryEvents enum entry that ends in 'Error'."
26+
},
27+
{
28+
"selector": "CallExpression[callee.property.name='sendTelemetryError'][arguments.0.object.name='TelemetryEvents'][arguments.0.property.value!=/Error$/]",
29+
"message": "TelemetryEvents key passed to sendTelemetryError must end in 'Error' (project convention). Rename the enum entry in src/telemetry/events.ts and all call sites."
30+
}
31+
]
2132
}
2233
}

src/document_formatting_edit_provider/dbtDocumentFormattingEditProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class DbtDocumentFormattingEditProvider implements DocumentFormattingEdit
8888
return this.processDiffOutput(document, (e as Error).message);
8989
} catch (error) {
9090
this.telemetry.sendTelemetryError(
91-
"formatDbtModelApplyDiffFailed",
91+
"formatDbtModelApplyDiffError",
9292
error,
9393
);
9494
window.showErrorMessage(
@@ -101,7 +101,7 @@ export class DbtDocumentFormattingEditProvider implements DocumentFormattingEdit
101101
}
102102
}
103103
} catch (error) {
104-
this.telemetry.sendTelemetryError("formatDbtModelApplyDiffFailed", error);
104+
this.telemetry.sendTelemetryError("formatDbtModelApplyDiffError", error);
105105
window.showErrorMessage(
106106
extendErrorWithSupportLinks(
107107
'Could not run sqlfmt. If sqlfmt is installed (e.g. via `uv tool install "shandy-sqlfmt[jinjafmt]"` or `pipx install "shandy-sqlfmt[jinjafmt]"`), ' +

src/services/dbtLineageService.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ export class DbtLineageService {
484484
),
485485
);
486486
this.telemetry.sendTelemetryError(
487-
"columnLevelLineageRequestTimeout",
487+
"columnLevelLineageRequestTimeoutError",
488488
error,
489489
);
490490
return;

src/telemetry/events.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export enum TelemetryEvents {
5959
"Notebook/LaunchError" = "Notebook/LaunchError",
6060
"Notebook/StoreDataInKernelError" = "Notebook/StoreDataInKernelError",
6161
"QueryHistory/Disabled" = "QueryHistory/Disabled",
62-
"QueryHistory/Cleared" = "QueryHistory/Cleared",
62+
"QueryHistory/ClearError" = "QueryHistory/ClearError",
6363
"CteProfiler/Profile" = "CteProfiler/Profile",
6464
"CteProfiler/Cancel" = "CteProfiler/Cancel",
6565
"MCP/ToolCall" = "MCP/ToolCall",

src/test/suite/telemetryService.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ describe("TelemetryService.sendTelemetryError surfaces diagnostic fields", () =>
7777

7878
it("forwards error.name as a top-level property", () => {
7979
const err = new TypeError("Cannot destructure property 'returnResult'");
80-
telemetry.sendTelemetryError("unhandlederror", err);
80+
telemetry.sendTelemetryError("unhandledRejectionError", err);
8181
expect(captureProperties().error_name).toBe("TypeError");
8282
});
8383

8484
it("forwards error.message as a top-level property (survives URL redaction)", () => {
8585
const err = new Error("Channel closed");
86-
telemetry.sendTelemetryError("unhandlederror", err);
86+
telemetry.sendTelemetryError("unhandledRejectionError", err);
8787
expect(captureProperties().error_message).toBe("Channel closed");
8888
});
8989

src/webview_provider/queryResultPanel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ export class QueryResultPanel extends AltimateWebviewProvider {
412412
// to disable query history and retry
413413
case InboundCommand.ClearQueryHistory:
414414
this.telemetry.sendTelemetryError(
415-
TelemetryEvents["QueryHistory/Cleared"],
415+
TelemetryEvents["QueryHistory/ClearError"],
416416
message.error,
417417
);
418418
this._queryHistory = [];

0 commit comments

Comments
 (0)