Skip to content

Commit 3fd4755

Browse files
authored
Merge branch 'main' into transformPupTesting
2 parents ed56178 + 06e8c47 commit 3fd4755

30 files changed

+1112
-1391
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanIssueDetailsPanel.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import com.intellij.ui.components.JBScrollPane
1717
import com.intellij.util.Alarm
1818
import kotlinx.coroutines.CoroutineScope
1919
import kotlinx.coroutines.launch
20+
import software.aws.toolkits.core.utils.getLogger
21+
import software.aws.toolkits.core.utils.warn
2022
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.context.CodeScanIssueDetailsDisplayType
2123
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.additionBackgroundColor
2224
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.utils.additionForegroundColor
@@ -55,6 +57,7 @@ import javax.swing.ScrollPaneConstants
5557
import javax.swing.event.HyperlinkEvent
5658
import javax.swing.text.html.HTMLEditorKit
5759

60+
private val logger = getLogger<CodeWhispererCodeScanIssueDetailsPanel>()
5861
internal class CodeWhispererCodeScanIssueDetailsPanel(
5962
private val project: Project,
6063
issue: CodeWhispererCodeScanIssue,
@@ -66,6 +69,10 @@ internal class CodeWhispererCodeScanIssueDetailsPanel(
6669
private val codeScanManager = CodeWhispererCodeScanManager.getInstance(project)
6770

6871
private suspend fun handleGenerateFix(issue: CodeWhispererCodeScanIssue, isRegenerate: Boolean = false) {
72+
if (issue.ruleId == "sbom-software-assurance-services") {
73+
logger.warn { "GenerateFix is not available for SAS findings." }
74+
return
75+
}
6976
editorPane.text = getCodeScanIssueDetailsHtml(
7077
issue, CodeScanIssueDetailsDisplayType.DetailsPane, CodeWhispererConstants.FixGenerationState.GENERATING,
7178
project = project
@@ -235,6 +242,7 @@ internal class CodeWhispererCodeScanIssueDetailsPanel(
235242
}
236243
private val generateFixButton = JButton(message("codewhisperer.codescan.generate_fix_button_label")).apply {
237244
putClientProperty(DarculaButtonUI.DEFAULT_STYLE_KEY, true)
245+
isEnabled = issue.ruleId != "sbom-software-assurance-services"
238246
addActionListener {
239247
defaultScope.launch {
240248
handleGenerateFix(issue)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ import kotlinx.coroutines.launch
5252
import kotlinx.coroutines.time.withTimeout
5353
import kotlinx.coroutines.withContext
5454
import org.jetbrains.annotations.TestOnly
55-
import software.amazon.awssdk.services.codewhisperer.model.CodeWhispererException
5655
import software.amazon.awssdk.services.codewhispererruntime.model.CodeWhispererRuntimeException
5756
import software.amazon.awssdk.services.codewhispererruntime.model.ThrottlingException
5857
import software.aws.toolkits.core.utils.WaiterTimeoutException
@@ -592,7 +591,7 @@ class CodeWhispererCodeScanManager(val project: Project) {
592591
}
593592
fun handleException(coroutineContext: CoroutineContext, e: Exception, scope: CodeWhispererConstants.CodeAnalysisScope): String {
594593
val errorMessage = when (e) {
595-
is CodeWhispererException -> e.awsErrorDetails().errorMessage() ?: message("codewhisperer.codescan.run_scan_error")
594+
is CodeWhispererRuntimeException -> e.awsErrorDetails().errorMessage() ?: message("codewhisperer.codescan.run_scan_error")
596595
is CodeWhispererCodeScanException -> getCodeScanExceptionMessage(e)
597596
is CodeWhispererCodeScanServerException -> getCodeScanServerExceptionMessage(e)
598597
is WaiterTimeoutException, is TimeoutCancellationException -> message("codewhisperer.codescan.scan_timed_out")
@@ -601,8 +600,8 @@ class CodeWhispererCodeScanManager(val project: Project) {
601600
else -> null
602601
} ?: message("codewhisperer.codescan.run_scan_error")
603602

604-
val errorCode = (e as? CodeWhispererException)?.awsErrorDetails()?.errorCode()
605-
val requestId = if (e is CodeWhispererException) e.requestId() else null
603+
val errorCode = (e as? CodeWhispererRuntimeException)?.awsErrorDetails()?.errorCode()
604+
val requestId = if (e is CodeWhispererRuntimeException) e.requestId() else null
606605

607606
if (!coroutineContext.isActive) {
608607
codeScanResultsPanel.setDefaultUI()
@@ -627,7 +626,7 @@ class CodeWhispererCodeScanManager(val project: Project) {
627626
}
628627

629628
val telemetryErrorMessage = when (e) {
630-
is CodeWhispererException -> e.awsErrorDetails().errorMessage() ?: message("codewhisperer.codescan.run_scan_error_telemetry")
629+
is CodeWhispererRuntimeException -> e.awsErrorDetails().errorMessage() ?: message("codewhisperer.codescan.run_scan_error_telemetry")
631630
is CodeWhispererCodeScanException -> when (e.message) {
632631
message("codewhisperer.codescan.no_file_open") -> message("codewhisperer.codescan.no_file_open_telemetry")
633632
message("codewhisperer.codescan.unsupported_language_error") -> message("codewhisperer.codescan.unsupported_language_error_telemetry")

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanSession.kt

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@ import kotlinx.coroutines.ensureActive
1717
import kotlinx.coroutines.isActive
1818
import kotlinx.coroutines.time.withTimeout
1919
import kotlinx.coroutines.withContext
20-
import software.amazon.awssdk.services.codewhisperer.model.ArtifactType
21-
import software.amazon.awssdk.services.codewhisperer.model.CodeScanFindingsSchema
22-
import software.amazon.awssdk.services.codewhisperer.model.CodeScanStatus
23-
import software.amazon.awssdk.services.codewhisperer.model.CodeWhispererException
24-
import software.amazon.awssdk.services.codewhisperer.model.CreateCodeScanRequest
25-
import software.amazon.awssdk.services.codewhisperer.model.CreateCodeScanResponse
26-
import software.amazon.awssdk.services.codewhisperer.model.GetCodeScanRequest
27-
import software.amazon.awssdk.services.codewhisperer.model.GetCodeScanResponse
28-
import software.amazon.awssdk.services.codewhisperer.model.ListCodeScanFindingsRequest
29-
import software.amazon.awssdk.services.codewhisperer.model.ListCodeScanFindingsResponse
20+
import software.amazon.awssdk.services.codewhispererruntime.model.ArtifactType
21+
import software.amazon.awssdk.services.codewhispererruntime.model.CodeAnalysisFindingsSchema
22+
import software.amazon.awssdk.services.codewhispererruntime.model.CodeAnalysisStatus
23+
import software.amazon.awssdk.services.codewhispererruntime.model.CodeWhispererRuntimeException
3024
import software.amazon.awssdk.services.codewhispererruntime.model.CreateUploadUrlResponse
25+
import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeAnalysisRequest
26+
import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeAnalysisResponse
27+
import software.amazon.awssdk.services.codewhispererruntime.model.ListCodeAnalysisFindingsRequest
28+
import software.amazon.awssdk.services.codewhispererruntime.model.ListCodeAnalysisFindingsResponse
3129
import software.amazon.awssdk.services.codewhispererruntime.model.Reference
30+
import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeAnalysisRequest
31+
import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeAnalysisResponse
3232
import software.aws.toolkits.core.utils.Waiters.waitUntil
3333
import software.aws.toolkits.core.utils.debug
3434
import software.aws.toolkits.core.utils.getLogger
@@ -145,7 +145,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
145145
}
146146
}
147147
var codeScanStatus = createCodeScanResponse.status()
148-
if (codeScanStatus == CodeScanStatus.FAILED) {
148+
if (codeScanStatus == CodeAnalysisStatus.FAILED) {
149149
if (isProjectScope()) {
150150
LOG.debug {
151151
"CodeWhisperer service error occurred. Something went wrong when creating a code review: $createCodeScanResponse " +
@@ -165,7 +165,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
165165

166166
// 5. Keep polling the API GetCodeScan to wait for results for a given timeout period.
167167
waitUntil(
168-
succeedOn = { codeScanStatus == CodeScanStatus.COMPLETED },
168+
succeedOn = { codeScanStatus == CodeAnalysisStatus.COMPLETED },
169169
maxDuration = Duration.ofSeconds(sessionContext.sessionConfig.overallJobTimeoutInSeconds())
170170
) {
171171
currentCoroutineContext.ensureActive()
@@ -182,7 +182,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
182182
}
183183
}
184184
delay(CODE_SCAN_POLLING_INTERVAL_IN_SECONDS * TOTAL_MILLIS_IN_SECOND)
185-
if (codeScanStatus == CodeScanStatus.FAILED) {
185+
if (codeScanStatus == CodeAnalysisStatus.FAILED) {
186186
if (isProjectScope()) {
187187
LOG.debug {
188188
"CodeWhisperer service error occurred. Something went wrong fetching results for code review: $getCodeScanResponse " +
@@ -205,12 +205,12 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
205205
)
206206

207207
val documents = mutableListOf<String>()
208-
documents.add(listCodeScanFindingsResponse.codeScanFindings())
208+
documents.add(listCodeScanFindingsResponse.codeAnalysisFindings())
209209
// coroutineContext helps to actively cancel the bigger projects quickly
210210
withContext(currentCoroutineContext) {
211211
while (listCodeScanFindingsResponse.nextToken() != null && currentCoroutineContext.isActive) {
212212
listCodeScanFindingsResponse = listCodeScanFindings(jobId, listCodeScanFindingsResponse.nextToken())
213-
documents.add(listCodeScanFindingsResponse.codeScanFindings())
213+
documents.add(listCodeScanFindingsResponse.codeAnalysisFindings())
214214
}
215215
}
216216

@@ -224,7 +224,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
224224
codeScanResponseContext = codeScanResponseContext.copy(reason = "Succeeded")
225225
return CodeScanResponse.Success(issues, codeScanResponseContext)
226226
} catch (e: Exception) {
227-
val exception = e as? CodeWhispererException
227+
val exception = e as? CodeWhispererRuntimeException
228228
val awsError = exception?.awsErrorDetails()
229229

230230
if (awsError != null) {
@@ -248,7 +248,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
248248
}
249249
}
250250

251-
fun createCodeScan(language: String, codeScanName: String): CreateCodeScanResponse {
251+
fun createCodeScan(language: String, codeScanName: String): StartCodeAnalysisResponse {
252252
val artifactsMap = mapOf(
253253
ArtifactType.SOURCE_CODE to urlResponse[ArtifactType.SOURCE_CODE]?.uploadId(),
254254
ArtifactType.BUILT_JARS to urlResponse[ArtifactType.BUILT_JARS]?.uploadId()
@@ -262,7 +262,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
262262

263263
try {
264264
return clientAdaptor.createCodeScan(
265-
CreateCodeScanRequest.builder()
265+
StartCodeAnalysisRequest.builder()
266266
.clientToken(clientToken.toString())
267267
.programmingLanguage { it.languageName(language) }
268268
.artifacts(artifactsMap)
@@ -277,9 +277,9 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
277277
}
278278
}
279279

280-
fun getCodeScan(jobId: String): GetCodeScanResponse = try {
280+
fun getCodeScan(jobId: String): GetCodeAnalysisResponse = try {
281281
clientAdaptor.getCodeScan(
282-
GetCodeScanRequest.builder()
282+
GetCodeAnalysisRequest.builder()
283283
.jobId(jobId)
284284
.build()
285285
)
@@ -289,11 +289,11 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
289289
throw codeScanServerException("GetCodeReviewException: $errorMessage")
290290
}
291291

292-
fun listCodeScanFindings(jobId: String, nextToken: String?): ListCodeScanFindingsResponse = try {
292+
fun listCodeScanFindings(jobId: String, nextToken: String?): ListCodeAnalysisFindingsResponse = try {
293293
clientAdaptor.listCodeScanFindings(
294-
ListCodeScanFindingsRequest.builder()
294+
ListCodeAnalysisFindingsRequest.builder()
295295
.jobId(jobId)
296-
.codeScanFindingsSchema(CodeScanFindingsSchema.CODESCAN_FINDINGS_1_0)
296+
.codeAnalysisFindingsSchema(CodeAnalysisFindingsSchema.CODEANALYSIS_FINDINGS_1_0)
297297
.nextToken(nextToken)
298298
.build()
299299
)

0 commit comments

Comments
 (0)