in cdnet/run.go [93:166]
func patchReport(c thirdpartyscan.Context) error {
sarifPath := platform.GetSarifPath(c.ResultsDir())
if err := copyOriginalReportToLog(c.LogDir(), sarifPath); err != nil {
return err
}
finalReport, err := platform.ReadReport(sarifPath)
if err != nil {
return fmt.Errorf("failed to read report: %w", err)
}
for _, run := range finalReport.Runs {
rules := make([]sarif.ReportingDescriptor, 0)
for _, rule := range run.Tool.Driver.Rules {
if rule.FullDescription == nil {
rule.FullDescription = rule.ShortDescription
}
if rule.ShortDescription == nil {
rule.ShortDescription = rule.FullDescription
}
rule.DefaultConfiguration = &sarif.ReportingConfiguration{
Enabled: true,
}
rules = append(rules, rule)
}
run.Tool.Driver.Rules = rules
taxonomy := make([]sarif.ReportingDescriptor, 0)
for _, taxa := range run.Tool.Driver.Taxa {
if taxa.Name == "" {
taxa.Name = taxa.Id
}
taxonomy = append(taxonomy, taxa)
}
run.Tool.Driver.Taxa = taxonomy
results := make([]sarif.Result, 0)
for _, result := range run.Results {
if result.PartialFingerprints != nil {
if cltValue := result.PartialFingerprints[cltFingeprint]; cltValue != "" && result.PartialFingerprints[qodanaFingeprint] == "" {
result.PartialFingerprints[qodanaFingeprint] = cltValue
delete(result.PartialFingerprints, cltFingeprint)
}
}
results = append(results, result)
}
run.Results = results
}
platform.SetVersionControlParams(c, platform.GetDeviceIdSalt()[0], finalReport)
// serialize object skipping empty fields
fatBytes, err := json.MarshalIndent(finalReport, "", " ")
if err != nil {
return fmt.Errorf("error marshalling report: %w", err)
}
f, err := os.Create(sarifPath)
if err != nil {
return fmt.Errorf("error creating resulting SARIF file: %w", err)
}
defer func(f *os.File) {
err := f.Close()
if err != nil {
fmt.Printf("Error closing resulting SARIF file: %s\n", err)
}
}(f)
_, err = f.Write(fatBytes)
if err != nil {
return fmt.Errorf("error writing resulting SARIF file: %w", err)
}
return nil
}