From 5e8784f65e0b989d48189c6b0a9b8910f6431d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Peixoto?= Date: Wed, 16 Jun 2021 12:51:26 +0100 Subject: [PATCH] fix(report): relative filepaths in report.json closes #3676 --- pkg/report/commons.go | 13 +++++++++++++ pkg/report/json.go | 25 ++++++++++++++++++++++++- pkg/report/pdf.go | 9 +-------- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/pkg/report/commons.go b/pkg/report/commons.go index 45d0732f701..35196858280 100644 --- a/pkg/report/commons.go +++ b/pkg/report/commons.go @@ -4,6 +4,7 @@ import ( "fmt" "html/template" "os" + "path/filepath" "strings" "time" @@ -62,3 +63,15 @@ func getPlatforms(queries model.VulnerableQuerySlice) string { } return strings.Join(platforms, ", ") } + +func getRelativePath(basePath, filePath string) string { + var rtn string + relativePath, err := filepath.Rel(basePath, filePath) + if err != nil { + log.Error().Msgf("Cannot make %s relative to %s", filePath, basePath) + rtn = filePath + } else { + rtn = relativePath + } + return rtn +} diff --git a/pkg/report/json.go b/pkg/report/json.go index ca717434d81..e3fb3cebcde 100644 --- a/pkg/report/json.go +++ b/pkg/report/json.go @@ -5,6 +5,8 @@ import ( "os" "path/filepath" "strings" + + "github.com/Checkmarx/kics/pkg/model" ) const jsonExtension = ".json" @@ -21,10 +23,31 @@ func PrintJSONReport(path, filename string, body interface{}) error { return err } + var summary model.Summary + result, err := json.Marshal(body) + if err != nil { + return err + } + if err := json.Unmarshal(result, &summary); err != nil { + return err + } + + basePath, err := os.Getwd() + if err != nil { + return err + } + + for i := range summary.Queries { + query := summary.Queries[i] + for j := range query.Files { + query.Files[j].FileName = getRelativePath(basePath, query.Files[j].FileName) + } + } + defer closeFile(fullPath, filename, f) encoder := json.NewEncoder(f) encoder.SetIndent("", "\t") - return encoder.Encode(body) + return encoder.Encode(summary) } diff --git a/pkg/report/pdf.go b/pkg/report/pdf.go index 4dfcbe4787a..7b5607a1984 100644 --- a/pkg/report/pdf.go +++ b/pkg/report/pdf.go @@ -126,15 +126,8 @@ func createResultsTable(m pdf.Maroto, query *model.VulnerableQuery, basePath str } else { m.SetBackgroundColor(color.NewWhite()) } - var filePath string - relativePath, err := filepath.Rel(basePath, query.Files[idx].FileName) - if err != nil { - log.Error().Msgf("Cannot make %s relative to %s", query.Files[idx].FileName, basePath) - filePath = query.Files[idx].FileName - } else { - filePath = relativePath - } + filePath := getRelativePath(basePath, query.Files[idx].FileName) fileLine := fmt.Sprintf("%s:%s", filePath, fmt.Sprint(query.Files[idx].Line)) m.Row(colFive, func() { m.Col(colFullPage, func() {