Skip to content

Commit e4c21dc

Browse files
authored
telemetry(feature dev): amazonq_bundleExtensionIgnored aws#5296
Follow up to: aws#5238 Problem: We (feature dev team) want to understand if there are any other relevant code file extension that should be added to the allowlist. Solution: Emit telemetry event to see the most common file extensions being ignored while bundling. Example log: 2024-07-11 10:35:18.127 [info] Amazon Q Developer Agent for software development Conversation ID: dea452f8-e685-4285-b350-900a06a40d51 2024-07-11 10:35:19.146 [info] ignoring file extension name: graphql, count: 82 2024-07-11 10:35:19.146 [info] ignoring file extension name: eslintignore, count: 1 2024-07-11 10:35:19.146 [info] ignoring file extension name: nvmrc, count: 1
1 parent f1a28e1 commit e4c21dc

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

packages/amazonq/test/unit/amazonqFeatureDev/util/files.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
ContentLengthError,
1111
maxRepoSizeBytes,
1212
} from 'aws-core-vscode/amazonqFeatureDev'
13-
import { createTestWorkspace } from 'aws-core-vscode/test'
13+
import { assertTelemetry, createTestWorkspace } from 'aws-core-vscode/test'
1414
import { fs, AmazonqCreateUpload, Metric } from 'aws-core-vscode/shared'
1515
import sinon from 'sinon'
1616

@@ -52,6 +52,7 @@ describe('file utils', () => {
5252
// checksum is not the same across different test executions because some unique random folder names are generated
5353
assert.strictEqual(result.zipFileChecksum.length, 44)
5454
assert.strictEqual(telemetry.repositorySize, 0)
55+
assertTelemetry('amazonq_bundleExtensionIgnored', { filenameExt: 'mp4', count: 1 })
5556
})
5657

5758
// Test the logic that allows the customer to modify root source folder

packages/core/src/amazonqFeatureDev/util/files.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { maxFileSizeBytes } from '../limits'
1414
import { createHash } from 'crypto'
1515
import { CurrentWsFolders } from '../types'
1616
import { ToolkitError } from '../../shared/errors'
17-
import { AmazonqCreateUpload, Metric } from '../../shared/telemetry/telemetry'
17+
import { AmazonqCreateUpload, Metric, telemetry as amznTelemetry } from '../../shared/telemetry/telemetry'
1818
import { TelemetryHelper } from './telemetryHelper'
1919
import { maxRepoSizeBytes } from '../constants'
2020
import { isCodeRelatedFile } from './fileExtension'
@@ -35,12 +35,23 @@ export async function prepareRepoData(
3535
const zip = new AdmZip()
3636

3737
let totalBytes = 0
38+
const ignoredExtensionMap = new Map<string, number>()
39+
3840
for (const file of files) {
3941
const fileSize = (await vscode.workspace.fs.stat(file.fileUri)).size
4042
const isCodeFile = isCodeRelatedFile(file.relativeFilePath)
4143

42-
// TODO: Follow up with telemetry events to record excluded files extensions
4344
if (fileSize >= maxFileSizeBytes || !isCodeFile) {
45+
if (!isCodeFile) {
46+
const re = /(?:\.([^.]+))?$/
47+
const extensionArray = re.exec(file.relativeFilePath)
48+
const extension = extensionArray?.length ? extensionArray[1] : undefined
49+
if (extension) {
50+
const currentCount = ignoredExtensionMap.get(extension)
51+
52+
ignoredExtensionMap.set(extension, (currentCount ?? 0) + 1)
53+
}
54+
}
4455
continue
4556
}
4657
totalBytes += fileSize
@@ -49,6 +60,20 @@ export async function prepareRepoData(
4960
zip.addLocalFile(file.fileUri.fsPath, zipFolderPath)
5061
}
5162

63+
const iterator = ignoredExtensionMap.entries()
64+
65+
for (let i = 0; i < ignoredExtensionMap.size; i++) {
66+
const [key, value] = iterator.next().value
67+
await amznTelemetry.amazonq_bundleExtensionIgnored.run(async (bundleSpan) => {
68+
const event = {
69+
filenameExt: key,
70+
count: value,
71+
}
72+
73+
bundleSpan.record(event)
74+
})
75+
}
76+
5277
telemetry.setRepositorySize(totalBytes)
5378
span.record({ amazonqRepositorySize: totalBytes })
5479

0 commit comments

Comments
 (0)