Skip to content

Commit 1c778ac

Browse files
authored
[Amazon Q Security Scans] Refactoring code to improve the performance (aws#5346)
* Refactoring the code
1 parent 747e806 commit 1c778ac

File tree

2 files changed

+33
-37
lines changed

2 files changed

+33
-37
lines changed

packages/core/src/codewhisperer/service/securityIssueHoverProvider.ts

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,30 @@ export class SecurityIssueHoverProvider extends SecurityIssueProvider implements
2525
): vscode.Hover {
2626
const contents: vscode.MarkdownString[] = []
2727

28-
for (const group of this.issues) {
29-
if (document.fileName !== group.filePath) {
30-
continue
31-
}
32-
33-
for (const issue of group.issues) {
34-
const range = new vscode.Range(issue.startLine, 0, issue.endLine, 0)
35-
if (range.contains(position)) {
36-
contents.push(this._getContent(group.filePath, issue))
37-
telemetry.codewhisperer_codeScanIssueHover.emit({
38-
findingId: issue.findingId,
39-
detectorId: issue.detectorId,
40-
ruleId: issue.ruleId,
41-
includesFix: !!issue.suggestedFixes.length,
42-
credentialStartUrl: AuthUtil.instance.startUrl,
43-
})
44-
TelemetryHelper.instance.sendCodeScanRemediationsEvent(
45-
document.languageId,
46-
'CODESCAN_ISSUE_HOVER',
47-
issue.detectorId,
48-
issue.findingId,
49-
issue.ruleId,
50-
undefined,
51-
undefined,
52-
undefined,
53-
!!issue.suggestedFixes.length
54-
)
55-
}
28+
const fileIssues = this.issues.find((group) => group.filePath === document.fileName)?.issues || []
29+
30+
for (const issue of fileIssues) {
31+
const range = new vscode.Range(issue.startLine, 0, issue.endLine, 0)
32+
if (range.contains(position)) {
33+
contents.push(this._getContent(document.fileName, issue))
34+
telemetry.codewhisperer_codeScanIssueHover.emit({
35+
findingId: issue.findingId,
36+
detectorId: issue.detectorId,
37+
ruleId: issue.ruleId,
38+
includesFix: !!issue.suggestedFixes.length,
39+
credentialStartUrl: AuthUtil.instance.startUrl,
40+
})
41+
TelemetryHelper.instance.sendCodeScanRemediationsEvent(
42+
document.languageId,
43+
'CODESCAN_ISSUE_HOVER',
44+
issue.detectorId,
45+
issue.findingId,
46+
issue.ruleId,
47+
undefined,
48+
undefined,
49+
undefined,
50+
!!issue.suggestedFixes.length
51+
)
5652
}
5753
}
5854

packages/core/src/codewhisperer/service/securityScanHandler.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,17 @@ export function mapToAggregatedList(
118118
scope: CodeWhispererConstants.CodeAnalysisScope
119119
) {
120120
const codeScanIssues: RawCodeScanIssue[] = JSON.parse(json)
121-
const filteredIssues = codeScanIssues.filter((issue) => {
121+
const filteredIssues = codeScanIssues.flatMap((issue) => {
122122
if (scope === CodeWhispererConstants.CodeAnalysisScope.FILE && editor) {
123-
for (let lineNumber = issue.startLine; lineNumber <= issue.endLine; lineNumber++) {
123+
const isValidIssue = issue.codeSnippet.every((codeIssue, index) => {
124+
const lineNumber = issue.startLine + index
124125
const line = editor.document.lineAt(lineNumber - 1)?.text
125-
const codeContent = issue.codeSnippet.find((codeIssue) => codeIssue.number === lineNumber)?.content
126-
if (line !== codeContent) {
127-
return false
128-
}
129-
}
126+
const codeContent = codeIssue.content
127+
return line === codeContent
128+
})
129+
return isValidIssue ? [issue] : []
130130
}
131-
return true
131+
return [issue]
132132
})
133133

134134
filteredIssues.forEach((issue) => {
@@ -306,7 +306,7 @@ export async function uploadArtifactToS3(
306306
`Amazon Q is unable to upload workspace artifacts to Amazon S3 for security scans. For more information, see the Amazon Q documentation or contact your network or organization administrator.`
307307
)
308308
const errorMessage = getTelemetryReasonDesc(error)?.includes(`"PUT" request failed with code "403"`)
309-
? `UploadArtifactToS3Exception: "PUT" request failed with code "403"`
309+
? `"PUT" request failed with code "403"`
310310
: getTelemetryReasonDesc(error) ?? 'Security scan failed.'
311311

312312
throw new UploadArtifactToS3Error(errorMessage)

0 commit comments

Comments
 (0)