From d5a6e4111ad347aa28eabcdaa2f29e09668674c5 Mon Sep 17 00:00:00 2001 From: elsapet Date: Mon, 28 Nov 2022 16:26:01 +0200 Subject: [PATCH] fix(report): fix filename for dataflow report (#171) * fix: fix filename for dataflow report * fix: do not add slash for nil paths --- .../.snapshots/TestReportFlags-report-dataflow | 2 +- ...TestReportFlags-report-dataflow-verified-by | 18 +++++++++--------- .../.snapshots/TestReportFlags-report-policies | 2 +- pkg/report/output/dataflow/dataflow.go | 15 +++++++++++++++ pkg/report/output/policies/policies.go | 10 +--------- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/integration/flags/.snapshots/TestReportFlags-report-dataflow b/integration/flags/.snapshots/TestReportFlags-report-dataflow index fb270e0b0..bfb3d424d 100644 --- a/integration/flags/.snapshots/TestReportFlags-report-dataflow +++ b/integration/flags/.snapshots/TestReportFlags-report-dataflow @@ -1,4 +1,4 @@ -{"data_types":[{"name":"Email Address","detectors":[{"name":"detect_ruby_logger","locations":[{"filename":"main.rb","line_number":1}]},{"name":"ruby","locations":[{"filename":"main.rb","line_number":1}]}]}],"risks":[{"detector_id":"detect_ruby_logger","data_types":[{"name":"Email Address","stored":false,"locations":[{"filename":"main.rb","line_number":1}]}]}],"components":[]} +{"data_types":[{"name":"Email Address","detectors":[{"name":"detect_ruby_logger","locations":[{"filename":"testdata/simple/main.rb","line_number":1}]},{"name":"ruby","locations":[{"filename":"testdata/simple/main.rb","line_number":1}]}]}],"risks":[{"detector_id":"detect_ruby_logger","data_types":[{"name":"Email Address","stored":false,"locations":[{"filename":"testdata/simple/main.rb","line_number":1}]}]}],"components":[]} -- diff --git a/integration/flags/.snapshots/TestReportFlags-report-dataflow-verified-by b/integration/flags/.snapshots/TestReportFlags-report-dataflow-verified-by index e560bc74c..6bd1afdb1 100644 --- a/integration/flags/.snapshots/TestReportFlags-report-dataflow-verified-by +++ b/integration/flags/.snapshots/TestReportFlags-report-dataflow-verified-by @@ -3,7 +3,7 @@ data_types: detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 8 encrypted: true verified_by: @@ -12,19 +12,19 @@ data_types: line_number: 2 - name: ruby locations: - - filename: user.rb + - filename: testdata/verified_by/user.rb line_number: 2 - name: Date of birth detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 6 - name: Email Address detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 5 encrypted: true verified_by: @@ -33,25 +33,25 @@ data_types: line_number: 2 - name: ruby locations: - - filename: user.rb + - filename: testdata/verified_by/user.rb line_number: 2 - name: Firstname detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 3 - name: Lastname detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 4 - name: Physical Address detectors: - name: detect_sql_create_public_table locations: - - filename: schema.sql + - filename: testdata/verified_by/schema.sql line_number: 7 encrypted: true verified_by: @@ -60,7 +60,7 @@ data_types: line_number: 2 - name: ruby locations: - - filename: user.rb + - filename: testdata/verified_by/user.rb line_number: 2 components: [] diff --git a/integration/flags/.snapshots/TestReportFlags-report-policies b/integration/flags/.snapshots/TestReportFlags-report-policies index 5bb3524e8..b2325cab0 100644 --- a/integration/flags/.snapshots/TestReportFlags-report-policies +++ b/integration/flags/.snapshots/TestReportFlags-report-policies @@ -2,7 +2,7 @@ critical: - policy_name: Logger leaking policy_description: Logger leaks detected line_number: 1 - filename: testdata/policiesusers.rb + filename: testdata/policies/users.rb category_group: Personal data parent_line_number: 1 parent_content: logger.info(user.address) diff --git a/pkg/report/output/dataflow/dataflow.go b/pkg/report/output/dataflow/dataflow.go index cf921d9f1..35151a7f2 100644 --- a/pkg/report/output/dataflow/dataflow.go +++ b/pkg/report/output/dataflow/dataflow.go @@ -63,6 +63,9 @@ func GetOutput(input []interface{}, config settings.Config, isInternal bool) (*D return nil, err } + // add full path to filename + castDetection.Source.Filename = getFullFilename(config.Target, castDetection.Source.Filename) + switch detectionType { case detections.TypeSchemaClassified: err = dataTypesHolder.AddSchema(castDetection, nil) @@ -132,3 +135,15 @@ func GetOutput(input []interface{}, config settings.Config, isInternal bool) (*D return dataflow, nil } + +func getFullFilename(path string, filename string) string { + if filename == "." { + return path + } + + if path == "" { + return filename + } + + return path + "/" + filename +} diff --git a/pkg/report/output/policies/policies.go b/pkg/report/output/policies/policies.go index 06b891d7e..3b06e27bf 100644 --- a/pkg/report/output/policies/policies.go +++ b/pkg/report/output/policies/policies.go @@ -85,7 +85,7 @@ func GetOutput(dataflow *dataflow.DataFlow, config settings.Config) (map[string] policyResult := PolicyResult{ PolicyName: policy.Name, PolicyDescription: policy.Description, - Filename: getFullFilename(config.Target, policyOutput.Filename), + Filename: policyOutput.Filename, LineNumber: policyOutput.LineNumber, CategoryGroup: policyOutput.CategoryGroup, ParentLineNumber: policyOutput.ParentLineNumber, @@ -139,14 +139,6 @@ func BuildReportString(policyResults map[string][]PolicyResult, policies map[str return reportStr } -func getFullFilename(path string, filename string) string { - if filename == "." { - return path - } - - return path + filename -} - func writePolicyListToString(reportStr *strings.Builder, policies map[string]*settings.Policy) { // list policies that were run reportStr.WriteString("\nPolicy list: \n\n")