@@ -95,6 +95,7 @@ import { decryptResponse, encryptRequest } from '../encryption'
95
95
import { getCursorState } from '../utils'
96
96
import { focusAmazonQPanel } from './commands'
97
97
import { ChatMessage } from '@aws/language-server-runtimes/server-interface'
98
+ import { CommentUtils } from 'aws-core-vscode/utils'
98
99
99
100
export function registerActiveEditorChangeListener ( languageClient : LanguageClient ) {
100
101
let debounceTimer : NodeJS . Timeout | undefined
@@ -701,7 +702,7 @@ async function handleCompleteResult<T extends ChatResult>(
701
702
) {
702
703
const decryptedMessage = await decryptResponse < T > ( result , encryptionKey )
703
704
704
- handleSecurityFindings ( decryptedMessage , languageClient )
705
+ await handleSecurityFindings ( decryptedMessage , languageClient )
705
706
706
707
void provider . webview ?. postMessage ( {
707
708
command : chatRequestType . method ,
@@ -716,10 +717,10 @@ async function handleCompleteResult<T extends ChatResult>(
716
717
disposable . dispose ( )
717
718
}
718
719
719
- function handleSecurityFindings (
720
+ async function handleSecurityFindings (
720
721
decryptedMessage : { additionalMessages ?: ChatMessage [ ] } ,
721
722
languageClient : LanguageClient
722
- ) : void {
723
+ ) : Promise < void > {
723
724
if ( decryptedMessage . additionalMessages === undefined || decryptedMessage . additionalMessages . length === 0 ) {
724
725
return
725
726
}
@@ -730,10 +731,18 @@ function handleSecurityFindings(
730
731
try {
731
732
const aggregatedCodeScanIssues : AggregatedCodeScanIssue [ ] = JSON . parse ( message . body )
732
733
for ( const aggregatedCodeScanIssue of aggregatedCodeScanIssues ) {
734
+ const document = await vscode . workspace . openTextDocument ( aggregatedCodeScanIssue . filePath )
733
735
for ( const issue of aggregatedCodeScanIssue . issues ) {
734
- issue . visible = ! CodeWhispererSettings . instance
736
+ const isIssueTitleIgnored = CodeWhispererSettings . instance
735
737
. getIgnoredSecurityIssues ( )
736
738
. includes ( issue . title )
739
+ const isSingleIssueIgnored = CommentUtils . detectCommentAboveLine (
740
+ document ,
741
+ issue . startLine ,
742
+ CodeWhispererConstants . amazonqIgnoreNextLine
743
+ )
744
+
745
+ issue . visible = ! isIssueTitleIgnored && ! isSingleIssueIgnored
737
746
}
738
747
}
739
748
initSecurityScanRender ( aggregatedCodeScanIssues , undefined , CodeAnalysisScope . PROJECT )
0 commit comments