Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,8 @@ class CodeWhispererCodeScanManager(val project: Project) {
codeScanStatus,
codeScanResponseContext.payloadContext.srcPayloadSize.toDouble() ?: 0.0,
connection,
scope
scope,
initiatedByChat
)
)
sendCodeScanTelemetryToServiceAPI(project, language, codeScanResponseContext, scope)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ data class CodeScanTelemetryEvent(
val totalProjectSizeInBytes: Double?,
val connection: ToolkitConnection?,
val codeAnalysisScope: CodeWhispererConstants.CodeAnalysisScope,
val initiatedByChat: Boolean = false,
)

data class CreateUploadUrlServiceInvocationContext(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,18 @@ class CodeWhispererTelemetryService {
)
}

private fun mapToTelemetryScope(codeAnalysisScope: CodeWhispererConstants.CodeAnalysisScope, initiatedByChat: Boolean): CodewhispererCodeScanScope =
when (codeAnalysisScope) {
CodeWhispererConstants.CodeAnalysisScope.FILE -> {
if (initiatedByChat) {
CodewhispererCodeScanScope.FILEONDEMAND
} else {
CodewhispererCodeScanScope.FILEAUTO
}
}
CodeWhispererConstants.CodeAnalysisScope.PROJECT -> CodewhispererCodeScanScope.PROJECT
}

fun sendSecurityScanEvent(codeScanEvent: CodeScanTelemetryEvent, project: Project? = null) {
val payloadContext = codeScanEvent.codeScanResponseContext.payloadContext
val serviceInvocationContext = codeScanEvent.codeScanResponseContext.serviceInvocationContext
Expand All @@ -291,8 +303,9 @@ class CodeWhispererTelemetryService {
val issuesWithFixes = codeScanEvent.codeScanResponseContext.codeScanIssuesWithFixes
val reason = codeScanEvent.codeScanResponseContext.reason
val startUrl = getConnectionStartUrl(codeScanEvent.connection)
val codeAnalysisScope = codeScanEvent.codeAnalysisScope
val passive = codeAnalysisScope == CodeWhispererConstants.CodeAnalysisScope.FILE
val codeAnalysisScope = mapToTelemetryScope(codeScanEvent.codeAnalysisScope, codeScanEvent.initiatedByChat)
val passive = codeAnalysisScope == CodewhispererCodeScanScope.FILEAUTO
val source = if (codeScanEvent.initiatedByChat) "chat" else "menu"

LOG.debug {
"Recording code security scan event. \n" +
Expand All @@ -309,8 +322,9 @@ class CodeWhispererTelemetryService {
"Service invocation duration in milliseconds: ${serviceInvocationContext.serviceInvocationDuration}, \n" +
"Total number of lines scanned: ${payloadContext.totalLines}, \n" +
"Reason: $reason \n" +
"Scope: ${codeAnalysisScope.value} \n" +
"Passive: $passive \n"
"Scope: $codeAnalysisScope \n" +
"Passive: $passive \n" +
"Source: $source \n"
}
CodewhispererTelemetry.securityScan(
project = project,
Expand All @@ -330,8 +344,9 @@ class CodeWhispererTelemetryService {
reason = reason,
result = codeScanEvent.result,
credentialStartUrl = startUrl,
codewhispererCodeScanScope = CodewhispererCodeScanScope.from(codeAnalysisScope.value),
passive = passive
codewhispererCodeScanScope = codeAnalysisScope,
passive = passive,
source = source
)
}

Expand Down
Loading