use allow_core::{Finding, MatchOutcome, MatchStatus, normalize_path};
pub(crate) fn finding_location_text(finding: &Finding) -> String {
match &finding.span {
Some(span) => format!(
"{}:{}:{}",
normalize_path(&finding.path),
span.line,
span.column
),
None => normalize_path(&finding.path),
}
}
pub(crate) fn explain_report_status(outcomes: &[MatchOutcome]) -> MatchStatus {
for status in [
MatchStatus::New,
MatchStatus::Expired,
MatchStatus::EvidenceMissing,
MatchStatus::MissingRequiredField,
MatchStatus::InvalidSelector,
MatchStatus::Ambiguous,
MatchStatus::BaselineDebt,
MatchStatus::Stale,
MatchStatus::ReviewDue,
] {
if outcomes.iter().any(|outcome| outcome.status == status) {
return status;
}
}
MatchStatus::Matched
}