compareFindings static method

int compareFindings(
  1. OkfFinding left,
  2. OkfFinding right
)

The canonical ordering of report findings: path, line, column, ID, severity, message. Findings without a location sort first.

Implementation

static int compareFindings(OkfFinding left, OkfFinding right) {
  var comparison =
      (left.location?.path ?? '').compareTo(right.location?.path ?? '');
  if (comparison != 0) {
    return comparison;
  }
  comparison =
      (left.location?.line ?? 0).compareTo(right.location?.line ?? 0);
  if (comparison != 0) {
    return comparison;
  }
  comparison =
      (left.location?.column ?? 0).compareTo(right.location?.column ?? 0);
  if (comparison != 0) {
    return comparison;
  }
  comparison = left.id.value.compareTo(right.id.value);
  if (comparison != 0) {
    return comparison;
  }
  comparison = left.severity.index.compareTo(right.severity.index);
  return comparison != 0 ? comparison : left.message.compareTo(right.message);
}