Skip to content

Commit fe588c5

Browse files
authored
fix(amazonq): tf scans mapped to wrong language #4975
Problem: Projects with terraform files fail with `Improperly formed request` error. This is happening due to `tf` incorrectly mapped to `hcl`. Solution: The reverse map lookup function `getLanguageFromFileExtension` is unreliable because there could be duplicate values. Use `getLanguageContext` instead.
1 parent 0da289c commit fe588c5

File tree

3 files changed

+8
-13
lines changed

3 files changed

+8
-13
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Bug Fix",
3+
"description": "Security Scan: Fixes an issue where scans fail for projects with Terraform files"
4+
}

packages/core/src/codewhisperer/util/runtimeLanguageContext.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -180,17 +180,6 @@ export class RuntimeLanguageContext {
180180
return { language: this.normalizeLanguage(languageId) ?? 'plaintext' }
181181
}
182182

183-
/**
184-
*
185-
* @param fileExtension File extension i.e. py, js, java
186-
* @returns The corresponding {@link CodewhispererLanguage} of the file extension
187-
*/
188-
public getLanguageFromFileExtension(fileExtension: string): CodewhispererLanguage | undefined {
189-
return [...this.supportedLanguageExtensionMap.entries()].find(
190-
([, extension]) => extension === fileExtension
191-
)?.[0]
192-
}
193-
194183
/**
195184
* Mapping the field ProgrammingLanguage of codewhisperer generateRecommendationRequest | listRecommendationRequest to
196185
* its Codewhisperer runtime language e.g. jsx -> typescript, typescript -> typescript

packages/core/src/codewhisperer/util/zipUtil.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,12 @@ export class ZipUtil {
152152
this._totalSize += fileSize
153153
this._totalLines += fileContent.split(ZipConstants.newlineRegex).length
154154

155-
const language = runtimeLanguageContext.getLanguageFromFileExtension(
155+
const document = await vscode.workspace.openTextDocument(file.fileUri)
156+
const { language } = runtimeLanguageContext.getLanguageContext(
157+
document.languageId,
156158
path.extname(file.fileUri.fsPath).slice(1)
157159
)
158-
if (language) {
160+
if (language && language !== 'plaintext') {
159161
languageCount.set(language, (languageCount.get(language) || 0) + 1)
160162
}
161163
}

0 commit comments

Comments
 (0)