in internal/platform/sarif.go [344:407]
func ProcessSarif(sarifPath, analysisId, reportUrl string, printProblems, codeClimate, codeInsights bool) {
newProblems := 0
s, err := ReadReport(sarifPath)
if err != nil {
log.Fatal(err)
}
var codeClimateIssues = make([]CCIssue, 0)
var codeInsightIssues = make([]bbapi.ReportAnnotation, 0)
rulesDescriptions := make(map[string]string)
if printProblems {
msg.EmptyMessage()
}
for _, run := range s.Runs {
for _, r := range run.Results {
ruleId := r.RuleId
message := r.Message.Text
baselineState := baselineStateEmpty
if r.BaselineState != nil {
baselineState = r.BaselineState.(string)
}
if baselineState == baselineStateNew || baselineState == baselineStateEmpty {
newProblems++
}
if len(r.Locations) > 0 && baselineState != baselineStateUnchanged {
if codeClimate {
codeClimateIssues = append(codeClimateIssues, sarifResultToCodeClimate(&r))
}
if codeInsights {
ruleDescription, ok := rulesDescriptions[ruleId]
if !ok {
ruleDescription = getRuleDescription(s, ruleId)
rulesDescriptions[ruleId] = ruleDescription
}
codeInsightIssues = append(codeInsightIssues, buildAnnotation(&r, ruleDescription, reportUrl))
}
if printProblems {
err = printSarifProblem(&r, ruleId, message)
if err != nil {
log.Debugf("Failed to print result: %s", err)
}
}
}
}
}
if codeClimate {
err = writeGlCodeQualityReport(codeClimateIssues, sarifPath)
if err != nil {
log.Warnf("Problems writing GitLab CodeQuality report: %v", err)
}
}
if codeInsights {
err = sendBitBucketReport(codeInsightIssues, s.Runs[0].Tool.Driver.FullName, reportUrl, "qodana-"+analysisId)
if err != nil {
log.Warnf("Problems sending BitBucket Code Insights report: %v", err)
}
}
if !qdenv.IsContainer() {
if newProblems == 0 {
msg.SuccessMessage(msg.GetProblemsFoundMessage(0))
} else {
msg.ErrorMessage(msg.GetProblemsFoundMessage(newProblems))
}
}
}