diff --git a/app/client/src/plugins/Linting/utils/getLintingErrors.ts b/app/client/src/plugins/Linting/utils/getLintingErrors.ts index 877a389984e7..f95c88b1f06e 100644 --- a/app/client/src/plugins/Linting/utils/getLintingErrors.ts +++ b/app/client/src/plugins/Linting/utils/getLintingErrors.ts @@ -36,6 +36,8 @@ import setters from "workers/Evaluation/setters"; import { isMemberExpressionNode } from "@shared/ast/src"; import { generate } from "astring"; import getInvalidModuleInputsError from "ee/plugins/Linting/utils/getInvalidModuleInputsError"; +import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { objectKeys } from "@appsmith/utils"; const EvaluationScriptPositions: Record = {}; @@ -65,7 +67,7 @@ function generateLintingGlobalData(data: Record) { ); libAccessors.forEach((accessor) => (globalData[accessor] = true)); // Add all supported web apis - Object.keys(SUPPORTED_WEB_APIS).forEach( + objectKeys(SUPPORTED_WEB_APIS).forEach( (apiName) => (globalData[apiName] = true), ); return globalData; @@ -185,7 +187,16 @@ export default function getLintingErrors({ const lintingGlobalData = generateLintingGlobalData(data); const lintingOptions = lintOptions(lintingGlobalData); - jshint(script, lintingOptions); + startAndEndSpanForFn( + "Linter", + // adding some metrics to compare the performance changes with eslint + { + linter: "JSHint", + linesOfCodeLinted: originalBinding.split("\n").length, + codeSizeInChars: originalBinding.length, + }, + () => jshint(script, lintingOptions), + ); const sanitizedJSHintErrors = sanitizeJSHintErrors(jshint.errors, scriptPos); const jshintErrors: LintError[] = sanitizedJSHintErrors.map((lintError) => convertJsHintErrorToAppsmithLintError(