Skip to content

Commit 64585a6

Browse files
authored
Record SARIF results after security commands to upload for GitHub (#138)
1 parent e2976fb commit 64585a6

23 files changed

+1116
-169
lines changed

commands/audit/audit.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ func (auditCmd *AuditCommand) Run() (err error) {
140140
SetOutputFormat(auditCmd.OutputFormat()).
141141
SetPrintExtendedTable(auditCmd.PrintExtendedTable).
142142
SetExtraMessages(messages).
143-
SetScanType(services.Dependency).
144143
SetSubScansPreformed(auditCmd.ScansToPerform()).
145144
PrintScanResults(); err != nil {
146145
return
@@ -170,7 +169,7 @@ func (auditCmd *AuditCommand) HasViolationContext() bool {
170169
// If the current server is entitled for JAS, the advanced security results will be included in the scan results.
171170
func RunAudit(auditParams *AuditParams) (results *utils.Results, err error) {
172171
// Initialize Results struct
173-
results = utils.NewAuditResults()
172+
results = utils.NewAuditResults(utils.SourceCode)
174173
serverDetails, err := auditParams.ServerDetails()
175174
if err != nil {
176175
return

commands/curation/curationaudit.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7+
"net/http"
8+
"os"
9+
"path/filepath"
10+
"regexp"
11+
"sort"
12+
"strings"
13+
"sync"
14+
715
"golang.org/x/exp/maps"
816

917
"github.com/jfrog/gofrog/datastructures"
@@ -28,13 +36,6 @@ import (
2836
"github.com/jfrog/jfrog-client-go/utils/log"
2937
xrayClient "github.com/jfrog/jfrog-client-go/xray"
3038
xrayUtils "github.com/jfrog/jfrog-client-go/xray/services/utils"
31-
"net/http"
32-
"os"
33-
"path/filepath"
34-
"regexp"
35-
"sort"
36-
"strings"
37-
"sync"
3839
)
3940

4041
const (

commands/curation/curationaudit_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,14 @@ func Test_convertResultsToSummary(t *testing.T) {
979979
}
980980
for _, tt := range tests {
981981
t.Run(tt.name, func(t *testing.T) {
982-
assert.ElementsMatch(t, tt.expected.Scans, convertResultsToSummary(tt.input).Scans)
982+
summary := convertResultsToSummary(tt.input)
983+
// Sort Blocked base on count (low first) to make the test deterministic
984+
for _, scan := range summary.Scans {
985+
sort.Slice(scan.CuratedPackages.Blocked, func(i, j int) bool {
986+
return len(scan.CuratedPackages.Blocked[i].Packages) < len(scan.CuratedPackages.Blocked[j].Packages)
987+
})
988+
}
989+
assert.Equal(t, tt.expected, summary)
983990
})
984991
}
985992
}

commands/enrich/enrich.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ func (enrichCmd *EnrichCommand) Run() (err error) {
190190
scanErrors = appendErrorSlice(scanErrors, fileProducerErrors)
191191
scanErrors = appendErrorSlice(scanErrors, indexedFileProducerErrors)
192192

193-
scanResults := xrutils.NewAuditResults()
193+
scanResults := xrutils.NewAuditResults(utils.SBOM)
194194
scanResults.XrayVersion = xrayVersion
195195
scanResults.ScaResults = flatResults
196196

commands/scan/buildscan.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (bsc *BuildScanCommand) runBuildScanAndPrintResults(xrayManager *xray.XrayS
149149
XrayDataUrl: buildScanResults.MoreDetailsUrl,
150150
}}
151151

152-
scanResults := utils.NewAuditResults()
152+
scanResults := utils.NewAuditResults(utils.Build)
153153
scanResults.XrayVersion = xrayVersion
154154
scanResults.ScaResults = []*utils.ScaScanResult{{Target: fmt.Sprintf("%s (%s)", params.BuildName, params.BuildNumber), XrayResults: scanResponse}}
155155

@@ -160,7 +160,6 @@ func (bsc *BuildScanCommand) runBuildScanAndPrintResults(xrayManager *xray.XrayS
160160
SetIncludeLicenses(false).
161161
SetIsMultipleRootProject(true).
162162
SetPrintExtendedTable(bsc.printExtendedTable).
163-
SetScanType(services.Binary).
164163
SetExtraMessages(nil)
165164

166165
if bsc.outputFormat != outputFormat.Table {

commands/scan/dockerscan.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,19 @@ func (dsc *DockerScanCommand) Run() (err error) {
9696
err = errorutils.CheckError(e)
9797
}
9898
}()
99-
return dsc.ScanCommand.RunAndRecordResults(func(scanResults *utils.Results) (err error) {
99+
return dsc.ScanCommand.RunAndRecordResults(utils.DockerImage, func(scanResults *utils.Results) (err error) {
100100
if scanResults == nil {
101101
return
102102
}
103+
if scanResults.ScaResults != nil {
104+
for _, result := range scanResults.ScaResults {
105+
result.Name = dsc.imageTag
106+
}
107+
}
103108
dsc.analyticsMetricsService.UpdateGeneralEvent(dsc.analyticsMetricsService.CreateXscAnalyticsGeneralEventFinalizeFromAuditResults(scanResults))
104-
109+
if err = utils.RecordSarifOutput(scanResults); err != nil {
110+
return
111+
}
105112
return utils.RecordSecurityCommandSummary(utils.NewDockerScanSummary(
106113
scanResults,
107114
dsc.ScanCommand.serverDetails,

commands/scan/scan.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,10 @@ func (scanCmd *ScanCommand) indexFile(filePath string) (*xrayUtils.BinaryGraphNo
194194
}
195195

196196
func (scanCmd *ScanCommand) Run() (err error) {
197-
return scanCmd.RunAndRecordResults(func(scanResults *utils.Results) error {
197+
return scanCmd.RunAndRecordResults(utils.Binary, func(scanResults *utils.Results) (err error) {
198+
if err = utils.RecordSarifOutput(scanResults); err != nil {
199+
return
200+
}
198201
return utils.RecordSecurityCommandSummary(utils.NewBinaryScanSummary(
199202
scanResults,
200203
scanCmd.serverDetails,
@@ -204,7 +207,7 @@ func (scanCmd *ScanCommand) Run() (err error) {
204207
})
205208
}
206209

207-
func (scanCmd *ScanCommand) RunAndRecordResults(recordResFunc func(scanResults *utils.Results) error) (err error) {
210+
func (scanCmd *ScanCommand) RunAndRecordResults(cmdType utils.CommandType, recordResFunc func(scanResults *utils.Results) error) (err error) {
208211
defer func() {
209212
if err != nil {
210213
var e *exec.ExitError
@@ -220,7 +223,7 @@ func (scanCmd *ScanCommand) RunAndRecordResults(recordResFunc func(scanResults *
220223
return err
221224
}
222225

223-
scanResults := utils.NewAuditResults()
226+
scanResults := utils.NewAuditResults(cmdType)
224227
scanResults.XrayVersion = xrayVersion
225228
if scanCmd.analyticsMetricsService != nil {
226229
scanResults.MultiScanId = scanCmd.analyticsMetricsService.GetMsi()
@@ -323,15 +326,10 @@ func (scanCmd *ScanCommand) RunAndRecordResults(recordResFunc func(scanResults *
323326
SetIncludeLicenses(scanCmd.includeLicenses).
324327
SetPrintExtendedTable(scanCmd.printExtendedTable).
325328
SetIsMultipleRootProject(scanResults.IsMultipleProject()).
326-
SetScanType(services.Binary).
327329
PrintScanResults(); err != nil {
328330
return
329331
}
330332

331-
if err != nil {
332-
return err
333-
}
334-
335333
if err = recordResFunc(scanResults); err != nil {
336334
return err
337335
}

0 commit comments

Comments
 (0)