@@ -23,21 +23,24 @@ import {
23
23
import { TelemetryHelper } from '../util/telemetryHelper'
24
24
import request from '../../common/request'
25
25
import { ZipMetadata } from '../util/zipUtil'
26
+ import { getNullLogger } from '../../shared/logger/logger'
26
27
27
28
export async function listScanResults (
28
29
client : DefaultCodeWhispererClient ,
29
30
jobId : string ,
30
31
codeScanFindingsSchema : string ,
31
- projectPath : string
32
+ projectPath : string ,
33
+ scope : CodeWhispererConstants . CodeAnalysisScope
32
34
) {
35
+ const logger = getLoggerForScope ( scope )
33
36
const codeScanIssueMap : Map < string , RawCodeScanIssue [ ] > = new Map ( )
34
37
const aggregatedCodeScanIssueList : AggregatedCodeScanIssue [ ] = [ ]
35
38
const requester = ( request : codewhispererClient . ListCodeScanFindingsRequest ) => client . listCodeScanFindings ( request )
36
39
const collection = pageableToCollection ( requester , { jobId, codeScanFindingsSchema } , 'nextToken' )
37
40
const issues = await collection
38
41
. flatten ( )
39
42
. map ( resp => {
40
- getLogger ( ) . verbose ( `Request id: ${ resp . $response . requestId } ` )
43
+ logger . verbose ( `Request id: ${ resp . $response . requestId } ` )
41
44
if ( 'codeScanFindings' in resp ) {
42
45
return resp . codeScanFindings
43
46
}
@@ -104,7 +107,8 @@ export async function pollScanJobStatus(
104
107
jobId : string ,
105
108
scope : CodeWhispererConstants . CodeAnalysisScope
106
109
) {
107
- getLogger ( ) . verbose ( `Polling scan job status...` )
110
+ const logger = getLoggerForScope ( scope )
111
+ logger . verbose ( `Polling scan job status...` )
108
112
let status : string = 'Pending'
109
113
let timer : number = 0
110
114
while ( true ) {
@@ -113,11 +117,11 @@ export async function pollScanJobStatus(
113
117
jobId : jobId ,
114
118
}
115
119
const resp = await client . getCodeScan ( req )
116
- getLogger ( ) . verbose ( `Request id: ${ resp . $response . requestId } ` )
120
+ logger . verbose ( `Request id: ${ resp . $response . requestId } ` )
117
121
if ( resp . status !== 'Pending' ) {
118
122
status = resp . status
119
- getLogger ( ) . verbose ( `Scan job status: ${ status } ` )
120
- getLogger ( ) . verbose ( `Complete Polling scan job status.` )
123
+ logger . verbose ( `Scan job status: ${ status } ` )
124
+ logger . verbose ( `Complete Polling scan job status.` )
121
125
break
122
126
}
123
127
throwIfCancelled ( scope )
@@ -128,8 +132,8 @@ export async function pollScanJobStatus(
128
132
? CodeWhispererConstants . codeFileScanJobTimeoutSeconds
129
133
: CodeWhispererConstants . codeScanJobTimeoutSeconds
130
134
if ( timer > timeoutSeconds ) {
131
- getLogger ( ) . verbose ( `Scan job status: ${ status } ` )
132
- getLogger ( ) . verbose ( `Scan job timeout.` )
135
+ logger . verbose ( `Scan job status: ${ status } ` )
136
+ logger . verbose ( `Scan job timeout.` )
133
137
throw new Error ( 'Scan job timeout.' )
134
138
}
135
139
}
@@ -143,7 +147,8 @@ export async function createScanJob(
143
147
scope : CodeWhispererConstants . CodeAnalysisScope ,
144
148
scanName : string
145
149
) {
146
- getLogger ( ) . verbose ( `Creating scan job...` )
150
+ const logger = getLoggerForScope ( scope )
151
+ logger . verbose ( `Creating scan job...` )
147
152
const req : codewhispererClient . CreateCodeScanRequest = {
148
153
artifacts : artifactMap ,
149
154
programmingLanguage : {
@@ -156,7 +161,7 @@ export async function createScanJob(
156
161
getLogger ( ) . error ( `Failed creating scan job. Request id: ${ err . requestId } ` )
157
162
throw err
158
163
} )
159
- getLogger ( ) . verbose ( `Request id: ${ resp . $response . requestId } ` )
164
+ logger . verbose ( `Request id: ${ resp . $response . requestId } ` )
160
165
TelemetryHelper . instance . sendCodeScanEvent ( languageId , resp . $response . requestId )
161
166
return resp
162
167
}
@@ -167,6 +172,7 @@ export async function getPresignedUrlAndUpload(
167
172
scope : CodeWhispererConstants . CodeAnalysisScope ,
168
173
scanName : string
169
174
) {
175
+ const logger = getLoggerForScope ( scope )
170
176
if ( zipMetadata . zipFilePath === '' ) {
171
177
throw new Error ( "Zip failure: can't find valid source zip." )
172
178
}
@@ -180,16 +186,16 @@ export async function getPresignedUrlAndUpload(
180
186
} ,
181
187
} ,
182
188
}
183
- getLogger ( ) . verbose ( `Prepare for uploading src context...` )
189
+ logger . verbose ( `Prepare for uploading src context...` )
184
190
const srcResp = await client . createUploadUrl ( srcReq ) . catch ( err => {
185
191
getLogger ( ) . error ( `Failed getting presigned url for uploading src context. Request id: ${ err . requestId } ` )
186
192
throw err
187
193
} )
188
- getLogger ( ) . verbose ( `Request id: ${ srcResp . $response . requestId } ` )
189
- getLogger ( ) . verbose ( `Complete Getting presigned Url for uploading src context.` )
190
- getLogger ( ) . verbose ( `Uploading src context...` )
191
- await uploadArtifactToS3 ( zipMetadata . zipFilePath , srcResp )
192
- getLogger ( ) . verbose ( `Complete uploading src context.` )
194
+ logger . verbose ( `Request id: ${ srcResp . $response . requestId } ` )
195
+ logger . verbose ( `Complete Getting presigned Url for uploading src context.` )
196
+ logger . verbose ( `Uploading src context...` )
197
+ await uploadArtifactToS3 ( zipMetadata . zipFilePath , srcResp , scope )
198
+ logger . verbose ( `Complete uploading src context.` )
193
199
const artifactMap : ArtifactMap = {
194
200
SourceCode : srcResp . uploadId ,
195
201
}
@@ -226,7 +232,12 @@ export function throwIfCancelled(scope: CodeWhispererConstants.CodeAnalysisScope
226
232
}
227
233
}
228
234
229
- export async function uploadArtifactToS3 ( fileName : string , resp : CreateUploadUrlResponse ) {
235
+ export async function uploadArtifactToS3 (
236
+ fileName : string ,
237
+ resp : CreateUploadUrlResponse ,
238
+ scope : CodeWhispererConstants . CodeAnalysisScope
239
+ ) {
240
+ const logger = getLoggerForScope ( scope )
230
241
const encryptionContext = `{"uploadId":"${ resp . uploadId } "}`
231
242
const headersObj : Record < string , string > = {
232
243
'Content-MD5' : getMd5 ( fileName ) ,
@@ -244,7 +255,7 @@ export async function uploadArtifactToS3(fileName: string, resp: CreateUploadUrl
244
255
body : readFileSync ( fileName ) ,
245
256
headers : resp ?. requestHeaders ?? headersObj ,
246
257
} ) . response
247
- getLogger ( ) . debug ( `StatusCode: ${ response . status } , Text: ${ response . statusText } ` )
258
+ logger . debug ( `StatusCode: ${ response . status } , Text: ${ response . statusText } ` )
248
259
} catch ( error ) {
249
260
getLogger ( ) . error (
250
261
`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.`
@@ -254,3 +265,7 @@ export async function uploadArtifactToS3(fileName: string, resp: CreateUploadUrl
254
265
)
255
266
}
256
267
}
268
+
269
+ export function getLoggerForScope ( scope : CodeWhispererConstants . CodeAnalysisScope ) {
270
+ return scope === CodeWhispererConstants . CodeAnalysisScope . FILE ? getNullLogger ( ) : getLogger ( )
271
+ }
0 commit comments