Skip to content

Commit a300611

Browse files
committed
Adding reasonDesc param to telemetry error messages
1 parent 5c3d973 commit a300611

File tree

4 files changed

+34
-26
lines changed

4 files changed

+34
-26
lines changed

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

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,35 @@ package software.aws.toolkits.jetbrains.services.codewhisperer.codescan
55

66
import software.aws.toolkits.resources.message
77

8-
open class CodeWhispererCodeScanException(override val message: String?) : RuntimeException()
8+
open class CodeScanException(override val message: String, open val code: String?) : RuntimeException(message)
99

10-
open class CodeWhispererCodeScanServerException(override val message: String?) : RuntimeException()
10+
open class CodeWhispererCodeScanException(override val message: String, override val code: String?) : CodeScanException(message, code)
11+
12+
open class CodeWhispererCodeScanServerException(override val message: String, override val code: String?) : CodeScanException(message, code)
1113

1214
internal fun noFileOpenError(): Nothing =
13-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.no_file_open"))
15+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.no_file_open"), "NoSourceFilesError")
1416

15-
internal fun codeScanFailed(errorMessage: String): Nothing =
16-
throw Exception(errorMessage)
17+
internal fun codeScanFailed(errorMessage: String, code: String?): Nothing =
18+
throw CodeScanException(errorMessage, code)
1719

1820
internal fun cannotFindFile(errorMessage: String, filepath: String): Nothing =
1921
error(message("codewhisperer.codescan.file_not_found", filepath, errorMessage))
2022

2123
internal fun cannotFindBuildArtifacts(): Nothing =
22-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.build_artifacts_not_found"))
24+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.build_artifacts_not_found"), "NoSourceFilesError")
2325

2426
internal fun fileFormatNotSupported(format: String): Nothing =
25-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_ext_not_supported", format))
27+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_ext_not_supported", format), "FileFormatNotSupportedError")
2628

2729
internal fun fileTooLarge(): Nothing =
28-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_too_large"))
30+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.file_too_large"), "ProjectSizeExceeded")
2931

30-
internal fun codeScanServerException(errorMessage: String): Nothing =
31-
throw CodeWhispererCodeScanServerException(errorMessage)
32+
internal fun codeScanServerException(errorMessage: String, code: String?): Nothing =
33+
throw CodeWhispererCodeScanServerException(errorMessage, code)
3234

3335
internal fun invalidSourceZipError(): Nothing =
34-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.invalid_source_zip_telemetry"))
36+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.invalid_source_zip_telemetry"), "InvalidSourceZip")
3537

3638
internal fun noSupportedFilesError(): Nothing =
37-
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.unsupported_language_error"))
39+
throw CodeWhispererCodeScanException(message("codewhisperer.codescan.unsupported_language_error"), "NoSourceFilesError")

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -282,13 +282,14 @@ class CodeWhispererCodeScanManager(val project: Project) {
282282
isProjectScanInProgress.set(false)
283283
}
284284
val errorMessage = handleError(coroutineContext, e, scope)
285-
codeScanResponseContext = codeScanResponseContext.copy(reason = errorMessage)
286-
} catch (e: Exception) {
285+
codeScanResponseContext = codeScanResponseContext.copy(reasonDesc = errorMessage)
286+
codeScanResponseContext = codeScanResponseContext.copy(reason = "DefaultError")
287+
} catch (e: CodeScanException) {
287288
if (scope == CodeWhispererConstants.CodeAnalysisScope.PROJECT) {
288289
isProjectScanInProgress.set(false)
289290
}
290-
val errorMessage = handleException(coroutineContext, e, scope)
291-
codeScanResponseContext = codeScanResponseContext.copy(reason = errorMessage)
291+
codeScanResponseContext = codeScanResponseContext.copy(reasonDesc = handleException(coroutineContext, e, scope))
292+
codeScanResponseContext = codeScanResponseContext.copy(reason = e.code ?: "DefaultError")
292293
} finally {
293294
// After code scan
294295
afterCodeScan(scope)
@@ -346,8 +347,12 @@ class CodeWhispererCodeScanManager(val project: Project) {
346347
}
347348

348349
private fun getCodeScanServerExceptionMessage(e: CodeWhispererCodeScanServerException): String? =
349-
e.message?.takeIf { it.startsWith("UploadArtifactToS3Exception:") }
350-
?.let { message("codewhisperer.codescan.upload_to_s3_failed") }
350+
e.code?.let {
351+
when (it) {
352+
"UploadArtifactToS3Error" -> message("codewhisperer.codescan.upload_to_s3_failed")
353+
else -> null
354+
}
355+
}
351356

352357
fun handleException(coroutineContext: CoroutineContext, e: Exception, scope: CodeWhispererConstants.CodeAnalysisScope): String {
353358
val errorMessage = when (e) {

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
154154
}
155155
}
156156
val errorMessage = createCodeScanResponse.errorMessage()?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry")
157-
codeScanFailed(errorMessage)
157+
codeScanFailed(errorMessage, "CreateCodeScanFailedError")
158158
}
159159
val jobId = createCodeScanResponse.jobId()
160160
codeScanResponseContext = codeScanResponseContext.copy(codeScanJobId = jobId)
@@ -191,7 +191,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
191191
}
192192
}
193193
val errorMessage = getCodeScanResponse.errorMessage()?.let { it } ?: message("codewhisperer.codescan.run_scan_error_telemetry")
194-
codeScanFailed(errorMessage)
194+
codeScanFailed(errorMessage, "DefaultError")
195195
}
196196
}
197197

@@ -287,7 +287,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
287287
} catch (e: Exception) {
288288
LOG.debug { "Create Upload URL failed: ${e.message}" }
289289
val errorMessage = getTelemetryErrorMessage(e)
290-
throw codeScanServerException("CreateUploadUrlException: $errorMessage")
290+
throw codeScanServerException(errorMessage, "CreateUploadUrlError")
291291
}
292292

293293
private fun getUploadIntent(scope: CodeWhispererConstants.CodeAnalysisScope): UploadIntent = when (scope) {
@@ -321,7 +321,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
321321
} catch (e: Exception) {
322322
LOG.debug { "Artifact failed to upload in the S3 bucket: ${e.message}" }
323323
val errorMessage = getTelemetryErrorMessage(e)
324-
throw codeScanServerException("UploadArtifactToS3Exception: $errorMessage")
324+
throw codeScanServerException(errorMessage, "UploadArtifactToS3Error")
325325
}
326326
}
327327

@@ -344,7 +344,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
344344
} catch (e: Exception) {
345345
LOG.debug { "Creating security scan failed: ${e.message}" }
346346
val errorMessage = getTelemetryErrorMessage(e)
347-
throw codeScanServerException("CreateCodeScanException: $errorMessage")
347+
throw codeScanServerException(errorMessage, "CreateCodeScanError")
348348
}
349349
}
350350

@@ -357,7 +357,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
357357
} catch (e: Exception) {
358358
LOG.debug { "Getting security scan failed: ${e.message}" }
359359
val errorMessage = getTelemetryErrorMessage(e)
360-
throw codeScanServerException("GetCodeScanException: $errorMessage")
360+
throw codeScanServerException(errorMessage, "GetCodeScanError")
361361
}
362362

363363
fun listCodeScanFindings(jobId: String, nextToken: String?): ListCodeScanFindingsResponse = try {
@@ -371,7 +371,7 @@ class CodeWhispererCodeScanSession(val sessionContext: CodeScanSessionContext) {
371371
} catch (e: Exception) {
372372
LOG.debug { "Listing security scan failed: ${e.message}" }
373373
val errorMessage = getTelemetryErrorMessage(e)
374-
throw codeScanServerException("ListCodeScanFindingsException: $errorMessage")
374+
throw codeScanServerException(errorMessage, "ListCodeScanFindingsError")
375375
}
376376

377377
fun mapToCodeScanIssues(recommendations: List<String>): List<CodeWhispererCodeScanIssue> {

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/model/CodeWhispererModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ data class CodeScanResponseContext(
155155
val codeScanJobId: String? = null,
156156
val codeScanTotalIssues: Int = 0,
157157
val codeScanIssuesWithFixes: Int = 0,
158-
val reason: String? = null
158+
val reason: String? = null,
159+
val reasonDesc: String? = null
159160
)
160161

161162
data class LatencyContext(

0 commit comments

Comments
 (0)