github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scan/flat.go (about) 1 package scan 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers" 5 "github.com/khulnasoft-lab/defsec/pkg/severity" 6 ) 7 8 type FlatResult struct { 9 RuleID string `json:"rule_id"` 10 LongID string `json:"long_id"` 11 RuleSummary string `json:"rule_description"` 12 RuleProvider providers.Provider `json:"rule_provider"` 13 RuleService string `json:"rule_service"` 14 Impact string `json:"impact"` 15 Resolution string `json:"resolution"` 16 Links []string `json:"links"` 17 Description string `json:"description"` 18 RangeAnnotation string `json:"-"` 19 Severity severity.Severity `json:"severity"` 20 Warning bool `json:"warning"` 21 Status Status `json:"status"` 22 Resource string `json:"resource"` 23 Occurrences []Occurrence `json:"occurrences,omitempty"` 24 Location FlatRange `json:"location"` 25 } 26 27 type FlatRange struct { 28 Filename string `json:"filename"` 29 StartLine int `json:"start_line"` 30 EndLine int `json:"end_line"` 31 } 32 33 func (r Results) Flatten() []FlatResult { 34 var results []FlatResult 35 for _, original := range r { 36 results = append(results, original.Flatten()) 37 } 38 return results 39 } 40 41 func (r *Result) Flatten() FlatResult { 42 rng := r.metadata.Range() 43 44 resMetadata := r.metadata 45 46 for resMetadata.Parent() != nil { 47 resMetadata = *resMetadata.Parent() 48 } 49 50 return FlatResult{ 51 RuleID: r.rule.AVDID, 52 LongID: r.Rule().LongID(), 53 RuleSummary: r.rule.Summary, 54 RuleProvider: r.rule.Provider, 55 RuleService: r.rule.Service, 56 Impact: r.rule.Impact, 57 Resolution: r.rule.Resolution, 58 Links: r.rule.Links, 59 Description: r.Description(), 60 RangeAnnotation: r.Annotation(), 61 Severity: r.rule.Severity, 62 Status: r.status, 63 Resource: resMetadata.Reference(), 64 Occurrences: r.Occurrences(), 65 Warning: r.IsWarning(), 66 Location: FlatRange{ 67 Filename: rng.GetFilename(), 68 StartLine: rng.GetStartLine(), 69 EndLine: rng.GetEndLine(), 70 }, 71 } 72 }