github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/formatters/json.go (about)

     1  package formatters
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/khulnasoft-lab/defsec/pkg/scan"
     7  )
     8  
     9  func outputJSON(b ConfigurableFormatter, results scan.Results) error {
    10  	jsonWriter := json.NewEncoder(b.Writer())
    11  	jsonWriter.SetIndent("", "\t")
    12  	var flatResults = []scan.FlatResult{}
    13  	for _, result := range results {
    14  		switch result.Status() {
    15  		case scan.StatusIgnored:
    16  			if !b.IncludeIgnored() {
    17  				continue
    18  			}
    19  		case scan.StatusPassed:
    20  			if !b.IncludePassed() {
    21  				continue
    22  			}
    23  		}
    24  		flat := result.Flatten()
    25  		flat.Links = b.GetLinks(result)
    26  		flat.Location.Filename = b.Path(result, result.Metadata())
    27  		flatResults = append(flatResults, flat)
    28  	}
    29  	return jsonWriter.Encode(struct {
    30  		Results []scan.FlatResult `json:"results"`
    31  	}{flatResults})
    32  }