@@ -206,6 +206,10 @@ func ScanCmd(c *components.Context) error {
206206 if err != nil {
207207 return err
208208 }
209+ xrayVersion , xscVersion , err := GetJfrogServicesVersion (serverDetails )
210+ if err != nil {
211+ return err
212+ }
209213 var specFile * spec.SpecFiles
210214 if c .IsFlagSet (flags .SpecFlag ) && len (c .GetStringFlagValue (flags .SpecFlag )) > 0 {
211215 specFile , err = pluginsCommon .GetFileSystemSpec (c )
@@ -233,6 +237,8 @@ func ScanCmd(c *components.Context) error {
233237 return err
234238 }
235239 scanCmd := scan .NewScanCommand ().
240+ SetXrayVersion (xrayVersion ).
241+ SetXscVersion (xscVersion ).
236242 SetServerDetails (serverDetails ).
237243 SetThreads (threads ).
238244 SetSpec (specFile ).
@@ -369,7 +375,7 @@ func BuildScan(c *components.Context) error {
369375}
370376
371377func AuditCmd (c * components.Context ) error {
372- auditCmd , err := CreateAuditCmd (c )
378+ xrayVersion , xscVersion , serverDetails , auditCmd , err := CreateAuditCmd (c )
373379 if err != nil {
374380 return err
375381 }
@@ -419,7 +425,7 @@ func AuditCmd(c *components.Context) error {
419425 auditCmd .SetThreads (threads )
420426 err = progressbar .ExecWithProgress (auditCmd )
421427 // Reporting error if Xsc service is enabled
422- reportErrorIfExists (err , auditCmd )
428+ reportErrorIfExists (xrayVersion , xscVersion , serverDetails , err )
423429 return err
424430}
425431
@@ -428,46 +434,42 @@ func shouldAddSubScan(subScan utils.SubScanType, c *components.Context) bool {
428434 (subScan == utils .ContextualAnalysisScan && c .GetBoolFlagValue (flags .Sca ) && ! c .GetBoolFlagValue (flags .WithoutCA )) || (subScan == utils .SecretTokenValidationScan && c .GetBoolFlagValue (flags .Secrets ) && c .GetBoolFlagValue (flags .SecretValidation ))
429435}
430436
431- func reportErrorIfExists (err error , auditCmd * audit. AuditCommand ) {
437+ func reportErrorIfExists (xrayVersion , xscVersion string , serverDetails * coreConfig. ServerDetails , err error ) {
432438 if err == nil || ! usage .ShouldReportUsage () {
433439 return
434440 }
435- var serverDetails * coreConfig.ServerDetails
436- serverDetails , innerError := auditCmd .ServerDetails ()
437- if innerError != nil {
438- log .Debug (fmt .Sprintf ("failed to get server details for error report: %q" , innerError ))
439- return
440- }
441- if reportError := xsc .ReportError (serverDetails , err , "cli" ); reportError != nil {
441+ if reportError := xsc .ReportError (xrayVersion , xscVersion , serverDetails , err , "cli" ); reportError != nil {
442442 log .Debug ("failed to report error log:" + reportError .Error ())
443443 }
444444}
445445
446- func CreateAuditCmd (c * components.Context ) (* audit.AuditCommand , error ) {
446+ func CreateAuditCmd (c * components.Context ) (string , string , * coreConfig. ServerDetails , * audit.AuditCommand , error ) {
447447 auditCmd := audit .NewGenericAuditCommand ()
448448 serverDetails , err := createServerDetailsWithConfigOffer (c )
449449 if err != nil {
450- return nil , err
450+ return "" , "" , nil , nil , err
451451 }
452452 err = validateXrayContext (c , serverDetails )
453453 if err != nil {
454- return nil , err
454+ return "" , "" , nil , nil , err
455+ }
456+ xrayVersion , xscVersion , err := GetJfrogServicesVersion (serverDetails )
457+ if err != nil {
458+ return "" , "" , nil , nil , err
455459 }
456460 format , err := outputFormat .GetOutputFormat (c .GetStringFlagValue (flags .OutputFormat ))
457461 if err != nil {
458- return nil , err
462+ return "" , "" , nil , nil , err
459463 }
460464 minSeverity , err := getMinimumSeverity (c )
461465 if err != nil {
462- return nil , err
466+ return "" , "" , nil , nil , err
463467 }
464468 scansOutputDir , err := getAndValidateOutputDirExistsIfProvided (c )
465469 if err != nil {
466- return nil , err
470+ return "" , "" , nil , nil , err
467471 }
468472
469- auditCmd .SetAnalyticsMetricsService (xsc .NewAnalyticsMetricsService (serverDetails ))
470-
471473 auditCmd .SetTargetRepoPath (addTrailingSlashToRepoPathIfNeeded (c )).
472474 SetProject (getProject (c )).
473475 SetIncludeVulnerabilities (c .GetBoolFlagValue (flags .Vuln ) || shouldIncludeVulnerabilities (c )).
@@ -489,6 +491,8 @@ func CreateAuditCmd(c *components.Context) (*audit.AuditCommand, error) {
489491 auditCmd .SetWorkingDirs (splitByCommaAndTrim (c .GetStringFlagValue (flags .WorkingDirs )))
490492 }
491493 auditCmd .SetServerDetails (serverDetails ).
494+ SetXrayVersion (xrayVersion ).
495+ SetXscVersion (xscVersion ).
492496 SetExcludeTestDependencies (c .GetBoolFlagValue (flags .ExcludeTestDeps )).
493497 SetOutputFormat (format ).
494498 SetUseJas (true ).
@@ -497,7 +501,7 @@ func CreateAuditCmd(c *components.Context) (*audit.AuditCommand, error) {
497501 SetNpmScope (c .GetStringFlagValue (flags .DepType )).
498502 SetPipRequirementsFile (c .GetStringFlagValue (flags .RequirementsFile )).
499503 SetExclusions (pluginsCommon .GetStringsArrFlagValue (c , flags .Exclusions ))
500- return auditCmd , err
504+ return xrayVersion , xscVersion , serverDetails , auditCmd , err
501505}
502506
503507func logNonGenericAuditCommandDeprecation (cmdName string ) {
@@ -513,7 +517,7 @@ func logNonGenericAuditCommandDeprecation(cmdName string) {
513517
514518func AuditSpecificCmd (c * components.Context , technology techutils.Technology ) error {
515519 logNonGenericAuditCommandDeprecation (c .CommandName )
516- auditCmd , err := CreateAuditCmd (c )
520+ xrayVersion , xscVersion , serverDetails , auditCmd , err := CreateAuditCmd (c )
517521 if err != nil {
518522 return err
519523 }
@@ -522,7 +526,7 @@ func AuditSpecificCmd(c *components.Context, technology techutils.Technology) er
522526 err = progressbar .ExecWithProgress (auditCmd )
523527
524528 // Reporting error if Xsc service is enabled
525- reportErrorIfExists (err , auditCmd )
529+ reportErrorIfExists (xrayVersion , xscVersion , serverDetails , err )
526530 return err
527531}
528532
@@ -709,6 +713,10 @@ func DockerScan(c *components.Context, image string) error {
709713 if err != nil {
710714 return err
711715 }
716+ xrayVersion , xscVersion , err := GetJfrogServicesVersion (serverDetails )
717+ if err != nil {
718+ return err
719+ }
712720 containerScanCommand := scan .NewDockerScanCommand ()
713721 format , err := outputFormat .GetOutputFormat (c .GetStringFlagValue (flags .OutputFormat ))
714722 if err != nil {
@@ -721,6 +729,8 @@ func DockerScan(c *components.Context, image string) error {
721729 containerScanCommand .SetImageTag (image ).
722730 SetTargetRepoPath (addTrailingSlashToRepoPathIfNeeded (c )).
723731 SetServerDetails (serverDetails ).
732+ SetXrayVersion (xrayVersion ).
733+ SetXscVersion (xscVersion ).
724734 SetOutputFormat (format ).
725735 SetProject (getProject (c )).
726736 SetIncludeVulnerabilities (c .GetBoolFlagValue (flags .Vuln ) || shouldIncludeVulnerabilities (c )).
@@ -731,10 +741,32 @@ func DockerScan(c *components.Context, image string) error {
731741 SetFixableOnly (c .GetBoolFlagValue (flags .FixableOnly )).
732742 SetMinSeverityFilter (minSeverity ).
733743 SetThreads (threads ).
734- SetAnalyticsMetricsService (xsc .NewAnalyticsMetricsService (serverDetails )).
735744 SetSecretValidation (c .GetBoolFlagValue (flags .SecretValidation ))
736745 if c .GetStringFlagValue (flags .Watches ) != "" {
737746 containerScanCommand .SetWatches (splitByCommaAndTrim (c .GetStringFlagValue (flags .Watches )))
738747 }
739748 return progressbar .ExecWithProgress (containerScanCommand )
740749}
750+
751+ func GetJfrogServicesVersion (serverDetails * coreConfig.ServerDetails ) (xrayVersion , xscVersion string , err error ) {
752+ xrayManager , err := xray .CreateXrayServiceManager (serverDetails )
753+ if err != nil {
754+ return
755+ }
756+ xrayVersion , err = xrayManager .GetVersion ()
757+ if err != nil {
758+ return
759+ }
760+ log .Debug ("Xray version: " + xrayVersion )
761+ xscService , err := xsc .CreateXscService (xrayVersion , serverDetails )
762+ if err != nil {
763+ return
764+ }
765+ xscVersion , e := xscService .GetVersion ()
766+ if e != nil {
767+ log .Debug ("Using Xray: " + e .Error ())
768+ return
769+ }
770+ log .Debug ("XSC version: " + xscVersion )
771+ return
772+ }
0 commit comments