Skip to content

Commit b08e29e

Browse files
add summaryjson report format (#334)
* add summaryjson report format
1 parent 676a91f commit b08e29e

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

internal/commands/result.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ func NewResultCommand(resultsWrapper wrappers.ResultsWrapper, scanWrapper wrappe
6161
RunE: runGetResultCommand(resultsWrapper, scanWrapper),
6262
}
6363
addScanIDFlag(resultCmd, "ID to report on.")
64-
addResultFormatFlag(resultCmd, util.FormatJSON, util.FormatSummary, util.FormatSummaryConsole, util.FormatSarif)
64+
addResultFormatFlag(resultCmd,
65+
util.FormatJSON, util.FormatSummary, util.FormatSummaryConsole, util.FormatSarif, util.FormatSummaryJSON)
6566
resultCmd.PersistentFlags().String(commonParams.TargetFlag, "cx_result", "Output file")
6667
resultCmd.PersistentFlags().String(commonParams.TargetPathFlag, ".", "Output Path")
6768
resultCmd.PersistentFlags().StringSlice(commonParams.FilterFlag, []string{}, filterResultsListFlagUsage)
@@ -250,6 +251,10 @@ func createReport(
250251
summaryRpt := createTargetName(targetFile, targetPath, "html")
251252
return writeHTMLSummary(summaryRpt, summary)
252253
}
254+
if util.IsFormat(format, util.FormatSummaryJSON) {
255+
summaryRpt := createTargetName(targetFile, targetPath, "json")
256+
return exportJSONSummaryResults(summaryRpt, summary)
257+
}
253258
err := fmt.Errorf("bad report format %s", format)
254259
return err
255260
}
@@ -342,6 +347,23 @@ func exportJSONResults(targetFile string, results *wrappers.ScanResultsCollectio
342347
return nil
343348
}
344349

350+
func exportJSONSummaryResults(targetFile string, results *wrappers.ResultSummary) error {
351+
var err error
352+
var resultsJSON []byte
353+
log.Println("Creating summary JSON Report: ", targetFile)
354+
resultsJSON, err = json.Marshal(results)
355+
if err != nil {
356+
return errors.Wrapf(err, "%s: failed to serialize results response ", failedGettingAll)
357+
}
358+
f, err := os.Create(targetFile)
359+
if err != nil {
360+
return errors.Wrapf(err, "%s: failed to create target file ", failedGettingAll)
361+
}
362+
_, _ = fmt.Fprintln(f, string(resultsJSON))
363+
_ = f.Close()
364+
return nil
365+
}
366+
345367
func convertCxResultsToSarif(results *wrappers.ScanResultsCollection) *wrappers.SarifResultsCollection {
346368
var sarif = new(wrappers.SarifResultsCollection)
347369
sarif.Schema = "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json"

internal/commands/result_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ func TestRunGetResultsByScanIdJsonFormat(t *testing.T) {
3939
os.Remove(fmt.Sprintf("%s.%s", fileName, util.FormatJSON))
4040
}
4141

42+
func TestRunGetResultsByScanIdSummaryJsonFormat(t *testing.T) {
43+
execCmdNilAssertion(t, "result", "--scan-id", "MOCK", "--report-format", "summaryJSON")
44+
45+
// Remove generated json file
46+
os.Remove(fmt.Sprintf("%s.%s", fileName, util.FormatJSON))
47+
}
48+
4249
func TestRunGetResultsByScanIdSummaryHtmlFormat(t *testing.T) {
4350
execCmdNilAssertion(t, "result", "--scan-id", "MOCK", "--report-format", "summaryHTML")
4451

internal/commands/util/printer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const (
1717
FormatSarif = "sarif"
1818
FormatSonar = "sonar"
1919
FormatSummary = "summaryHTML"
20+
FormatSummaryJSON = "summaryJSON"
2021
FormatSummaryConsole = "summaryConsole"
2122
FormatList = "list"
2223
FormatTable = "table"

test/integration/result_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestResultListJson(t *testing.T) {
2828

2929
outputBuffer := executeCmdNilAssertion(t, "Getting results should pass",
3030
"result",
31-
flag(params.TargetFormatFlag), strings.Join([]string{util.FormatJSON, util.FormatSarif, util.FormatSummary, util.FormatSummaryConsole, util.FormatSonar}, ","),
31+
flag(params.TargetFormatFlag), strings.Join([]string{util.FormatJSON, util.FormatSarif, util.FormatSummary, util.FormatSummaryConsole, util.FormatSonar, util.FormatSummaryJSON}, ","),
3232
flag(params.TargetFlag), fileName,
3333
flag(params.ScanIDFlag), scanID,
3434
flag(params.TargetPathFlag), resultsDirectory,

0 commit comments

Comments
 (0)