@@ -24,6 +24,8 @@ import { codeScanState, CodeScanTelemetryEntry } from '../models/model'
24
24
import { openSettings } from '../../shared/settings'
25
25
import { ok , viewSettings } from '../../shared/localizedText'
26
26
import { statSync } from 'fs'
27
+ import { getFileExt } from '../util/commonUtil'
28
+ import { getDirSize } from '../../shared/filesystemUtilities'
27
29
28
30
const performance = globalThis . performance ?? require ( 'perf_hooks' ) . performance
29
31
@@ -168,10 +170,26 @@ export async function startSecurityScan(
168
170
await vscode . commands . executeCommand ( 'aws.codeWhisperer.refresh' )
169
171
codeScanTelemetryEntry . duration = performance . now ( ) - codeScanStartTime
170
172
codeScanTelemetryEntry . codeScanServiceInvocationsDuration = performance . now ( ) - serviceInvocationStartTime
171
- telemetry . recordCodewhispererSecurityScan ( codeScanTelemetryEntry )
173
+ emitCodeScanTelemetry ( editor , codeScanTelemetryEntry )
172
174
}
173
175
}
174
176
177
+ export async function emitCodeScanTelemetry ( editor : vscode . TextEditor , codeScanTelemetryEntry : CodeScanTelemetryEntry ) {
178
+ const uri = editor . document . uri
179
+ const workspaceFolder = vscode . workspace . getWorkspaceFolder ( uri )
180
+ const fileExt = getFileExt ( editor . document . languageId )
181
+ if ( workspaceFolder !== undefined && fileExt !== undefined ) {
182
+ const projectSize = await getDirSize (
183
+ workspaceFolder . uri . fsPath ,
184
+ performance . now ( ) ,
185
+ CodeWhispererConstants . projectSizeCalculateTimeoutSeconds * 1000 ,
186
+ fileExt
187
+ )
188
+ codeScanTelemetryEntry . codewhispererCodeScanProjectBytes = projectSize
189
+ }
190
+ telemetry . recordCodewhispererSecurityScan ( codeScanTelemetryEntry )
191
+ }
192
+
175
193
export function errorPromptHelper ( error : Error ) {
176
194
if ( error instanceof JavaDependencyGraphError ) {
177
195
vscode . window
0 commit comments