in sarif/src/main/java/com/jetbrains/qodana/sarif/baseline/BaselineCalculation.java [48:76]
public void fillBaselineState(SarifReport report, SarifReport baseline) {
List<Run> baselineRunsField = baseline.getRuns();
List<Run> baselineRuns = baselineRunsField != null ? new ArrayList<>(baselineRunsField) : Collections.emptyList();
List<Run> unmatched = new ArrayList<>();
for (Run run : report.getRuns()) {
Optional<Run> first =
baselineRuns.stream().filter((it) -> Objects.equals(getToolName(it), getToolName(run))).findFirst();
if (first.isPresent()) {
Run baselineRun = first.get();
applyBaseline(run, baselineRun);
baselineRuns.remove(baselineRun);
} else {
unmatched.add(run);
}
}
for (int i = 0; i < unmatched.size(); i++) {
Run run = unmatched.get(i);
Run baselineRun = i < baselineRuns.size() ? baselineRuns.get(i) : null;
if (baselineRun == null) {
markRunAsNew(run);
continue;
}
applyBaseline(run, baselineRun);
}
}